SCP策略配置咨询:需阻止S3全操作并排除特定前缀桶
SCP策略配置解决方案
要实现阻止所有S3桶的所有操作,但排除名称前缀为secret-bucket-*的桶,无需依赖标签,直接通过资源名称前缀匹配即可,正确的SCP策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllS3ExceptSecretPrefixBuckets", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::*", "arn:aws:s3:::*/*" ], "Condition": { "StringNotLike": { "aws:ResourceName": [ "arn:aws:s3:::secret-bucket-*", "arn:aws:s3:::secret-bucket-*/*" ] } } } ] }
策略说明
- 资源范围:同时指定桶(
arn:aws:s3:::*)和桶内对象(arn:aws:s3:::*/*),确保覆盖所有S3操作场景 - 条件匹配:通过
StringNotLike和aws:ResourceName条件键,排除资源名称以secret-bucket-开头的桶及其内部对象 - 生效逻辑:当操作的S3资源不属于
secret-bucket-*前缀时,Deny规则触发;符合前缀的资源则不受限制
原标签策略问题说明
你之前尝试的标签策略未生效,主要原因有两点:
- 标签值类型不匹配:
aws:ResourceTag/secret": true中true是布尔值,但S3桶标签值实际为字符串类型,需改为"true"才能匹配 - 依赖前置配置:需要所有
secret-bucket-*前缀的桶都提前打上secret=true的标签,维护成本远高于直接匹配桶前缀的方案
内容的提问来源于stack exchange,提问作者Manish Garotki
相关产品推荐
相关产品推荐

