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

2 分钟阅读
0

我在尝试访问我的 AWS 服务时收到了访问被拒绝或未经授权错误。如何解决我的 AWS 账户上的访问被拒绝错误?

简短描述

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

权限边界是一项功能,利用它,您能够使用托管式策略设置基于身份的策略可以向 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 和 Amazon S3 服务。然而,由于 Amazon S3 是 IAM 策略和权限边界中唯一允许的服务,因此用户只能访问 S3。如果用户尝试访问 Amazon EC2,他们会收到访问被拒绝错误。

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

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

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

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

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择角色/用户
  3. 选择要编辑的 IAM 实体。
  4. 权限边界部分中,检查您的设置。如果设置了权限边界,这意味着存在权限边界。本节列出了用作 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 控制台
  2. 在导航窗格中,选择用户,然后选择**添加用户 **。
  3. 输入要编辑的用户名,选择 AWS 访问类型,然后选择下一步
  4. 展开设置权限边界部分,然后选择使用权限边界来控制最大角色权限
  5. 在搜索字段中,输入 RestrictedRegionPermissionsBoundary,然后为您的策略选择单选按钮。
  6. 选择 Next:Tags
  7. 查看您的设置并创建用户。

相关信息

IAM 实体的权限边界

使用边界评估有效权限

AWS 官方
AWS 官方已更新 2 年前