如何對 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/yyyyyyyyyyy

3.    新增與下列內容類似的內嵌政策,以允許對資源執行所需的動作:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "FirstStatement",
      "Effect": "Allow",
      "Action": ["Action"],
      "Resource": "<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.    選擇 Endpoints (端點),然後選擇連接到您用來完成動作之子網路的 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 官方已更新 2 年前