如何在AWS成员账户创建S3存储桶时强制要求添加指定标签
SCP强制S3存储桶创建时携带指定标签不生效的修复方案
问题根因
- 你之前的策略存在三处核心配置错误:
- 资源范围配置错误:若配置为对象级ARN
arn:aws:s3:::*/*,无法匹配桶级的创建、打标签操作,导致标签校验条件完全不触发,无标签的桶也能成功创建 - 条件键使用错误:
s3:RequestObjectTagKeys是针对S3对象标签的条件键,桶标签对应的校验键为aws:RequestTag/user,用于判断请求中是否携带指定的user标签 - 操作范围配置错误:
s3:CreateBucket接口本身不支持在请求中直接携带标签,控制台创建时会自动拆分出s3:PutBucketTagging请求,策略需要同时覆盖这两个操作的校验
- 资源范围配置错误:若配置为对象级ARN
- 你之前把资源改为
arn:aws:s3:::*或*时全量拒绝创建,是因为条件键不匹配导致所有请求都无法通过校验,被Deny规则直接拦截
正确的SCP配置示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyS3BucketCreationWithoutUserTag", "Effect": "Deny", "Action": ["s3:CreateBucket", "s3:PutBucketTagging"], "Resource": "arn:aws:s3:::*", "Condition": { "Null": { "aws:RequestTag/user": "true" } } } ] }
验证注意事项
- SCP修改后存在最长10分钟的生效延迟,修改完成后等待5-10分钟再进行测试
- 请确认成员账户的测试身份没有附加
AdministratorAccess等优先级高于SCP的全量允许策略,否则规则会被覆盖 - 控制台创建桶时请直接在创建流程的标签步骤填写
user标签,不要选择创建完成后再补充标签
内容的提问来源于stack exchange,提问作者Nikhil Prabhu
相关产品推荐
相关产品推荐

