【发布时间】: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