AWS 配置云 watch/trail 以监控 'AccessDenied' 和 'UnauthorizedOperation' 错误
AWS configure cloud watch/trail to monitor for 'AccessDenied' and 'UnauthorizedOperation' errors
我想设置一些监控来捕获我的 AWS 账户中的访问被拒绝和未经授权的操作错误。我想跨不同的 AWS 服务捕获所有这些事件,但 运行 遇到了一些问题。我最初设置了一些触发基本 lambda 函数的云监视规则,但我没有捕获我正在寻找的事件。下面是一些触发 Lambda 函数的规则事件(理想情况下,一旦我开始工作,我会从捕获所有事件中过滤掉这些事件)。
{
"source": ["aws.cloudtrail"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["cloudtrail.amazonaws.com"]
}
}
// All cloud watch
{
"source": [
"aws.cloudwatch"
]
}
我一直在使用 AWS CLI 进行测试,调用我无权访问的资源,例如:
- aws dynamodb 列表
- aws ec2 描述实例
- 列表项
我从 CLI 得到正确的响应错误,但我没有看到这些事件被传播到 Lambda(不过我看到其他非错误触发了 Lambda)。
我是否必须更严格地配置它,或者我是否缺少收集这些错误的步骤?
感谢帮助
aws dynamodb list-tables
、aws ec2 describe-instances
和 List item
不起作用,因为 List*
、Get*
和 Describe*
API 事件是CloudWatch Events 不支持:
如果您想捕获此类事件,则必须通过 CloudWatch Logs 完成。即,将您的 CT trail to push events to CloudWatch Logs. Then, setup a subscription filter 设置为您的 lambda。这将通过 CloudWatch Logs 将所有 API 事件推送到您的 lambda。随后,您将能够检测到事件中的 AccessDenied
错误并执行您需要的其他操作。
其他可能性是在日志上设置 metric filter,以便捕获 AccessDenied
错误以创建 CloudWatch 指标。然后根据指标设置 CloudWatch 警报。这将触发警报,但不会将触发警报的事件的详细信息传递给您的函数。您只会知道发生了访问被拒绝的情况,但没有更多详细信息。
更新
create-table
按预期工作。我在连接到 SQS 进行快速检查的测试中使用了以下规则:
{
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"dynamodb.amazonaws.com"
],
"errorCode": [
"AccessDenied"
]
}
}
我想设置一些监控来捕获我的 AWS 账户中的访问被拒绝和未经授权的操作错误。我想跨不同的 AWS 服务捕获所有这些事件,但 运行 遇到了一些问题。我最初设置了一些触发基本 lambda 函数的云监视规则,但我没有捕获我正在寻找的事件。下面是一些触发 Lambda 函数的规则事件(理想情况下,一旦我开始工作,我会从捕获所有事件中过滤掉这些事件)。
{
"source": ["aws.cloudtrail"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["cloudtrail.amazonaws.com"]
}
}
// All cloud watch
{
"source": [
"aws.cloudwatch"
]
}
我一直在使用 AWS CLI 进行测试,调用我无权访问的资源,例如:
- aws dynamodb 列表
- aws ec2 描述实例
- 列表项
我从 CLI 得到正确的响应错误,但我没有看到这些事件被传播到 Lambda(不过我看到其他非错误触发了 Lambda)。
我是否必须更严格地配置它,或者我是否缺少收集这些错误的步骤?
感谢帮助
aws dynamodb list-tables
、aws ec2 describe-instances
和 List item
不起作用,因为 List*
、Get*
和 Describe*
API 事件是CloudWatch Events 不支持:
如果您想捕获此类事件,则必须通过 CloudWatch Logs 完成。即,将您的 CT trail to push events to CloudWatch Logs. Then, setup a subscription filter 设置为您的 lambda。这将通过 CloudWatch Logs 将所有 API 事件推送到您的 lambda。随后,您将能够检测到事件中的 AccessDenied
错误并执行您需要的其他操作。
其他可能性是在日志上设置 metric filter,以便捕获 AccessDenied
错误以创建 CloudWatch 指标。然后根据指标设置 CloudWatch 警报。这将触发警报,但不会将触发警报的事件的详细信息传递给您的函数。您只会知道发生了访问被拒绝的情况,但没有更多详细信息。
更新
create-table
按预期工作。我在连接到 SQS 进行快速检查的测试中使用了以下规则:
{
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"dynamodb.amazonaws.com"
],
"errorCode": [
"AccessDenied"
]
}
}