在 Quicksight 中使用 Athena 作为数据源时,如何解决“访问被拒绝”错误?

3 分钟阅读
0

当我尝试使用 Amazon Athena 作为 Amazon QuickSight 账户中的数据源时,出现“访问被拒绝”错误。

简短描述

以下是您在 Amazon QuickSight 中使用 Amazon Athena 作为数据源时出现**“访问被拒绝”**错误的常见原因:

  • 您的 QuickSight 账户没有访问 Amazon Simple Storage Service (Amazon S3) 存储桶所需的权限。
  • 数据文件可能经过 AWS Key Management Service(AWS KMS)密钥进行了加密。
  • 您未分配到必要的 AWS Identity and Access Management (IAM) 权限策略。
  • Amazon S3 存储桶不存在。或者,用于查询数据的 IAM 角色没有所需的 S3 权限。
  • (对于使用 AWS Organizations 的 QuickSight 账户)您未分配到必要的服务控制策略 (SCP)
  • (对于使用 Lake Formation 的 Athena 账户)您的 QuickSight 用户或群组没有 AWS Lake Formation 权限。

**注意:**在开始故障排除之前,请确保您可以在 Athena 中访问数据。

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI

您的 QuickSight 账户没有访问 Amazon S3 存储桶所需的权限

您会收到一条类似于以下内容的错误消息:

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

要获得 S3 存储桶的权限,请完成以下步骤:

  1. 打开 Amazon QuickSight 控制台
  2. 选择**管理 QuickSight **。
  3. 选择安全性和权限
  4. QuickSight 访问 AWS 服务的权限下,选择管理
  5. 从 AWS 服务列表中,选择 Amazon S3
  6. 选择**“选择 S3 存储桶”**,然后选择 S3 存储桶。
  7. 选择 Athena 工作组的写入权限,然后选择完成
  8. 选择保存

您的数据文件已使用 AWS KMS 密钥加密

如果您的数据文件使用 AWS KMS 密钥加密,那么 Amazon S3 可能会拒绝您访问数据。要解决此问题,请使用 AWS CLI 或 AWS KMS 控制台授予 QuickSight 服务角色访问 AWS KMS 密钥的权限。

使用 AWS CLI

完成以下步骤:

  1. 使用 IAM 控制台找到 QuickSight 服务角色 ARN。

  2. 使用 Amazon S3 控制台查找 AWS KMS 密钥 ARN。

  3. 前往包含您的数据文件的存储桶。

  4. 选择概述选项卡,然后找到 KMS 密钥 ID

  5. 将 QuickSight 服务角色 ARN 添加到 KMS 密钥策略中。

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

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

    **注意:**请将 aws_kms_key_arn 替换为 AWS KMS 密钥的 ARN,将 quicksight_role_arn 替换为 QuickSight 服务角色的 ARN 。

使用 AWS KMS 控制台

要将 QuickSight 服务角色添加到 AWS KMS 密钥策略中,请更改密钥策略。然后,向密钥策略添加以下权限:

{     "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": "*"
}

注意:在前面的策略中,请确保在主体部分添加 QuickSight 服务角色的 ARN。

您未分配到必要的 IAM 权限策略

要检查已分配策略并验证该策略是否限制了您的访问,请完成以下步骤:

  1. 打开 Amazon QuickSight 控制台
  2. 选择**管理 QuickSight **。
  3. 选择安全性和权限
  4. 选择 IAM 策略分配
  5. 检查是否存在任何用于访问 Athena 的 IAM 策略分配。
  6. 确认该策略不会限制您对 S3 或 Athena 的访问。

如果某项策略限制您访问 S3 或 Athena,请要求 QuickSight 管理员更改该策略。如果您是管理员,请停用 IAM 策略分配,然后编辑策略,加入 S3 和 Athena 权限。有关更多信息,请参阅 Setting granular access to AWS services through IAM

S3 存储桶不存在。或者,用于查询数据的 IAM 角色没有所需的 S3 权限

您会收到以下错误:

"Unable to verify/create output bucket."

要解决上述错误,请参阅如何解决 Amazon Athena 中的 “Unable to verify/create output bucket” 错误?

如果存储桶不存在,请添加有效的 S3 存储桶。在 Amazon QuickSight 控制台中,从 AWS 服务列表中选择 Amazon S3。然后,选择用于查询结果位置的 S3 存储桶。

您未分配到必要的 SCP(Organizations)

请要求 Organizations 管理员检查您的 SCP 设置,验证分配给您的权限。如果您是 Organizations 管理员,请参阅 Creating, updating, and deleting service control policies

您的 QuickSight 用户或群组没有 Lake Formation 权限

对于使用 Lake Formation 的 Athena 账户,您可能会收到以下错误:

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

要将 Lake Formation 权限授予 QuickSight,您必须是 Lake Formation 管理员。

完成以下步骤:

  1. 找到 QuickSight 用户或群组的 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. 选择

  5. 选择操作,然后选择权限

  6. 主体列表中选择授权

  7. SAML 和 Amazon QuickSight 用户和群组下,输入 QuickSight 用户或群组 ARN。例如, arn:aws:quicksight:region:accountId:user/namespace/username

  8. 选择正确的数据源,然后选择所有表。表权限为选择描述

  9. 选择授予

授予权限后,返回 QuickSight 控制台,尝试再次创建数据集。

相关信息

Insufficient permissions when using Athena with Amazon QuickSight

Introducing Amazon QuickSight fine-grained access control over Amazon S3 and Amazon Athena

Turn on fine-grained permissions for Amazon QuickSight authors in AWS Lake Formation

AWS 官方
AWS 官方已更新 9 个月前