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 进行测试,调用我无权访问的资源,例如:

我从 CLI 得到正确的响应错误,但我没有看到这些事件被传播到 Lambda(不过我看到其他非错误触发了 Lambda)。

我是否必须更严格地配置它,或者我是否缺少收集这些错误的步骤?

感谢帮助

aws dynamodb list-tablesaws ec2 describe-instancesList 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"
    ]
  }
}