跳至内容

如何解决在 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 (AWS KMS) 密钥进行了加密。
  • 您未分配到必要的 AWS Identity and Access Management (IAM) 权限策略。
  • Amazon S3 存储桶不存在。或者,用于查询数据的 IAM 角色没有所需的 S3 权限。
  • 对于使用 AWS Organizations 的 Quick Suite 账户,您未分配到必要的 service control policies (SCPs)(服务控制策略 (SCP))。
  • 对于使用 Lake Formation 的 Athena 账户,您的 Quick Suite 用户或组没有 AWS Lake Formation 权限。

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

解决方法

**注意:**如果在运行 AWS 命令行界面 (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 密钥进行加密,Amazon S3 可能会拒绝您访问数据。要解决此问题,请使用 AWS CLI 或 AWS KMS 控制台授予 Quick Suite 服务角色访问 AWS KMS 密钥的权限。

使用 AWS CLI

完成以下步骤:

  1. 使用 IAM 控制台查找 Quick Sight 服务角色的 ARN。

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

  3. 转到包含数据文件的存储桶。

  4. 选择 Overview(概述)选项卡,然后找到 KMS key ID(KMS 密钥 ID)。

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

  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 密钥的 ARN,将 quicksight_role_arn 替换为 Quick Suite 服务角色的 ARN。

使用 AWS KMS 控制台

要将 Quick Suite 服务角色添加到 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": "*"
}

**注意:**在上述策略中,请确保在 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 权限。有关更多信息,请参阅 Setting granular access to AWS services through IAM(通过 IAM 设置对 AWS 服务的精细访问权限)。

确认您的 S3 存储桶存在且权限正确

如果 S3 存储桶不存在,您会收到以下错误消息。或者,用于查询数据的 IAM 角色没有所需的 S3 权限:

"Unable to verify/create output bucket."

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

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

更新您的服务控制策略 (SCP)

让 Organizations 管理员检查您的 SCP 设置,以验证分配给您的权限。如果您是 Organizations 管理员,请参阅 Creating organization policies with AWS Organizations(使用 AWS Organizations 创建组织策略)。

向 Quick Suite 用户授予 Lake Formation 权限

当 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)."

要解决此错误,请为 Quick Suite 授予 Lake Formation 权限。您必须是 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 Suite 用户和组)下,输入 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 Sight(在 Amazon Quick Suite 中使用 Athena 的权限不足)

Introducing Amazon Quick Suite fine-grained access control over Amazon S3 and Amazon Athena(引入针对 Amazon S3 和 Amazon Athena 的 Amazon Quick Suite 精细访问控制)

Turn on fine-grained permissions for Amazon Quick Suite authors in AWS Lake Formation(在 AWS Lake Formation 中为 Amazon Quick Suite 作者启用精细权限)