You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过IAM策略强制EC2实例启动时使用指定值的必填标签?

解决EC2实例启动强制标签规则的IAM策略问题

你的当前策略无法生效的核心原因是StringNotEqualsIfExists的逻辑特性:它仅在标签实际存在时才会校验值是否匹配,一旦必填标签缺失,这个条件不会触发拒绝操作,导致实例仍能创建。

要实现「必填标签必须存在+值精确匹配+允许额外标签」的需求,需要调整条件逻辑,同时校验标签的存在性和值的正确性:

修正后的完整IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "Or": [
                    {
                        "Null": {
                            "aws:RequestTag/Environment": true,
                            "aws:RequestTag/Project": true,
                            "aws:RequestTag/Owner": true,
                            "aws:RequestTag/CostCenter": true
                        }
                    },
                    {
                        "StringNotEquals": {
                            "aws:RequestTag/Environment": "Production",
                            "aws:RequestTag/Project": "ProjectX",
                            "aws:RequestTag/Owner": "TeamA",
                            "aws:RequestTag/CostCenter": "CC100"
                        }
                    }
                ]
            }
        }
    ]
}

策略逻辑说明

  • Null条件块:检查四个必填标签是否存在。只要其中任意一个标签未在启动请求中提供,该条件成立,直接拒绝实例启动。
  • StringNotEquals条件块:校验每个必填标签的值是否与预设值完全一致。只要有一个标签值不匹配,该条件成立,拒绝实例启动。
  • Or逻辑组合:将上述两个条件绑定,满足任一情况(标签缺失/值错误)就触发拒绝,确保所有规则被严格执行。
  • 额外标签兼容性:策略仅针对指定的四个标签做校验,启动请求中添加的其他标签不会触发拒绝逻辑,符合你的需求。

内容的提问来源于stack exchange,提问作者shaik moeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:16:06