什么是我的 AWS SCP 阻止创建任何 EC2 实例,即使标签键正确?

What is my AWS SCP preventing creation of any EC2 instances even with the correct tag key?

我正在尝试应用阻止创建 EC2 实例的 AWS 服务控制策略,除非在请求中提供了特定标签。

据我所知,为什么以下 SCP 在所有情况下都拒绝创建 EC2 实例(具有 ENI 和 EBS 卷),即使我提供了所需的标签? (仅供参考,我正在从 AWS 控制台创建实例并在请求中添加标签。)没有应用此策略,我能够成功创建实例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireEnvironmentTag",
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:RunInstances"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotEquals": {
          "aws:TagKeys": "sc:environment"
        }
      }
    }
  ]
}

您提供的 SCP Resource 设置为 *,这会阻止创建您的 ENI (network-interface)。

将资源设置为特定 supported resource types defined by Amazon EC2 以解决问题。

例如,下面的 SCP 应该只允许创建标签键为 sc:environment 的 EC2 实例

我还假设您指定 ec2:CreateTags 作为阻止修改标签的操作,因为 ec2:CreateTags 被评估用于修改现有标签以及创建新标签(它们可能应该重命名该操作)。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireEnvironmentTag",
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:RunInstances"
      ]
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "ForAllValues:StringNotEquals": {
          "aws:TagKeys": "sc:environment"
        }
      }
    }
  ]
}