如何解决由权限边界引起的访问遭拒问题?
我想对访问 AWS 服务时出现的访问遭拒或未授权错误进行故障排除。
简短描述
当您的策略不符合特定条件要求时,AWS Identity and Access Management (IAM) 会返回访问遭拒或未授权错误。
要解决此问题,请确定导致问题的特定 IAM 用户或 IAM 角色。查看附加到该实体的权限边界。权限边界允许您使用托管策略为 IAM 实体设置最大权限。此功能控制基于身份的策略可以向 IAM 用户或角色授予的最大权限。当您为某个实体设置权限边界时,该实体只能执行两个策略都允许的操作。
**注意:**实体只能执行基于身份的策略和权限边界都允许的操作。
解决方法
如果权限边界未能解决错误,请查看 AWS 账户中的服务控制策略 (SCP)。接下来,检查是否有任何基于资源的策略包含对 IAM 实体的拒绝。
检查是否您的 IAM 策略中允许但权限边界中不允许某项操作
以下示例显示了 IAM 策略中允许但权限边界内不允许的操作。在此示例中,IAM 用户附加了策略 USER_IAM_POLICY:
IAM policy:(USER_IAM_POLICY) “Effect”: “Allow”, “Action”: [ “ec2:*”, “s3:*” ],
此策略允许用户完全访问 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon Simple Storage Service (Amazon S3) 服务。用户还设置了名为 USER_PB_POLICY 的权限边界。
Permissions Boundary:(USER_PB_POLICY) “Effect”: “Allow”, “Action”: [ “cloudwatch:*”, “s3:*” ],
该权限边界设置了用户可执行的最大权限。在此示例中,此权限边界允许完全访问 Amazon CloudWatch 和 Amazon S3 服务。然而,由于 Amazon S3 是 IAM 策略和权限边界中唯一允许的服务,因此用户只能访问 S3。如果用户尝试访问 Amazon EC2,他们会收到访问遭拒错误。
如需解决此错误,请编辑权限边界并允许访问 Amazon EC2:
“Effect”: “Allow”, “Action”: [ “cloudwatch:*”, “s3:*”, “ec2:*” ],
使用 IAM 控制台在权限边界中包括所有必需的操作
要编辑权限边界以包括用户所需的所有操作,请完成以下步骤:
- 打开 IAM 控制台。
- 在导航窗格中,选择 Roles/Users(角色/用户)。
- 选择要编辑的 IAM 实体。
- 在 Permissions boundary(权限边界)部分中,检查您的设置。如果设置了权限边界,这意味着存在权限边界。本部分列出了用作 IAM 实体上权限边界的托管策略的名称。
- 请展开 JSON 策略,并检查权限边界中是否允许您所需的操作。如果权限边界不允许您的操作,请编辑 JSON 策略以允许您的 IAM 实体所需的所有操作。
有关如何修改策略的更多信息,请参阅编辑 IAM 策略。
在您的 IAM 策略中使用 iam:PermissionsBoundary 条件键
将 iam:PermissionsBoundary 条件键添加到您的 IAM 策略中。此条件键检查特定策略是否附加为 IAM 实体上的权限边界。
下列示例显示了一项名为 RestrictedRegionpermissionsBoundary 的 IAM 策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2RestrictRegion", "Effect": “Allow”, "Action": "ec2:*” "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1" ] } } }
请创建一个策略并将其附加到负责创建用户的委派管理员。当您将下列示例策略附加到管理员时,他们只能在将 RestrictedRegionPermissionsBoundary 策略附加到 IAM 用户时创建该用户。如果管理员试图在不附加策略的情况下创建 IAM 用户,则会收到访问遭拒错误。
{ "Sid": "CreateUser", "Effect": "Allow", "Action": [ "iam:CreateUser" ], "Resource": "arn:aws:iam::444455556666:user/test1*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::444455556666:policy/RestrictedRegionPermissionsBoundary" } }
要在创建新用户时将 IAM 策略 RestrictedRegionPermissionsBoundary 设置为权限边界,请完成以下步骤:
- 打开 IAM 控制台。
- 在导航窗格中,选择 Users(用户),然后选择 Add user(添加用户)。
- 输入要编辑的用户名,选择 AWS access type(AWS 访问类型),然后选择 next(下一步)。
- 展开 Set permissions boundary(设置权限边界)部分,然后选择 Use a permissions boundary to control the maximum role permissions(使用权限边界来控制最大角色权限)。
- 在搜索字段中,输入 RestrictedRegionPermissionsBoundary,然后为您的策略选择单选按钮。
- 选择 Next:Tags。
- 查看您的设置并创建用户。
相关信息
- 语言
- 中文 (简体)
