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

为何我的AWS SCP即便提供正确标签也禁止创建EC2实例?

AWS SCP 强制EC2实例标签配置问题排查

核心问题原因

  • 资源范围配置错误

你在策略中将Resource设为*,而ec2:RunInstances操作需要同时校验多种关联资源(AMI、子网、安全组、实例类型、密钥对等)的访问权限,这些非实例、非存储卷、非网络接口的资源访问请求中根本不会携带sc:environment标签,直接触发拒绝条件,导致整个实例创建请求被拦截。

  • 条件操作符逻辑不符合预期

你使用的ForAllValues:StringNotEquals要求请求中所有传入的标签键都必须等于sc:environment才不会触发拒绝,而实际创建场景中你可能会给实例添加多个自定义标签,或者AWS控制台会自动添加内置标签,只要存在任意一个非指定标签就会触发拒绝。

  • 动作范围未做限制

你同时将ec2:CreateTags加入拦截范围且未限定资源类型,创建实例过程中给EBS卷、ENI等附属资源打标签的请求,只要携带非指定标签也会被拦截,中断整个创建流程。

修正后的合规SCP参考

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireEnvironmentTagForNewEC2Instances",
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestTag/sc:environment": ["prod", "test", "dev"]
        }
      }
    },
    {
      "Sid": "PreventModificationOfRequiredEnvironmentTag",
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "sc:environment"
        }
      }
    }
  ]
}

注:上述配置中aws:RequestTag/sc:environment后的取值列表可替换为你实际允许的标签值。

修正说明

  • 仅对EC2实例资源的创建请求做标签校验,不会影响AMI、子网等其他关联资源的正常权限校验
  • 改用aws:RequestTag直接校验请求中是否携带了sc:environment标签及合法值,允许同时添加其他自定义标签
  • 第二条规则为可选配置,用于防止后续用户删除或修改实例上的强制标签,保障标签合规性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:57:02