如何配置AWS IAM管理员:拥有全权限但不可修改其他管理员
创建受限的IAM管理员(无法修改其他管理员)
要实现这个需求,我们得换个思路——先给用户开全权限,再通过Deny语句精准限制他对其他管理员身份的修改操作。毕竟IAM的权限评估逻辑是先检查Deny,再看Allow,所以Deny会直接覆盖对应的Allow权限。
核心逻辑拆解
- 先授予该用户AWS所有服务的完整操作权限
- 拒绝他执行修改、删除特定管理员资源的操作(比如管理员用户、组、角色、高权限策略)
- 可以通过资源名称前缀、标签等方式精准定位需要保护的管理员资源,避免误限制普通资源
示例策略(直接可用)
假设我们要保护所有名称以Admin-开头的IAM用户、组、角色,以及AWS自带的AdministratorAccess托管策略,你可以用下面这个策略:
{ "Version": "2012-10-17", "Statement": [ // 1. 允许执行所有AWS操作 { "Effect": "Allow", "Action": "*", "Resource": "*" }, // 2. 禁止修改/删除受保护的管理员用户 { "Effect": "Deny", "Action": [ "iam:DeleteUser", "iam:UpdateUser", "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:AttachUserPolicy", "iam:DetachUserPolicy", "iam:PutUserPermissionsBoundary" ], "Resource": "arn:aws:iam::*:user/Admin-*" }, // 3. 禁止修改/删除受保护的管理员组 { "Effect": "Deny", "Action": [ "iam:DeleteGroup", "iam:UpdateGroup", "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:AttachGroupPolicy", "iam:DetachGroupPolicy", "iam:PutGroupPermissionsBoundary" ], "Resource": "arn:aws:iam::*:group/Admin-*" }, // 4. 禁止修改/删除受保护的管理员角色 { "Effect": "Deny", "Action": [ "iam:DeleteRole", "iam:UpdateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary" ], "Resource": "arn:aws:iam::*:role/Admin-*" }, // 5. 禁止修改/删除管理员级托管策略 { "Effect": "Deny", "Action": [ "iam:DeletePolicy", "iam:CreatePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::*:policy/AdministratorAccess" } ] }
自定义调整建议
- 资源匹配方式:如果你的管理员资源不是用
Admin-前缀,可以换成标签匹配(比如给管理员资源加Role=Admin标签,然后在Deny语句里加Condition判断标签) - 操作补充:如果不想让这个用户给管理员创建访问密钥,可以把
iam:CreateAccessKey加入到Deny的Action列表里 - 自我权限限制:要是不想让该用户修改自己的权限,直接在Deny的Resource里加上他自己的ARN就行,比如
arn:aws:iam::123456789012:user/RestrictedAdmin
你原策略的问题
之前的策略用了NotAction: ["iam:*"],这相当于禁止所有IAM相关操作——别说修改其他管理员了,连查看IAM用户列表、创建普通用户都做不了,完全不符合管理员的需求,所以必须换成这种"Allow全权限+Deny特定操作"的模式。
内容的提问来源于stack exchange,提问作者xela
相关产品推荐
相关产品推荐

