

# Athena 如何访问已向 Lake Formation 注册的数据
<a name="lf-athena-access"></a>

本节中描述的访问工作流仅在您对已注册到 Lake Formation 的 Amazon S3 位置、数据目录和元数据对象运行 Athena 查询时才适用。有关更多信息，请参阅《Amazon Lake Formation 开发人员指南**》中的 [注册数据湖](https://docs.amazonaws.cn/lake-formation/latest/dg/register-data-lake.html)。除注册数据之外，Lake Formation 管理员还可应用以下 Lake Formation 权限：授予或撤消对数据目录、Amazon Glue Data Catalog 或 Amazon S3 中数据位置中元数据的访问权限。有关更多信息，请参阅《Amazon Lake Formation 开发人员指南**》中的 [元数据和数据的安全性和访问控制](https://docs.amazonaws.cn/lake-formation/latest/dg/security-data-access.html#security-data-access-permissions)。

每次 Athena 主体（用户、组或角色）对使用 Lake Formation 注册的数据运行查询时，Lake Formation 都会验证该主体是否对数据库、表和数据来源位置（视具体情况）具有查询所需的适合 Lake Formation 权限。如果委托人具有访问权限，Lake Formation 会将临时凭据*发送*给 Athena，然后查询运行。

下图展示了凭证发送过程如何在 Athena 中在逐个查询的基础上，对注册到 Lake Formation 的 Amazon S3 位置或数据目录中的表进行假设的 `SELECT` 查询：

![用于 Athena 表上查询的凭证售卖工作流。](http://docs.amazonaws.cn/athena/latest/ug/images/lake-formation-athena-security.png)


1. 委托人在 Athena 中运行 `SELECT` 查询。

1. Athena 分析查询并检查 Lake Formation 权限，以查看该委托人是否已被授予对该表和表列的访问权限。

1. 如果委托人具有访问权限，Athena 将从 Lake Formation 请求凭证。如果委托人*没有*访问权限，则 Athena 发出拒绝访问错误。

1. Lake Formation 将向 Athena 颁发凭证，以便在从 Amazon S3 或该目录读取数据时使用，同时还将发送允许列的列表。

1. Athena 将使用 Lake Formation 临时凭证从 Amazon S3 或该目录查询数据。在查询完成后，Athena 将丢弃凭证。