【问题标题】:How to identify which policy/role is granting access to S3 bucket如何确定哪个策略/角色正在授予对 S3 存储桶的访问权限
【发布时间】:2019-07-15 22:52:08
【问题描述】:

我有一个 Cognito 池/联合身份设置,用户通过 AWS Amplify 接收临时 IAM 凭证。这些用户可以从几个 S3 存储桶访问 getObject,即使:

  • 存储桶已禁用所有公共访问
  • 存储桶策略页面为空白
  • 与这些用户所属的 Cognito 组关联的 IAM 角色(与 cognito-identity.amazonaws.com 的信任关系)没有附加任何授予任何 S3 权限的策略。附加的策略仅适用于 AppSync、Cognito 和 APIGateway

如果我创建一个新存储桶并将 getObject 指向包含的对象,用户会收到 403 Forbidden,这表明某处的某些存储桶特定策略正在授予访问权限。问题是我们有太多的策略和角色,很多都用于生产,所以我不能简单地进行开/关测试来缩小范围。

有没有办法以某种方式跟踪为特定 S3 getObject 请求提供访问权限的策略/角色?

编辑我已经为与 Cognito 组关联的角色运行了 IAM 策略模拟器,它拒绝了相关对象。

我试图正确阻止访问的对象没有为它们设置权限。桶有:

  • 阻止新的公共 ACL 和上传公共对象(推荐):True
  • 删除通过公共 ACL 授予的公共访问权限(推荐):True
  • 阻止新的公共存储桶策略(推荐):True
  • 如果存储桶具有公共策略,则阻止公共和跨账户访问(推荐):True

更新我已将 cloudtrail 日志记录添加到我的存储桶中。虽然我通过控制台从存储桶执行的任何下载都会记录 eventname = 'GetObject' 的事件,但不会记录通过 AWS javascript SDK 下载的 s3.getObject 事件。如何记录这些事件?

【问题讨论】:

  • 我也在想同样的事情!我正在以非常相似的方式使用带有 Amplify 的 S3 存储桶,并且在我的一生中无法追踪这些权限的设置位置。

标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam aws-amplify


【解决方案1】:

使用CloudTrail to log Amazon S3 API Calls

在 CloudTrail 中记录的 S3 操作事件包括有关请求的操作、操作的日期和时间、请求参数和 user identity 的信息,例如:

  • arn:aws:iam::123456789012:user/Alice
  • arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName

【讨论】:

  • 谢谢,但是在记录控制台事件时,没有通过 aws-sdk (javascript) 记录读取事件的事件。有什么建议吗?
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多