1

我设置了一个 SNS 通知,以便在 IAM 政策发生变化时向我发送电子邮件。发生更改时,CloudTrail 会向 CloudWatch 发送日志,触发附加到 SNS 主题的警报。此链接中的更多详细信息。

这是我通过邮件收到的示例:

Alarm Details:
- Name:                       PolicyAlarm
- Description:                This alarm is to monitor IAM Changes
- State Change:               INSUFFICIENT_DATA -> ALARM
- Reason for State Change:    Threshold Crossed: 1 datapoint [1.0 (31/08/17 09:15:00)] was greater than or equal to the threshold (1.0).
- Timestamp:                  Thursday 31 August, 2017 09:20:39 UTC
- AWS Account:                00011100000

Threshold:
- The alarm is in the ALARM state when the metric is GreaterThanOrEqualToThreshold 1.0 for 300 seconds.

这里唯一相关的信息是AWS Account ID. 有没有办法也包括变化?谁制作的,何时何地?或者可能从 cloudwatch 日志中发送少量信息,例如"eventName"

4

1 回答 1

3

有两种方法可以触发来自 AWS CloudTrail 的通知:

  1. 配置Amazon CloudWatch Logs以查找特定字符串。找到后,它会增加一个metric。然后,创建一个警报,当指标在特定时间段内超过特定值时触发。发送通知时,仅发送有关警报的信息。或者...

  2. 在Amazon CloudWatch Events中创建规则以查找事件。将 Amazon SNS 主题设置为目标。发送通知时,将传递事件的完整详细信息

你应该使用#2,因为它提供了事件的全部细节。

这是我为测试所做的:

  • 在(所有 IAM 事件发生的地方)创建了一个Amazon SQS 队列us-east-1
  • 创建了一个Amazon CloudWatch Events 规则us-east-1
    • 服务名称: IAM
    • 事件类型:通过 CloudTrail 调用 AWS API
    • 具体操作: PutUserPolicy
  • 编辑了 IAM 政策

没多久,事件就出现在了SQS:

以下是通过的政策的相关部分:

{
  "detail-type": "AWS API Call via CloudTrail",
  "source": "aws.iam",
  "region": "us-east-1",
  "detail": {
    "eventSource": "iam.amazonaws.com",
    "eventName": "PutUserPolicy",
    "awsRegion": "us-east-1",
    "requestParameters": {
      "policyDocument": "{\n    \"Version\": \"2012-10-17\",\n  ...  }",
      "policyName": "my-policy",
      "userName": "my-user"
    },
    "eventType": "AwsApiCall"
  }
}

我将消息发送到 SQS,但您也可以将其发送到 SNS,然后通过电子邮件转发。

于 2017-09-01T01:20:37.887 回答