如何解决在 Quick Suite 中使用 Athena 作为数据来源时出现的“Access denied”错误?
当我在 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 存储桶相关的权限。完成以下步骤:
- 打开 Quick Suite 控制台。
- 在应用程序栏上选择您的用户名,然后选择 Manage Quick Suite(管理 Quick Suite)。
- 在导航窗格的 Permissions(权限)下,选择 AWS resources(AWS 资源)。
- 从 AWS 服务列表中,选择 Amazon S3。
- 选择 Select S3 buckets(选择 S3 存储桶),然后选择 S3 存储桶。
- 选择 Write permission for Athena Workgroup(Athena 工作组的写入权限),然后选择 Finish(完成)。
- 选择 Save(保存)。
授予 Quick Suite 访问使用 KMS 加密的数据的权限
如果您的数据文件使用 AWS KMS 密钥进行加密,Amazon S3 可能会拒绝您访问数据。要解决此问题,请使用 AWS CLI 或 AWS KMS 控制台授予 Quick Suite 服务角色访问 AWS KMS 密钥的权限。
使用 AWS CLI
完成以下步骤:
-
使用 IAM 控制台查找 Quick Sight 服务角色的 ARN。
-
使用 Amazon S3 控制台查找 AWS KMS 密钥的 ARN。
-
转到包含数据文件的存储桶。
-
选择 Overview(概述)选项卡,然后找到 KMS key ID(KMS 密钥 ID)。
-
将 Quick Suite 服务角色的 ARN 添加到 KMS 密钥策略中。
-
运行 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 策略分配设置
要查看已分配给您的策略并验证该策略是否限制了您的访问权限,请完成以下步骤:
- 打开 Amazon Quick Suite 控制台。
- 在应用程序栏上选择您的用户名,然后选择 Manage Quick Suite(管理 Quick Suite)。
- 在导航窗格中的 Permissions(权限)下,选择 IAM policy assignments(IAM 策略分配)。
- 检查是否分配了用于访问 Athena 的 IAM 策略。
- 确认该策略不会限制您访问 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 管理员。
完成以下步骤:
-
找到 Quick Suite 用户或组的 ARN。
-
运行以下 AWS CLI 命令之一:
aws quicksight describe-user --user-name user_name --aws-account-id account_id --namespace default-或-
aws quicksight describe-group --group-name group_name --aws-account-id account_id --namespace default**注意:**在前面的命令中,请将 user_name 替换为您的用户名,将 group_name 替换为您的组名,将 account_id 替换为您的账户 ID。
-
选择 Tables(表)。
-
选择 Actions(操作),然后选择 Permissions(权限)。
-
从 Principals(主体)列表中,选择 Grant(授予)。
-
在 SAML and Amazon Quick Sight users and groups(SAML 和 Amazon Quick Suite 用户和组)下,输入 Quick Suite 用户或组的 ARN。例如,arn:aws:quicksight:region:accountId:user/namespace/username。
-
选择正确的数据来源,然后选择 All tables(所有表)。表权限为 Select(选择)和 Describe(描述)。
-
选择 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 作者启用精细权限)
相关内容
AWS 官方已更新 8 个月前