如何识别哪个策略/角色授予对S3存储桶的访问权限

问题描述 投票:0回答:1

我有一个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

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

amazon-web-services amazon-s3 amazon-cognito amazon-iam aws-amplify
1个回答
0
投票

使用CloudTrail to log Amazon S3 API Calls

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

  • 阿恩:AWS早已:: 123456789012:用户/爱丽丝
  • 阿尔恩:AWS:STS :: 123456789012:假设角色/ RoleToBeAssumed / MySessionName
© www.soinside.com 2019 - 2024. All rights reserved.