跳至内容

如何解决由权限边界引起的访问遭拒问题?

2 分钟阅读
0

我想对访问 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 控制台在权限边界中包括所有必需的操作

要编辑权限边界以包括用户所需的所有操作,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择 Roles/Users(角色/用户)。
  3. 选择要编辑的 IAM 实体。
  4. Permissions boundary(权限边界)部分中,检查您的设置。如果设置了权限边界,这意味着存在权限边界。本部分列出了用作 IAM 实体上权限边界的托管策略的名称。
  5. 请展开 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 设置为权限边界,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择 Users(用户),然后选择 Add user(添加用户)。
  3. 输入要编辑的用户名,选择 AWS access type(AWS 访问类型),然后选择 next(下一步)。
  4. 展开 Set permissions boundary(设置权限边界)部分,然后选择 Use a permissions boundary to control the maximum role permissions(使用权限边界来控制最大角色权限)。
  5. 在搜索字段中,输入 RestrictedRegionPermissionsBoundary,然后为您的策略选择单选按钮。
  6. 选择 Next:Tags
  7. 查看您的设置并创建用户。

相关信息

使用边界评估有效权限

AWSSupport-TroubleshootIAMAccessDeniedEvents

AWS 官方已更新 10 个月前