跳至內容

在 Quick Suite 中將 Athena 當成資料來源使用時,如何解決發生的 "Access denied" 錯誤?

4 分的閱讀內容
0

我嘗試在 Amazon Quick Suite 帳戶中將 Amazon Athena 當成資料來源時,遇到 "Access denied" 錯誤。

簡短描述

如果在 Amazon Quick Suite 中將 Amazon Athena 當成資料來源時收到 "Access denied" 錯誤訊息,以下是可能的原因:

  • 您的 Quick Suite 帳戶沒有存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體所需的權限。
  • 您的資料檔案已使用 AWS Key Management Service (KMS) 金鑰加密。
  • 您未獲派必要的 AWS Identity and Access Management (IAM) 權限政策。
  • Amazon S3 儲存貯體不存在。或者,用於查詢資料的 IAM 角色沒有所需的 S3 權限。
  • 在使用 AWS Organizations 的 Quick Suite 帳戶中,您未獲派必要的服務控制政策 (SCP)
  • 在使用 Lake Formation 的 Athena 帳戶中,您的 Quick Suite 使用者或群組沒有 AWS Lake Formation 權限。

**注意:**在開始疑難排解之前,請確定您可以存取 Athena 中的資料。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱「對 AWS CLI 錯誤進行疑難排解」。此外,請確定您使用的是最新的 AWS CLI 版本

授與 Quick Suite 存取 S3 儲存貯體的權限

當 Quick Suite 帳戶沒有存取 Amazon S3 儲存貯體所需的權限時,您會收到下列錯誤訊息:

"An error has been thrown from AWS Athena client.Permission denied on S3 path:sourceErrorMessage: s3:/example bucket/object name"

若要解決此錯誤,請取得 Amazon S3 儲存貯體的權限。請完成下列步驟:

  1. 開啟 Quick Suite 主控台
  2. 在應用程式列上選擇您的使用者名稱,然後選擇 Manage Quick Suite (管理 Quick Suite)。
  3. 在導覽窗格的 Permissions (權限) 下方,選擇 AWS resources (AWS 資源)。
  4. 從 AWS 服務清單中選取 Amazon S3
  5. 選擇 Select S3 buckets (選取 S3 儲存貯體),然後選取 S3 儲存貯體。
  6. 選擇 Write permission for Athena Workgroup (Athena 工作群組的寫入權限),然後選擇 Finish (完成)。
  7. 選擇 Save (儲存)。

授與 Quick Suite 存取 KMS 加密資料的權限

如果您的資料檔案已使用 AWS KMS key 加密,Amazon S3 可能會拒絕您存取資料。若要解決此問題,請使用 AWS CLI 或 AWS KMS 主控台,授與 Quick Suite 服務角色存取 AWS KMS key 的權限。

使用 AWS CLI

請完成下列步驟:

  1. 使用 IAM 主控台找到 Quick Sight 服務角色 ARN。

  2. 使用 Amazon S3 主控台找到 AWS KMS key ARN。

  3. 前往包含資料檔案的儲存貯體。

  4. 選擇 Overview (概觀) 索引標籤,然後找到 KMS key ID

  5. 將 Quick Suite 服務角色 ARN 新增到 KMS key 政策。

  6. 執行 create-grant AWS CLI 命令:

    aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt
    

    **注意:**請將 aws_kms_key_arn 替換成 AWS KMS key 的 ARN,並將 quicksight_role_arn 替換成 Quick Suite 服務角色的 ARN。

使用 AWS KMS 主控台

若要將 Quick Suite 服務角色新增到 AWS KMS key 政策,請變更金鑰政策。然後,將下列權限新增到金鑰政策:

{     "Sid": "Allow use of the key",
     "Effect": "Allow",
     "Principal": {
         "AWS": [
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-service-role-v0",
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-s3-consumers-role-v0"
              ]
         },
         "Action": [
            "kms:Decrypt"
               ],
         "Resource": "*"
}

**注意:**在上述政策中,請確定已在 Principal (主體) 區段新增 Quick Suite 服務角色的 ARN。

檢查並更新 IAM 政策指派設定

