如何允许AWS用户创建不含IAM写入操作的权限策略?
可以实现,以下是具体方案
完全可以通过AWS的IAM权限控制机制实现这个需求——既下放策略/角色创建权限,又严格禁止这些权限包含IAM写入操作。核心思路是用权限边界和条件键限制来双重管控:
1. 用权限边界(Permissions Boundary)锁死最大权限
给需要下放权限的用户/组附加一个权限边界策略,这个策略明确拒绝所有敏感的IAM写入操作。这样不管用户创建什么策略或角色,最终生效的权限都不能突破这个边界——就算用户在自己创建的策略里加了iam:CreatePolicy之类的操作,实际执行时也会被边界拦截。
示例权限边界策略(由管理员创建,用户无法修改):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iam:CreatePolicy", "iam:AttachPolicyRole", "iam:CreateRole", "iam:PutRolePolicy", "iam:AddUserToGroup" // 可根据需求补充其他需要禁止的IAM写入操作 ], "Resource": "*" } ] }
2. 用IAM条件键直接限制用户可创建的策略内容
在给用户的权限策略里,通过iam:PolicyAction条件键,指定用户只能创建包含非IAM写入操作的策略。这样用户在创建策略时,一旦添加了敏感IAM操作,AWS会直接拒绝创建请求。
示例给用户的权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:CreateRole", "iam:AttachRolePolicy" // 允许用户执行的策略/角色创建操作 ], "Resource": "*", "Condition": { "ForAllValues:StringNotLike": { "iam:PolicyAction": [ "iam:CreatePolicy*", "iam:AttachPolicyRole*", "iam:CreateRole*" // 禁止用户创建的策略包含这些IAM操作 ] } } } ] }
额外注意事项
- 权限边界必须由管理员创建并附加,确保用户没有修改或删除边界的权限,否则会被绕过。
- 如果是多账号环境,可结合AWS Organizations的SCP(服务控制策略)做全局限制,进一步降低风险。
- 上线前一定要做测试:用目标用户账号尝试创建包含IAM写入操作的策略,验证是否会被拒绝;同时验证正常的非IAM策略能否创建并生效。
内容的提问来源于stack exchange,提问作者Ian Liu Rodrigues
相关产品推荐
相关产品推荐

