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

如何配置AWS IAM策略,仅允许开发者管理自身创建的资源?

单AWS账户内实现开发者仅访问自身创建资源的方案

核心逻辑

通过IAM条件策略结合强制资源标签,让Developer组用户只能操作自己创建的资源,同时允许创建任意资源,完全在单个账户内实现,无需AWS Organizations。

第一步:给Developer组绑定核心权限策略

创建以下IAM策略并附加到Developer用户组,该策略实现三个核心功能:

  1. 允许创建任意资源,但强制用户为新资源添加CreatedBy标签,值必须为自身用户名
  2. 允许编辑、查看自己创建的资源——要么资源所有者是当前用户(通过aws:ResourceOwner判断),要么资源带有CreatedBy: 当前用户名标签
  3. 允许管理自身资源的标签
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/CreatedBy": "${aws:username}"
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": "CreatedBy"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "Or": [
                    {"Bool": {"aws:ResourceOwner": "true"}},
                    {"StringEquals": {"aws:ResourceTag/CreatedBy": "${aws:username}"}}
                ]
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "tag:GetResources",
                "tag:TagResources",
                "tag:UntagResources"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/CreatedBy": "${aws:username}"
                }
            }
        }
    ]
}

第二步:处理特殊资源

部分AWS资源(如S3桶、IAM角色)不支持aws:ResourceOwner条件键,此时CreatedBy标签将作为唯一判断依据。由于第一步已强制创建资源时打标签,这类资源的权限控制仍能正常生效。

第三步:隔离共享资源

若账户内存在共享资源,先给这些资源统一添加SharedResource: true标签,再在策略中加入显式拒绝规则,防止开发者操作共享资源:

{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/SharedResource": "true"
        }
    }
}

如果需要让开发者只读访问共享资源,可单独为Developer组附加共享资源的只读策略——注意Deny优先级高于Allow,需先配置拒绝规则再添加只读允许规则。

第四步:验证效果

  • 使用Developer组内的用户A登录,创建EC2实例、S3桶等资源,检查是否自动带有CreatedBy: 用户A标签
  • 尝试访问其他用户创建的资源,确认无法操作
  • 测试共享资源的访问权限,确保符合预期

注意事项

  • IAM用户、组这类账户级资源的创建权限需谨慎配置,避免开发者修改其他用户的配置
  • 定期审计资源标签与IAM策略,确保权限配置符合预期
  • 部分服务(如CloudFormation)可能需要额外调整策略,确保栈内资源能继承CreatedBy标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:50:36