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

如何创建AWS IAM策略以基于标签阻止EC2实例创建?现有策略存问题

解决IAM策略无法拒绝创建指定标签EC2实例的问题

你的现有策略存在两个核心问题:

  1. 语法错误:Version字段多了一个单引号、多个语句末尾缺失逗号、ARN中存在多余空格,这些会导致策略解析异常或行为不符合预期。
  2. 逻辑缺陷:aws:ResourceTag仅针对已存在的资源标签生效,而创建EC2实例(ec2:RunInstances)时,实例资源尚未生成,标签是通过请求参数传递的,因此这个条件无法拦截创建操作,只能限制创建后的资源访问。

要直接拒绝创建带有Environment=test标签的EC2实例,需要针对创建操作检查请求中的标签参数,同时修正语法问题,以下是完整的解决方案:

修正后的IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyCreateEc2WithTestTag",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Environment": "test"
                }
            }
        },
        {
            "Sid": "DenyAllActionsOnTestTagInstances",
            "Effect": "Deny",
            "Action": "ec2:*",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "test"
                }
            }
        },
        {
            "Sid": "DenyAddTestTagToEc2",
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Environment": "test"
                }
            }
        }
    ]
}

策略说明

  • 第一个语句:通过aws:RequestTag检查创建实例的请求中是否携带Environment=test标签,直接拒绝ec2:RunInstances操作,从根源阻止带指定标签的实例创建。
  • 第二个语句:保留原有逻辑,拒绝所有针对已存在的Environment=test标签实例的操作,避免用户通过其他方式创建实例后进行操作。
  • 第三个语句:阻止用户给已有EC2实例添加Environment=test标签,彻底封堵绕开规则的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:05:07