1

我正在开发一个从Amazon GuardDuty接收新发现的系统。我们组织中的大多数访问权限都委托给 IAM 角色,而不是直接委托给用户,因此调查结果通常来自假定角色的操作,而 GuardDuty 调查结果的参与者身份如下所示:

  "resource": {
    "accessKeyDetails": {
      "accessKeyId": "ASIALXUWSRBXSAQZECAY",
      "principalId": "AROACDRML13PHK3X7J1UL:129545928468",
      "userName": "my-permitted-role",
      "userType": "AssumedRole"
    },
    "resourceType": "AccessKey"
  },

我知道它accessKeyId是在安全主体执行iam:AssumeRole操作时创建的。但我不知道首先扮演了这个角色!如果是 IAM 用户,我想知道用户名。有没有办法以编程方式将临时 AWS STS 密钥(以ASIA...开头)映射回原始用户?

理想情况下,我正在寻找一种运行时间少于 30 秒的方法,以便我可以将其用作我的安全事件管道的一部分,以利用缺失的信息丰富 GuardDuty 的调查结果。

我已经查看了 aws-cli 并发现aws cloudtrail lookup-events,但它缺乏将查询范围缩小到特定 accessKeyId 的能力,因此需要很长时间才能运行。我已经探索了 CloudTrail 控制台,但它的功能与此处的 aws-cli 差不多。我尝试将 CloudTrail 日志保存到 S3 并运行 Athena 查询,但这也很慢。

这似乎是一个普遍的要求。我有什么明显的遗漏吗?

4

1 回答 1

2

实际上,aws-cli可以对会话执行查找!只需确保ResourceName在查找属性中指定为属性键即可。

$ aws cloudtrail lookup-events \
  --lookup-attributes 'AttributeKey=ResourceName,AttributeValue=ASIALXUWSRBXSAQZECAY' \
  --query 'Events[*].Username'

[
    "the.user@example.com"
]
于 2020-05-30T00:32:38.320 回答