首页 > 解决方案 > 如何为 AssumeRole 事件配置 AWS Cloudwatch 事件(以触发 SNS 通知)

问题描述

我正在尝试为某人担任特定角色时配置 Cloudwatch 事件规则(以触发 SNS 通知):

{
  "detail": {
    "eventName": [
      "AssumeRole"
    ],
    "eventSource": [
      "sts.amazonaws.com"
    ],
    "requestParameters": {
      "roleArn": [
        "arn:aws:iam::0000:role/the_role_name"
      ]
    }
  },
  "detail-type": [
    "AWS API Call via CloudTrail"
  ]
}

0000帐户 ID在哪里,the_role_name是我要提醒的角色。

这无法触发任何通知,但是当我在 Cloudtrail Insights 中搜索事件时:

filter eventName = 'AssumeRole'
| filter requestParameters.roleArn =~ 'the_role_name'
| sort @timestamp desc
| display @timestamp, requestParameters.roleSessionName, eventName, requestParameters.roleArn, userAgent, sourceIPAddress

我确实得到了应该触发规则的结果:

requestParameters.roleSessionName eventName   requestParameters.roleArn
my_username                       AssumeRole  arn:aws:iam::0000:role/the_role_name
...

为了试图简化事情并捕获更广泛的事件,我还尝试了以下规则(它将捕获所有 AssumeRole 事件到任何角色):

{
  "detail": {
    "eventName": [
      "AssumeRole"
    ]
  },
  "detail-type": [
    "AWS API Call via CloudTrail"
  ]
}

该规则也未能触发。

有人对如何配置 Cloudwatch 事件规则以触发AssumeRole事件有任何想法吗?

我通读了这个相关的问题(它试图实现类似的东西),但它没有解决方案:AWS CloudWatch Events trigger SNS on STS roletaking for cross account

标签: amazon-web-servicesamazon-cloudwatchamazon-sns

解决方案


首先通过检查规则的监控指标来确定事件是否被调用。有可能它被触发了,但它无法调用目标。在这种情况下,您应该检查您的 IAM 策略。

如果未触发,则向 Cloudwatch Logs 的跟踪传递可能存在问题。确保您在同一区域中创建了一条跟踪,它将事件传送到 Cloudwatch Logs。

我在 us-east-1 地区有以下规则,效果很好:

{
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "sts.amazonaws.com"
    ],
    "eventName": [
      "AssumeRole"
    ]
  },
  "source": [
    "aws.sts"
  ]
}

推荐阅读