如何确定哪个策略/角色向S3存储桶授予访问权限

时间:2019-02-21 22:09:10

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

我有一个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授予的公共访问权限(推荐):真
  • 阻止新的公共存储桶策略(推荐):正确
  • 如果存储桶具有公共策略,则阻止公共和跨帐户访问(推荐):真

更新,我已将Cloudtrail日志记录添加到了存储桶中。我通过控制台从存储桶中进行的所有下载均记录了eventname ='GetObject'的事件,而通过AWS javascript SDK进行的s3.getObject下载未记录任何事件。我该如何记录这些事件?

1 个答案:

答案 0 :(得分:0)

使用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
相关问题