如何配置AWS IAM策略强制私有AMI启动EC2时需设置指定标签
原有策略失效原因
- 资源范围配置错误:
ec2:RunInstances操作关联实例、AMI等多类资源,原有策略仅绑定实例资源ARN,无法读取AMI上下文中的ec2:Owner属性,导致私有AMI所有者匹配逻辑完全失效 - 操作覆盖不全:未包含
ec2:CreateTags操作,若用户启动实例时未同步打标签,原有规则无法拦截 - 标签校验规则写法存在兼容性问题,部分场景下
StringNotEquals搭配?*的存在性校验不生效
修正后可用策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyLaunchPrivateAmiWithoutEnvTag", "Effect": "Deny", "Action": [ "ec2:RunScheduledInstances", "ec2:RunInstances", "ec2:CreateTags" ], "Resource": "*", "Condition": { "Null": { "aws:RequestTag/Env": "true" }, "StringEquals": { "ec2:Owner": [ "account_id_of_private_images" ] } } } ] }
配置说明
- 若需要限制所有非官方/非Marketplace的私有AMI(包括其他账号共享的私有镜像),可将
ec2:Owner的匹配规则改为StringNotEquals,值设置为["amazon", "aws-marketplace"]即可 - 新增其他强制标签时,只需在
Null条件块下新增对应aws:RequestTag/标签键的规则即可 - 请确保该策略的优先级高于其他关联的Allow策略,避免被覆盖失效
内容的提问来源于stack exchange,提问作者Rahul Trivedi
相关产品推荐
相关产品推荐

