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

如何编写AWS IAM策略,允许创建S3等资源且仅可删除带指定标签的资源

限制AWS IAM删除权限的两种策略实现

方案1:仅允许删除带有指定标签的资源

该策略允许用户正常创建S3存储桶、子网、Lambda函数,删除操作仅对带有指定标签的资源生效,示例中配置为仅可删除标签ResourceType=ExampleBucket的资源,可根据实际需求修改标签键与值。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateResources",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketTagging",
                "s3:GetBucketTagging",
                "ec2:CreateSubnet",
                "ec2:CreateTags",
                "ec2:DescribeTags",
                "lambda:CreateFunction",
                "lambda:TagResource",
                "lambda:GetFunction"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowDeleteBySpecifiedTag",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucket",
                "ec2:DeleteSubnet",
                "lambda:DeleteFunction"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/ResourceType": "ExampleBucket"
                }
            }
        }
    ]
}

如果不同资源需要匹配不同的指定标签,可拆分AllowDeleteBySpecifiedTag为多个独立Statement,分别配置对应Action和标签条件即可。

方案2:仅允许删除用户自身创建的资源

该策略强制用户创建资源时必须添加CreatedBy标签,值为当前用户名,删除时仅允许删除CreatedBy标签与当前用户名一致的资源,实现只能删除自己创建的资源的限制。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateResourcesWithCreatorTag",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketTagging",
                "s3:GetBucketTagging",
                "ec2:CreateSubnet",
                "ec2:CreateTags",
                "ec2:DescribeTags",
                "lambda:CreateFunction",
                "lambda:TagResource",
                "lambda:GetFunction"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/CreatedBy": "${aws:username}"
                }
            }
        },
        {
            "Sid": "AllowDeleteSelfCreatedResources",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucket",
                "ec2:DeleteSubnet",
                "lambda:DeleteFunction"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/CreatedBy": "${aws:username}"
                }
            }
        }
    ]
}

如果需要避免用户手动填写CreatedBy标签,可搭配AWS Organizations标签策略或者资源创建触发器自动注入标签,无需用户手动操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:06:02