S3 存储桶策略可以覆盖 IAM 策略吗?
Posted
技术标签:
【中文标题】S3 存储桶策略可以覆盖 IAM 策略吗?【英文标题】:Can S3 bucket-policy override IAM policy? 【发布时间】:2020-08-09 08:40:19 【问题描述】:-
我已经创建了一个 S3 存储桶和一个 EC2 实例。
我已将角色附加到包含
AmazonS3ReadOnlyAccess
策略的 EC2 实例。
使用 EC2 实例中的 AWS CLI 列出我的 S3 存储桶的所有内容
我创建了一个存储桶策略,以防止对该存储桶的任何主体进行任何操作:
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::ananda-demo-bucket-1/",
"Principal": "*"
但是,我仍然可以从我的 EC2 实例中列出我的存储桶的内容。这是否意味着我无法使用自定义存储桶策略覆盖 AWS IAM 策略,或者我创建的存储桶策略有误?
【问题讨论】:
您的Principal
为空。你能显示实际的策略和实例角色吗?
简单规则:如果 IAM 和存储桶策略中的任何内容被拒绝,则它被拒绝。否则,如果其中任何一个允许,则允许。
【参考方案1】:
是的,它确实可以覆盖策略,但仅限于使用拒绝的地方。如果它包含允许但 IAM 策略包含拒绝,则不会评估为允许。
为了让您的策略拒绝 S3 存储桶内的所有操作,存储桶策略中的资源应包括以下内容:
arn:aws:s3:::ananda-demo-bucket-1
arn:aws:s3:::ananda-demo-bucket-1/*
通过使用*
的主体执行此操作,您将拒绝对所有内容的访问,因此您将无法再从任何资源(包括控制台)与此 S3 存储桶进行交互,您之前应该知道这一点做出如此大的改变。尝试限制您拒绝的操作,以便在控制台中仍然可以使用 S3 存储桶的管理。
为了在任何权限评估中概括策略评估逻辑,如果有任何来自以下之一的拒绝,则该操作将被拒绝:
服务控制策略 IAM 边界 资源政策 IAM 政策完整的评估流程如下所示
有关更多信息,请查看 AWS 文档中的 Policy Evaluation Logic 页面。
【讨论】:
【参考方案2】:一些命令在桶级运行,而另一些在对象级运行。
试试这个:
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::ananda-demo-bucket-1",
"arn:aws:s3:::ananda-demo-bucket-1/*",
]
"Principal": "*"
【讨论】:
以上是关于S3 存储桶策略可以覆盖 IAM 策略吗?的主要内容,如果未能解决你的问题,请参考以下文章
允许用户访问特定 S3 存储桶进行备份的 AWS IAM 策略