AWS S3 IAM策略限制特定文件夹访问的问题排查
S3 IAM策略访问问题分析
第一个策略被拒绝的原因
你的第一个策略存在两个关键错误:
- Resource配置错误:
s3:GetObject是对象级操作,对应的Resource必须指向存储桶内的对象(格式为arn:aws:s3:::mybucket/*),而你写的是桶的ARN(arn:aws:s3:::mybucket),桶级ARN仅适用于ListBucket、PutBucket等桶级操作。 - Condition条件错误:
s3:prefix条件是用于ListBucket操作时过滤列出的前缀,GetObject操作需要用s3:key条件来匹配对象的完整键路径。
修正后的第一个策略应该是:
{ "Statement": [ { "Action": [ "s3:GetObject" ], "Condition": { "StringLike": { "s3:key": [ "myfolder/*" ] } }, "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucket/*" ] } ] }
第二个策略能访问notmyfolder的原因
你第二个策略里的Resource写的是arn:aws:s3:::pangea-configuration/myfolder/*,但你的存储桶名为mybucket,这明显是桶名写错了。如果实际存储桶名是pangea-configuration,那能访问notmyfolder下的文件,大概率是因为存在其他允许访问该路径的IAM策略(比如你有管理员权限、或者其他策略允许访问整个存储桶),或者在策略模拟器测试时输入的对象路径有误。
正确的第二个策略应该把桶名修正为mybucket:
{ "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucket/myfolder/*" ] } ] }
这个策略会严格限制仅允许访问mybucket下myfolder内的所有对象,不会允许访问notmyfolder,除非有其他冲突的策略存在。
内容的提问来源于stack exchange,提问作者Jack-of-some
相关产品推荐
相关产品推荐

