Amazon Athena 的 AWS 托管策略 - Amazon Athena

Amazon Athena 的 AWS 托管策略

AWS 托管策略是由 AWS 创建和管理的独立策略。AWS 托管策略旨在为许多常见用例提供权限,以便您可以开始为用户、组和角色分配权限。

请记住,AWS 托管式策略可能不会为您的特定使用场景授予最低权限,因为它们可供所有 AWS 客户使用。我们建议通过定义特定于您的使用场景的客户管理型策略来进一步减少权限。

您无法更改 AWS 托管策略中定义的权限。如果 AWS 更新在 AWS 托管式策略中定义的权限,则更新会影响该策略所附加到的所有主体身份(用户、组和角色)。当新的 AWS 服务启动或新的 API 操作可用于现有服务时,AWS 最有可能更新 AWS 托管式策略。

有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管式策略

在 Athena 中使用托管策略时的注意事项

托管策略易于使用,并且随着服务的发展而自动使用必需的操作进行更新。将托管策略与 Athena 结合使用时,请记住以下几点:

  • 要使用 AWS Identity and Access Management (IAM) 为您自己或其他用户允许或拒绝 Amazon Athena 服务操作,请将基于身份的策略附加到委托人,例如用户或组。

  • 每个基于身份的策略均包含用于定义允许或拒绝的操作的语句。有关将策略附加到用户的更多信息和分步说明,请参阅 IAM 用户指南中的 附加托管式策略。有关操作列表,请参阅 Amazon Athena API 参考

  • 客户托管策略和基于身份的内联策略允许您在策略内指定更详细的 Athena 操作来精调访问权限。我们建议您使用 AmazonAthenaFullAccess 策略作为起始点,然后允许或拒绝 Amazon Athena API 参考中所列的特定操作。有关内联策略的更多信息,请参阅《IAM 用户指南》中的 托管式策略与内联策略

  • 如果您还具有使用 JDBC 连接的委托人,则必须为您的应用程序提供 JDBC 驱动程序凭证。有关更多信息,请参阅 通过 JDBC 和 ODBC 连接访问

  • 如果您已加密 AWS Glue Data Catalog,则必须在基于身份的 IAM 策略中为 Athena 指定其他操作。有关更多信息,请参阅 从 Athena 访问 AWS Glue Data Catalog 中的加密元数据

  • 如果您创建和使用工作组,请确保您的策略包括对工作组操作的相关访问权限。有关详细信息,请参阅 用于访问工作组的 IAM policy工作组策略示例

AWS 托管策略:AmazonAthenaFullAccess

AmazonAthenaFullAccess 托管策略授予对 Athena 的完全访问权限。

要提供访问权限,请为您的用户、组或角色添加权限:

权限组

AmazonAthenaFullAccess 策略被分组为以下权限集。

  • athena – 允许委托人访问 Athena 资源。

  • glue – 允许委托人访问 AWS Glue 数据库、表和分区。这是必需的,以便委托人可以将 AWS Glue Data Catalog 和 Athena 搭配使用。

  • s3 – 允许委托人从 Amazon S3 编写和读取查询结果,读取驻留在 Amazon S3 中的公开可用的 Athena 数据示例,并列出存储桶。这是必需的,以便委托人可以将 Athena 与 Amazon S3 搭配使用。

  • sns – 允许委托人列出 Amazon SNS 主题并获取主题属性。这使委托人能够将 Amazon SNS 主题与 Athena 结合使用,以进行监控和提示。

  • cloudwatch – 允许委托人创建、读取和删除 CloudWatch 告警。有关更多信息,请参阅 使用 CloudWatch 指标和事件控制成本和监控查询

  • lakeformation – 允许委托人请求临时证书以访问已注册到 Lake Formation 的数据湖位置中的数据。有关更多信息,请参阅《AWS Lake Formation 开发人员指南https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html》中的 底层数据访问控制

  • datazone – 允许主体列出 Amazon DataZone 项目、域和环境。有关如何在 Athena 中使用 DataZone 的信息,请参阅 在 Athena 中使用 Amazon DataZone

  • pricing – 提供对 AWS Billing and Cost Management 的访问权限。有关更多信息,请参阅《AWS Billing and Cost Management API 参考》中的 GetProducts

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BaseAthenaPermissions", "Effect": "Allow", "Action": [ "athena:*" ], "Resource": [ "*" ] }, { "Sid": "BaseGluePermissions", "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:StartColumnStatisticsTaskRun", "glue:GetColumnStatisticsTaskRun", "glue:GetColumnStatisticsTaskRuns" ], "Resource": [ "*" ] }, { "Sid": "BaseQueryResultsPermissions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject", "s3:PutBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::aws-athena-query-results-*" ] }, { "Sid": "BaseAthenaExamplesPermissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::athena-examples*" ] }, { "Sid": "BaseS3BucketPermissions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": [ "*" ] }, { "Sid": "BaseSNSPermissions", "Effect": "Allow", "Action": [ "sns:ListTopics", "sns:GetTopicAttributes" ], "Resource": [ "*" ] }, { "Sid": "BaseCloudWatchPermissions", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricData" ], "Resource": [ "*" ] }, { "Sid": "BaseLakeFormationPermissions", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ] }, { "Sid": "BaseDataZonePermissions", "Effect": "Allow", "Action": [ "datazone:ListDomains", "datazone:ListProjects", "datazone:ListAccountEnvironments" ], "Resource": [ "*" ] }, { "Sid": "BasePricingPermissions", "Effect": "Allow", "Action": [ "pricing:GetProducts" ], "Resource": [ "*" ] } ] }

