如何解决权限边界导致的访问被拒绝问题?

上次更新日期: 2022 年 3 月 21 日

在尝试访问 AWS 服务时,我收到了访问被拒绝或未授权错误。如何对我的 AWS 账户上的访问被拒绝错误进行故障排除?

简短描述

您可能会收到访问被拒绝或未授权错误,因为您的 AWS Identity and Access Management (IAM) 策略不符合特定条件要求。首先,查看您账户上的任何服务控制策略 (SCPs),然后检查基于资源的策略中是否存在被拒绝。如果这不能解决错误,则问题可能因存在权限边界引起。

权限边界是一项功能,允许您使用托管策略设置基于身份的策略可向 IAM 实体(用户或角色)授予的最大权限。当您为实体设置权限边界时,该实体仅能执行其基于身份的策略和权限边界都允许的操作。

注意: 权限边界设置实体的最大权限,但不授予这些权限。

要对授权错误进行故障排除,请执行这些步骤:

  • 检查您的 IAM 策略是否允许某个操作,但非权限边界不允许该操作
  • 使用 IAM 控制台将所有必需的操作包括在权限边界中
  • 在您的 IAM 策略中使用“iam:PermissionsBoundary”条件键

解决方法

检查您的 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 和 Simple Storage Service (Amazon S3) 服务 但是,由于 Simple Storage Service (Amazon S3) 是 IAM 策略和权限边界中唯一允许的服务,因此用户仅能访问 S3。如果用户尝试访问 Amazon EC2,他们会收到访问被拒绝错误。

要解决此错误,请编辑权限边界并允许访问 Amazon EC2:

“Effect”: “Allow”,
            “Action”: [
                “cloudwatch:*”,
                “s3:*”,
                “ec2:*”
            ],

使用 IAM 控制台将所有必需的操作包括在权限边界中

请按照这些步骤编辑权限边界,以包含用户需要的所有操作:

  1. 打开 IAM console(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::111222333444:user/test1*",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::111222333444:policy/RestrictedRegionPermissionsBoundary"
                }
            }

要在创建新用户时将 IAM 策略 RestrictedRegionPermissionsBoundary 设置为权限边界,请遵循以下步骤:

  1. 打开 IAM console(IAM 控制台)。
  2. 在导航窗格中,选择 Users(用户),然后选择 Add Users(添加用户)。
  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. 查看您的设置并创建用户。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?