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

求可阻止创建无指定后缀资源的AWS IAM策略

正确的AWS IAM策略配置方案

原策略的核心问题

  1. 逻辑完全颠倒:你写的策略是拒绝创建符合命名规范(以-mySuffix结尾)的资源,和需求正好相反。
  2. 条件键错误:*:ResourceArn不是有效的IAM条件键,应该使用全局条件键aws:ResourceArn,或者对应服务的特定条件键。

通用型策略(覆盖多数支持ARN匹配的服务)

这个策略通过匹配资源ARN的结尾,拒绝所有名称不以-mySuffix结尾的资源创建请求:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "*:Create*"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "aws:ResourceArn": "*-mySuffix"
                }
            },
            "Sid": "DenyCreateNonCompliantResources"
        }
    ]
}

注意:部分服务的Create动作不支持aws:ResourceArn条件匹配(比如部分全局服务或特殊资源类型),这时需要补充特定服务的配置。

针对常见服务的精确配置(可靠性更高)

如果通用策略存在覆盖不全的问题,可以针对S3、SQS、DynamoDB等核心服务单独配置,利用服务专属的条件键精准匹配资源名称:

{
    "Version": "2012-10-17",
    "Statement": [
        // S3桶
        {
            "Effect": "Deny",
            "Action": "s3:CreateBucket",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "s3:BucketName": "*-mySuffix"
                }
            },
            "Sid": "DenyCreateNonCompliantS3Bucket"
        },
        // DynamoDB表
        {
            "Effect": "Deny",
            "Action": "dynamodb:CreateTable",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "dynamodb:TableName": "*-mySuffix"
                }
            },
            "Sid": "DenyCreateNonCompliantDynamoDBTable"
        },
        // SQS队列
        {
            "Effect": "Deny",
            "Action": "sqs:CreateQueue",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "sqs:QueueName": "*-mySuffix"
                }
            },
            "Sid": "DenyCreateNonCompliantSQSQueue"
        },
        // EC2实例(通过实例名称标签匹配)
        {
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Name": "*-mySuffix"
                }
            },
            "Sid": "DenyCreateNonCompliantEC2Instance"
        }
    ]
}

说明:

  • EC2实例没有直接的创建时名称参数,需要通过强制Name标签符合规范来实现,同时建议配合标签策略确保标签合规。
  • 可以根据公司实际使用的服务,继续添加对应的条目,每个服务的条件键可参考AWS官方文档中的服务特定条件键列表。

额外注意事项

  • 测试策略:正式应用前,一定要通过IAM Access Analyzer或实际测试验证策略效果,避免误拦截合法请求或漏拦截违规请求。
  • 权限边界:如果使用IAM角色,建议将该策略设置为角色的权限边界,确保即使角色有其他允许权限,也无法绕过命名规范限制。
  • 例外情况:如果有部分资源不需要遵循命名规范,可以在策略中添加NotResource或Condition例外规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:36:16