AWS 托管策略:AWSQuicksightAthenaAccess

AWSQuicksightAthenaAccess 授予对 Amazon QuickSight 与 Athena 集成所需操作的访问权限。您可以将 AWSQuicksightAthenaAccess 策略附加到 IAM 身份。仅将此策略附加到将 Amazon QuickSight 与 Athena 结合使用的委托人。此策略包括 Athena 的一些操作,这些操作已弃用且未包含在当前公有 API 中或仅与 JDBC 和 ODBC 驱动程序一起使用。

权限组

AWSQuicksightAthenaAccess 策略被分组为以下权限集。

  • athena – 允许委托人对 Athena 资源运行查询。

  • glue – 允许委托人访问 AWS Glue 数据库、表和分区。这是必需的,以便委托人可以将 AWS Glue Data Catalog 和 Athena 搭配使用。

  • s3 – 允许委托人从 Amazon S3 中写入和读取查询结果。

  • lakeformation – 允许委托人请求临时证书以访问已注册到 Lake Formation 的数据湖位置中的数据。有关更多信息,请参阅《AWS Lake Formation 开发人员指南https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html》中的 底层数据访问控制

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:BatchGetQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetQueryResultsStream", "athena:ListQueryExecutions", "athena:StartQueryExecution", "athena:StopQueryExecution", "athena:ListWorkGroups", "athena:ListEngineVersions", "athena:GetWorkGroup", "athena:GetDataCatalog", "athena:GetDatabase", "athena:GetTableMetadata", "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject", "s3:PutBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::aws-athena-query-results-*" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ] } ] }

AWS 托管策略的 Athena 更新

查看有关 Athena AWS 托管策略更新的详细信息(从该服务开始跟踪这些更改开始)。

更改 描述 日期

AmazonAthenaFullAccess – 对现有政策的更新

添加了 datazone:ListDomainsdatazone:ListProjectsdatazone:ListAccountEnvironments 权限,以使 Athena 用户能够使用 Amazon DataZone 域、项目和环境。有关更多信息,请参阅 在 Athena 中使用 Amazon DataZone

2024 年 1 月 3 日

AmazonAthenaFullAccess – 对现有政策的更新

添加了 glue:StartColumnStatisticsTaskRunglue:GetColumnStatisticsTaskRunglue:GetColumnStatisticsTaskRuns 权限,以使 Athena 有权调用 AWS Glue,以检索基于成本的优化器功能的统计数据。有关更多信息,请参阅 使用成本型优化器

2024 年 1 月 3 日

AmazonAthenaFullAccess – 对现有政策的更新

Athena 增加了 pricing:GetProducts 以提供对 AWS Billing and Cost Management 的访问权限。有关更多信息,请参阅《AWS Billing and Cost Management API 参考》中的 GetProducts

2023 年 1 月 25 日

AmazonAthenaFullAccess – 对现有政策的更新

Athena 添加了 cloudwatch:GetMetricData,用以检索 CloudWatch 指标值。有关更多信息,请参阅 Amazon CloudWatch API 参考中的 GetMetricData

2022 年 11 月 14 日

AmazonAthenaFullAccessAWSQuicksightAthenaAccess – 对现有策略的更新

将 Athena 添加到 s3:PutBucketPublicAccessBlock 以允许阻止对 Athena 创建的存储桶的公共访问。

2021 年 7 月 7 日

Athena 开始跟踪变更

Athena 为其 AWS 托管策略开启了跟踪更改。

2021 年 7 月 7 日