

# 管理 Lake Formation 和 Athena 用户权限
<a name="lf-athena-user-permissions"></a>

Lake Formation 发送凭证以查询注册到 Lake Formation 的 Amazon S3 数据存储或联合目录。如果您以前过 IAM 策略来允许或拒绝读取目录或 Amazon S3 中数据位置的权限，则可以改用 Lake Formation 权限。但是，其他 IAM 权限仍然是必需的。

每当您使用 IAM policy 时，请确保遵循 IAM 最佳实践。有关更多信息，请参阅《[IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)》中的 *IAM 安全最佳实践*。

以下各节总结了使用 Athena 查询在 Lake Formation 中注册的数据所需的权限。有关更多信息，请参阅《*AWS Lake Formation 开发人员指南*》中的 [AWS Lake Formation 的安全性](https://docs.aws.amazon.com/lake-formation/latest/dg/security.html)。

**Topics**
+ [Lake Formation 和 Athena 基于身份的权限](#lf-athena-user-permissions-identity-based)
+ [Amazon S3 对 Athena 查询结果位置的权限](#lf-athena-user-permissions-query-results-locations)
+ [针对查询历史记录的 Athena 工作组成员身份](#lf-athena-user-permissions-workgroup-memberships-query-history)
+ [Lake Formation 对数据的权限](#lf-athena-user-permissions-data)
+ [写入 Amazon S3 位置的 IAM 权限](#lf-athena-user-permissions-s3-write)
+ [针对加密数据、元数据和 Athena 查询结果的权限](#lf-athena-user-permissions-encrypted)
+ [外部账户中针对 Amazon S3 存储桶的基于资源的权限（可选）](#lf-athena-user-permissions-s3-cross-account)

## Lake Formation 和 Athena 基于身份的权限
<a name="lf-athena-user-permissions-identity-based"></a>

使用 Athena 查询向 Lake Formation 注册的数据的任何人都必须有一个 IAM 权限策略，此权限允许执行 `lakeformation:GetDataAccess` 操作。[AWS 托管策略：AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) 允许此操作。如果您使用内联策略，请务必更新权限策略以允许此操作。

在 Lake Formation 中，*数据湖管理员*拥有的权限包括创建元数据对象（如数据库和表）、向其他用户授予 Lake Formation 权限以及注册新的 Amazon S3 位置或数据目录等。要注册新位置，需要具有 Lake Formation 的服务相关角色的权限。有关更多信息，请参阅《AWS Lake Formation 开发人员指南**》中的 [创建数据湖管理员](https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#create-data-lake-admin)和 [Lake Formation 的服务相关角色权限](https://docs.aws.amazon.com/lake-formation/latest/dg/service-linked-roles.html#service-linked-role-permissions)。

Lake Formation 用户可以根据数据湖管理员向其授予的 Lake Formation 权限，使用 Athena 查询数据库、表、表列和基础 Amazon S3 数据存储或目录。用户不能创建数据库或表，也不能向 Lake Formation 注册新的 Amazon S3 位置。有关更多信息，请参阅《AWS Lake Formation 开发人员指南**》中的 [创建数据湖用户](https://docs.aws.amazon.com/lake-formation/latest/dg/cloudtrail-tut-create-lf-user.html)。

在 Athena 中，基于身份的权限策略（包括 Athena 工作组的权限策略）仍然控制对 Amazon Web Services 账户用户的 Athena 操作的访问。此外，可以通过 Athena 驱动程序提供的基于 SAML 的身份验证来提供联合访问。有关更多信息，请参阅 [使用工作组控制查询访问和成本](workgroups-manage-queries-control-costs.md)、[使用 IAM 策略控制工作组访问](workgroups-iam-policy.md) 和 [启用对 Athena API 的联合访问](access-federation-saml.md)。

有关更多信息，请参阅《AWS Lake Formation 开发人员指南**》中的 [授予 Lake Formation 权限](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html)。

## Amazon S3 对 Athena 查询结果位置的权限
<a name="lf-athena-user-permissions-query-results-locations"></a>

Amazon S3 中针对 Athena 的查询结果位置无法向 Lake Formation 注册。Lake Formation 权限不限制对这些位置的访问。除非您限制访问，否则，如果 Athena 用户拥有数据的 Lake Formation 权限，则可以访问查询结果文件和元数据。为避免这种情况，我们建议您使用工作组指定查询结果的位置，并将工作组成员身份与 Lake Formation 权限对齐。然后，您可以使用 IAM 权限策略限制对查询结果位置的访问。有关查询结果的更多信息，请参阅 [使用查询结果和最近查询](querying.md)。

## 针对查询历史记录的 Athena 工作组成员身份
<a name="lf-athena-user-permissions-workgroup-memberships-query-history"></a>

Athena 查询历史记录显示已保存查询和完整查询字符串的列表。除非您使用工作组来分离查询历史记录的访问权限，否则即使 Athena 用户没有获得授权查询 Lake Formation 中的数据，仍可以查看对该数据运行的查询字符串，包括列名、选择条件等。我们建议您使用工作组来分隔查询历史记录，并将 Athena 工作组成员资格与 Lake Formation 权限对齐以限制访问。有关更多信息，请参阅 [使用工作组控制查询访问和成本](workgroups-manage-queries-control-costs.md)。

## Lake Formation 对数据的权限
<a name="lf-athena-user-permissions-data"></a>

除了使用 Lake Formation 的基准权限之外，Athena 用户还必须具有访问他们查询的资源的 Lake Formation 权限。这些权限由 Lake Formation 管理员授予和管理。有关更多信息，请参阅《AWS Lake Formation 开发人员指南**》中的 [元数据和数据的安全性和访问控制](https://docs.aws.amazon.com/lake-formation/latest/dg/security-data-access.html#security-data-access-permissions)。

## 写入 Amazon S3 位置的 IAM 权限
<a name="lf-athena-user-permissions-s3-write"></a>

Amazon S3 的 Lake Formation 权限不包括写入 Amazon S3 的权限。Create Table As Statements (CTAS) 需要对表的 Amazon S3 位置进行写入访问。要对向 Lake Formation 注册的数据运行 CTAS 查询，Athena 用户除了具有相应的 Lake Formation 权限以读取数据位置以外，还必须具有写入表 Amazon S3 位置的 IAM 权限。有关更多信息，请参阅 [从查询结果创建表（CTAS）](ctas.md)。

## 针对加密数据、元数据和 Athena 查询结果的权限
<a name="lf-athena-user-permissions-encrypted"></a>

可以对注册到 Lake Formation 的 Amazon S3 中的基础源数据和目录中的元数据进行加密。在使用 Athena 查询向 Lake Formation 注册的数据时，Athena 处理查询结果加密的方式没有变化。有关更多信息，请参阅 [加密在 Amazon S3 中存储的 Athena 查询结果](encrypting-query-results-stored-in-s3.md)。
+ **加密源数据** – 支持对 Amazon S3 数据位置源数据进行加密。查询已向 Lake Formation 注册的加密 Amazon S3 位置的 Athena 用户需要加密和解密数据的权限。有关要求的更多信息，请参阅 [支持的 Amazon S3 加密选项](encryption.md#encryption-options-S3-and-Athena) 和 [Amazon S3 中加密数据的权限](encryption.md#permissions-for-encrypting-and-decrypting-data)。
+ **加密元数据** – 支持对 AWS Glue Data Catalog 中的元数据进行加密。对于使用 Athena 的委托人，基于身份的策略必须允许对用于加密元数据的密钥执行 `"kms:GenerateDataKey"`、`"kms:Decrypt"` 和 `"kms:Encrypt"` 操作。有关更多信息，请参阅《AWS Glue 开发人员指南》中的*加密数据目录*和[从 Athena 配置对 AWS Glue Data Catalog 中加密元数据的访问](access-encrypted-data-glue-data-catalog.md)。

## 外部账户中针对 Amazon S3 存储桶的基于资源的权限（可选）
<a name="lf-athena-user-permissions-s3-cross-account"></a>

要查询其他账户中的 Amazon S3 数据位置，基于资源的 IAM policy（存储桶策略）必须允许访问该位置。有关更多信息，请参阅 [在 Athena 中配置对 Amazon S3 存储桶的跨账户存取](cross-account-permissions.md)。

有关访问其他账户中目录的信息，请参阅[选项 A：在 Athena 中配置跨账户数据目录存取](lf-athena-limitations-cross-account.md#lf-athena-limitations-cross-account-glue)。