如何解决 AWS Glue 中的 “用户/IAM 角色 X 无权在资源 Z 上执行 Y” 错误?

2 分钟阅读
0

尽管我配置了所需的权限,但我的 AWS Glue 任务因缺乏 AWS Identity and Access Management (IAM) 权限错误而失败。

解决方法

在 AWS Glue 中,您的操作可能会因缺少权限错误而失败,原因如下:

  • 您正在使用的 IAM 用户或角色没有所需的权限。
  • IAM 用户是 AWS Organizations 中某个组织的一部分,该组织具有限制特定操作的服务控制策略(SCP)
  • 使用的子网具有虚拟私有云(VPC)端点,其策略允许或拒绝某些操作。

正在使用的 IAM 用户或角色没有所需的权限

参阅以下缺少权限错误的示例:

"Failed to create job gluestudio-service.us-east-1.amazonaws.com] with exception "errorMessage":"User: arn:aws:sts::<AccountID>:assumed-role/<ConsoleAssumedRole>/<user> is not authorized to perform: iam:PassRole on resource: arn:aws:iam::<AccountID>:role/<GlueRoleName>"

可以将这个错误分解为三个因素:

  • 调用操作的用户/IAM 角色 - arn:aws:iam::111111111111111:role/service-role/AWSGlue-xxxxxx
  • 操作 - iam:PassRole
  • 正在执行操作的资源 - arn:aws:iam::xxxxxxxxxxxxxxxx:role/AWSGlue

检查正在使用的用户或 IAM 角色是否对资源执行了所需的操作。

1.    打开 IAM 控制台

2.    搜索您正在使用的用户或 IAM 角色,然后查看与其关联的策略。在前面的示例中,角色是 arn: aws: iam:: xxxxxxxxx: user/yyyyyyyyy

3.    添加类似于以下内容的内联策略,允许对资源执行所需的操作:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "FirstStatement",
      "Effect": "Allow",
      "Action": ["Action"],
      "Resource": "<ARN of resource>"
    }
  ]
}

:用您先前从错误消息中确定的特定活动和资源替换此示例中的 Action(操作)和 ARN of resource(资源的 ARN)。

使用前面的示例,您的策略如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PassRolePermissions",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::<AccountID>:role/<GlueRoleName>"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": [
            "glue.amazonaws.com"
          ]
        }
      }
    }
  ]
}

组织的 SCP 正在阻止对资源进行操作

您可能会收到类似于以下内容的错误:

"createJob: AccessDeniedException: User: arn:aws:sts::111111111111111:assumed-role/xxxxxxxxxx is not authorized to perform: glue:CreateJob on resource: arn:aws:glue:region:22222222222222:job/glue-job with an explicit deny in a service control policy"

之所以引发此错误,是因为您的 IAM 用户是已建立 SCP 的组织的成员。SCP 阻止您执行特定操作。要检查与您的 SCP 关联的权限,请按照以下步骤操作:

1.    打开 IAM 控制台

2.    选择 Organization Activity(组织活动),然后选择 Attached SCP(附加 SCP)选项卡。

3.    查看附加到您的 IAM 用户的 SCP。确保您拥有对正在使用的资源完成所需操作所需的权限。

使用的子网有一个 VPC 端点,其策略允许或拒绝某些操作

您可能会收到类似于以下内容的错误:

"User: arn:aws:sts::1111111111:assumed-role/xxxxxxxxx/yyyyyyyyyyy is not authorized to perform: glue:CreateJob because no VPC endpoint policy allows the glue:CreateJob action (Service: Glue, Status Code: 400, Request ID:111111111111111)"

要解决此问题,请执行以下步骤:

1.    打开 Amazon Virtual Private Cloud (Amazon VPC) 控制台

2.    选择端点,然后选择连接到您用来完成操作的子网的 VPC 端点。

3.    在 Actions(操作)下方,选择 Manage Policy(管理策略)。

4.    使用对所需资源的所需操作更新 VPC 端点策略。

在此示例中,您更新了添加操作 glue:CreateJob 所需的 VPC 端点策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Principal": "*",
      "Effect": "Allow",
      "Action": [
        "glue:CreateJob"
      ],
      "Resource": "*"
    }
  ]
}

相关信息

为 AWS Glue 创建 IAM 角色

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