AWS Permission Boundary未对user2生效问题求助及示例政策需求
问题分析与解决方案
你碰到的核心问题是对AWS权限边界的作用范围理解有误:权限边界只约束被绑定的IAM实体(这里是user1)自身的最大权限,不会自动传递给该实体创建的其他用户/角色。
user1的权限边界仅限制user1自己能做什么,但如果user1的权限(包含权限边界允许的范围)涵盖了「创建用户并赋予任意权限」的操作,那他完全可以给user2配置无限制的权限策略——只要user2自己没被绑定权限边界,自然就能执行所有允许的操作。
实现“子用户权限不超父用户”的关键
要达到你预期的效果,需要两步配合:
- 给user1绑定的权限边界,既要限制user1自身的操作范围,也要约束他能给其他IAM实体赋予的权限(通过动作的资源和条件限制)。
- 强制user1在创建user2时,必须给user2绑定相同或更严格的权限边界。
示例权限边界政策
以下是一个实用的示例政策,限制user1仅能管理IAM用户,且只能给用户分配S3只读权限,同时强制新创建的用户必须绑定该边界:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateUser", "iam:GetUser", "iam:ListUsers", "iam:PutUserPolicy", "iam:AttachUserPolicy", "iam:PutPermissionsBoundaryToUser" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::123456789012:policy/UserRestrictedBoundary" }, "StringLike": { "iam:PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"s3:Get*\",\"Resource\":\"*\"}]}" } } }, { "Effect": "Allow", "Action": "s3:Get*", "Resource": "*" } ] }
政策细节说明
- 第一条语句允许user1执行基础IAM用户管理操作,但通过两个条件做了限制:
iam:PermissionsBoundary:强制user1给新创建的用户绑定指定的权限边界ARN(替换为你实际的政策ARN)。iam:PolicyDocument:限制user1给用户添加的内联策略只能是S3只读权限(可根据需求修改策略内容)。
- 第二条语句允许user1自身执行S3只读操作,和他能赋予给其他用户的权限范围保持一致。
额外注意点
- 权限边界是“最大权限”约束,user1的实际有效权限是身份策略与权限边界的交集,要确保user1的身份策略没有超出边界的权限。
- 如果需要更全局的控制,也可以结合IAM Organizations的SCP(服务控制策略),从账号层面限制所有IAM实体的权限范围。
内容的提问来源于stack exchange,提问作者Mark P
相关产品推荐
相关产品推荐

