管理 Lake Formation 和 Athena 用户权限
Lake Formation 发送凭证以查询向 Lake Formation 注册的 Amazon S3 数据存储。如果您以前使用过 IAM policy 来允许或拒绝读取 Amazon S3 中的数据位置的权限,则可以改用 Lake Formation 权限。但是,其他 IAM 权限仍然是必需的。
每当您使用 IAM policy 时,请确保遵循 IAM 最佳实践。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
以下各节总结了使用 Athena 查询在 Lake Formation 中注册的数据所需的权限。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 AWS Lake Formation 的安全性。
权限摘要
Lake Formation 和 Athena 基于身份的权限
使用 Athena 查询向 Lake Formation 注册的数据的任何人都必须有一个 IAM 权限策略,此权限允许执行 lakeformation:GetDataAccess
操作。AWS 托管策略:AmazonAthenaFullAccess 允许此操作。如果您使用内联策略,请务必更新权限策略以允许此操作。
在 Lake Formation 中,数据湖管理员有权创建元数据对象(如数据库和表),向其他用户授予 Lake Formation 权限以及注册新的 Amazon S3 位置。要注册新位置,需要具有 Lake Formation 的服务相关角色的权限。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 创建数据湖管理员和 Lake Formation 的服务相关角色权限。
Lake Formation 用户可以使用 Athena,通过数据湖管理员授予他们的 Lake Formation 权限,查询数据库、表、表列和基础 Amazon S3 数据存储。用户不能创建数据库或表,也不能向 Lake Formation 注册新的 Amazon S3 位置。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 创建数据湖用户。
在 Athena 中,基于身份的权限策略(包括 Athena 工作组的权限策略)仍然控制对 Amazon Web Services 账户用户的 Athena 操作的访问。此外,可以通过 Athena 驱动程序提供的基于 SAML 的身份验证来提供联合访问。有关更多信息,请参阅 使用工作组控制查询访问和成本、使用 IAM 策略控制工作组访问 和 启用对 Athena API 的联合访问。
有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 授予 Lake Formation 权限。
Amazon S3 对 Athena 查询结果位置的权限
Amazon S3 中针对 Athena 的查询结果位置无法向 Lake Formation 注册。Lake Formation 权限不限制对这些位置的访问。除非您限制访问权限,否则,如果 Athena 用户拥有数据的 Lake Formation 权限,则可以访问查询结果文件和元数据。为避免这种情况,我们建议您使用工作组指定查询结果的位置,并将工作组成员身份与 Lake Formation 权限对齐。然后,您可以使用 IAM 权限策略限制对查询结果位置的访问。有关查询结果的更多信息,请参阅 使用查询结果和最近查询。
针对查询历史记录的 Athena 工作组成员身份
Athena 查询历史记录显示已保存查询和完整查询字符串的列表。除非您使用工作组来分离查询历史记录的访问权限,否则即使 Athena 用户没有获得授权查询 Lake Formation 中的数据,仍可以查看对该数据运行的查询字符串,包括列名、选择条件等。我们建议您使用工作组来分隔查询历史记录,并将 Athena 工作组成员资格与 Lake Formation 权限对齐以限制访问。有关更多信息,请参阅 使用工作组控制查询访问和成本。
Lake Formation 对数据的权限
除了使用 Lake Formation 的基准权限之外,Athena 用户还必须具有访问他们查询的资源的 Lake Formation 权限。这些权限由 Lake Formation 管理员授予和管理。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 元数据和数据的安全性和访问控制。
写入 Amazon S3 位置的 IAM 权限
Amazon S3 的 Lake Formation 权限不包括写入 Amazon S3 的权限。Create Table As Statements (CTAS) 需要对表的 Amazon S3 位置进行写入访问。要对向 Lake Formation 注册的数据运行 CTAS 查询,Athena 用户除了具有相应的 Lake Formation 权限以读取数据位置以外,还必须具有写入表 Amazon S3 位置的 IAM 权限。有关更多信息,请参阅 从查询结果创建表(CTAS)。
针对加密数据、元数据和 Athena 查询结果的权限
可以对向 Lake Formation 注册的 Amazon S3 中的基础源数据和 Data Catalog 中的元数据进行加密。在使用 Athena 查询向 Lake Formation 注册的数据时,Athena 处理查询结果加密的方式没有变化。有关更多信息,请参阅 加密在 Amazon S3 中存储的 Athena 查询结果。
-
加密源数据 – 支持对 Amazon S3 数据位置源数据进行加密。查询已向 Lake Formation 注册的加密 Amazon S3 位置的 Athena 用户需要加密和解密数据的权限。有关要求的更多信息,请参阅 支持的 Amazon S3 加密选项 和 Amazon S3 中加密数据的权限。
-
加密元数据 – 支持对 Data Catalog 中的元数据进行加密。对于使用 Athena 的委托人,基于身份的策略必须允许对用于加密元数据的密钥执行
"kms:GenerateDataKey"
、"kms:Decrypt"
和"kms:Encrypt"
操作。有关更多信息,请参阅《AWS Glue 开发人员指南》中的加密数据目录和从 Athena 配置对 AWS Glue Data Catalog 中加密元数据的访问。
外部账户中针对 Amazon S3 存储桶的基于资源的权限(可选)
要查询其他账户中的 Amazon S3 数据位置,基于资源的 IAM policy(存储桶策略)必须允许访问该位置。有关更多信息,请参阅 在 Athena 中配置对 Amazon S3 存储桶的跨账户存取。
有关访问其他账户中的 Data Catalog 的信息,请参阅 选项 A:在 Athena 中配置跨账户数据目录存取。