如何创建IAM策略实现S3对象的通配符匹配列表访问
S3 IAM策略修正方案
原策略问题
- 未授予
s3:GetObject权限:仅列表操作无法查看对象内容,必须补充该权限才能访问对象。 ListBucket条件逻辑错误:S3列表桶时,s3:prefix用于指定前缀范围,不能直接用它过滤对象名称;需通过s3:object-key条件筛选符合*XYZ*规则的对象。
修正后的IAM策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBucketNavigation", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::myBucket", "Condition": { "StringEquals": { "s3:delimiter": "/", "s3:prefix": [ "", "users/", "users/userA/" ] } } }, { "Sid": "FilterObjectsInUserAPrefix", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::myBucket", "Condition": { "StringLike": { "s3:object-key": "users/userA/*XYZ*" } } }, { "Sid": "AllowGetMatchingObjects", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::myBucket/users/userA/*XYZ*" }, { "Sid": "AllowBucketListAndLocation", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" } ] }
策略说明
- 导航权限:第一个
ListBucket语句允许用户依次访问桶根目录、users/前缀、users/userA/前缀,配合/分隔符实现类目录导航。 - 对象过滤:第二个
ListBucket语句通过s3:object-key条件,仅显示users/userA/前缀下名称包含XYZ的对象。 - 对象访问:
s3:GetObject权限明确限定在users/userA/*XYZ*资源上,确保用户只能获取符合规则的对象内容。
内容的提问来源于stack exchange,提问作者AfterWorkGuinness
相关产品推荐
相关产品推荐