若要查看哪些政策已指派給您,並確認政策是否限制您存取,請完成下列步驟:

  1. 開啟 Amazon Quick Suite 主控台
  2. 在應用程式列上選擇您的使用者名稱,然後選擇 Manage Quick Suite (管理 Quick Suite)。
  3. 在導覽窗格的 Permissions (權限) 下方,選擇 IAM policy assignments (IAM 政策指派)。
  4. 檢查是否已指派任何存取 Athena 的 IAM 政策。
  5. 確認此政策並未限制您存取 Amazon S3 或 Athena。

如果政策限制您存取 S3 或 Athena,請要求 Quick Suite 管理員變更政策。如果您是管理員,請停用 IAM 政策指派設定,並編輯政策以納入 S3 和 Athena 權限。詳情請參閱「透過 IAM 設定 AWS 服務的精細存取權」。

確認 S3 儲存貯體是否存在且具備正確權限

當 S3 儲存貯體不存在時,您會收到下列錯誤訊息。或者,用於查詢資料的 IAM 角色沒有所需的 S3 權限:

"Unable to verify/create output bucket."

若要解決此錯誤,請參閱 “How do I resolve the "Unable to verify/create output bucket" error in Athena?” (如何解決 Athena 中的 "Unable to verify/create output bucket" 錯誤?)。

如果儲存貯體不存在,請新增有效的 S3 儲存貯體。前往 Quick Suite 主控台,從 AWS 服務清單中選取 Amazon S3。然後,選取用於查詢結果位置的 S3 儲存貯體。

更新服務控制政策 (SCP)

請 Organizations 管理員檢查您的 SCP 設定,確認指派給您的權限。如果您是 Organizations 管理員,請參閱「使用 AWS Organizations 建立組織政策」。

授與 Lake Formation 權限給 Quick Suite 使用者

當您的 Quick Suite 使用者或群組沒有 Lake Formation 權限時,您會收到下列錯誤訊息:

"An error has been thrown from the AWS Athena client.Insufficient permissions to execute the query.Insufficient Lake Formation permission(s)."

若要解決此錯誤,請授與 Lake Formation 權限給 Quick Suite。您必須是 Lake Formation 管理員。

請完成下列步驟:

  1. 找到 Quick Suite 使用者或群組的 ARN。

  2. 執行下列其中一個 AWS CLI 命令:

    describe-user

    aws quicksight describe-user  --user-name user_name  --aws-account-id account_id --namespace default
    

    -或-

    describe-group

    aws quicksight describe-group --group-name group_name  --aws-account-id account_id --namespace default
    

    **注意:**在上述命令中,請將 user_name 替換成您的使用者名稱、將 group_name 替換成您的群組名稱,並將 account_id 替換成您的帳戶 ID。

  3. 開啟 Lake Formation 主控台

  4. 選擇 Tables (資料表)。

  5. 選擇 Actions (動作),然後選擇 Permissions (權限)。

  6. Principals (主體) 清單,選擇 Grant (授與)。

  7. SAML and Amazon Quick Sight users and groups (SAML 和 Amazon Quick Sight 使用者和群組) 下方,輸入 Quick Suite 使用者或群組的 ARN。例如 arn:aws:quicksight:region:accountId:user/namespace/username

  8. 選取正確的資料來源,然後選擇 All tables(全部資料表)。資料表權限為 Select (選取) 和 Describe (描述)。

  9. 選擇 Grant (授與)。

授與權限後,請返回 Quick Suite 主控台,嘗試再次建立資料集。

相關資訊

Insufficient permissions when using Athena with Amazon Quick Suite (將 Athena 與 Amazon Quick Suite 搭配使用時權限不足)

Introducing Amazon Quick Suite fine-grained access control over Amazon S3 and Amazon Athena (隆重推出 Amazon Quick Suite 對 Amazon S3 與 Amazon Athena 的精細存取控制)

Turn on fine-grained permissions for Amazon Quick Suite authors in AWS Lake Formation (在 AWS Lake Formation 中為 Amazon Quick Suite 作者啟用精細權限)