关于AWS S3 Bucket Policy条件规则的权限范围验证问询
AWS S3 Bucket Policy 含义验证
问题描述
我是AWS S3 Bucket Policy的新手,在S3文档中看到如下Bucket Policy,不确定其含义。请问该策略是否表示:除用户ID为"AROAEXAMPLEID:*"、"AIDAEXAMPLEID"、"111111111111"的主体外,其他所有主体都无法对MyExampleBucket执行任何S3操作(如上传、读取、删除等)?烦请验证。
目标Bucket Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::MyExampleBucket", "arn:aws:s3:::MyExampleBucket/*" ], "Condition": { "StringNotLike": { "aws:userId": [ "AROAEXAMPLEID:*", "AIDAEXAMPLEID", "111111111111" ] } } } ] }
策略含义分析
你的理解基本正确,以下是详细拆解验证:
核心逻辑:这是一条全局拒绝规则,针对所有主体(
Principal: "*"),禁止对MyExampleBucket及其所有对象执行任何S3操作(Action: "s3:*"),仅当请求发起者的aws:userId匹配列表中的任意一项时,拒绝规则才会失效。例外主体说明:
AROAEXAMPLEID:*:AROA开头是IAM角色的唯一标识符,后缀*表示该角色下的所有临时会话(即任何通过该角色调用AssumeRole获取临时凭证的实体)都不受此拒绝规则限制。AIDAEXAMPLEID:AIDA开头是IAM用户的唯一标识符,对应的特定IAM用户可正常操作该桶。111111111111:这是AWS根账户ID,根账户拥有该桶的完全权限,不受此拒绝规则约束。
权限优先级:在AWS IAM模型中,
Deny规则优先级高于所有Allow规则。也就是说,即便其他策略(如IAM用户策略、桶的其他Allow规则)给了某个主体权限,只要该主体的aws:userId不在上述列表中,都会被这条Deny规则拦截,无法执行任何S3操作。
结论
该策略确实实现了:仅允许aws:userId为AROAEXAMPLEID:*、AIDAEXAMPLEID、111111111111的主体对MyExampleBucket执行S3操作,其他所有主体的所有操作都会被拒绝。
内容的提问来源于stack exchange,提问作者user12494839
相关产品推荐
相关产品推荐

