使用 AWS Lake Formation 构建数据湖 - 细粒度访问控制与数据目录
通过列级和行级的细粒度访问控制与基于标签的管理,建立数据湖的治理。本文介绍与 Glue Data Catalog 的集成以及跨账户访问。
Lake Formation 概述
Lake Formation 是一项简化 S3 上数据湖的构建、管理和安全的服务。以往,针对 S3 数据湖的访问控制是通过 S3 存储桶策略与 IAM 策略的组合来管理的,但难以进行列级和行级的控制。Lake Formation 在数据库、表、列、行这 4 个级别上管理权限,支持数千张表规模的数据湖。它将这些权限统一地应用于来自 Athena、Redshift Spectrum、EMR 的查询。
访问控制与基于标签的管理
在 Lake Formation 的权限模型中,向主体(IAM 用户、角色)授予数据库、表、列的 SELECT、INSERT、DELETE 权限。通过行级过滤器,可以将访问限制为仅符合特定条件的行,并可以进行让各部门只查看本部门数据的控制。在 LF-TBAC 中,为数据附加标签(例如 sensitivity=high),并针对主体设置基于标签的权限。即使添加了新表,如果标签匹配,权限也会自动应用。
跨账户访问与审计
通过 Lake Formation 的跨账户共享,向 Organizations 内的其他账户授予表和数据库的访问权限。使用 RAM(Resource Access Manager)创建资源链接,在使用方账户的 Glue 目录中显示共享表。通过数据过滤器定义行级和单元格级的访问控制,即使是同一张表,也可以按部门公开不同的数据范围。通过与 CloudTrail 的集成,将谁访问了哪张表的哪一列记录到审计日志中。借助 Lake Formation 的基于标签的访问控制(LF-TBAC),为数据资产附加标签,并通过与主体标签的匹配自动授予权限。这种运维方式在大规模环境中是高效的。
Lake Formation 的费用与运维
Lake Formation 本身不产生额外费用。成本取决于底层 S3 存储、Glue 爬网程序和作业、Athena 查询的使用费。使用 Lake Formation 的事务功能(Governed Tables)时,会产生事务 API 调用和存储的额外费用。通过引入 LF-TBAC,从逐个表和列的权限管理中解放出来,权限管理的运维成本可以大幅降低。建议通过数据位置注册将 S3 路径置于 Lake Formation 的管理之下,从混合模式完全迁移。这样可以避免 IAM 策略与 Lake Formation 权限的双重管理。
构建数据湖的流程
使用 Lake Formation 构建数据湖需要经过几个阶段。首先,将 S3 路径作为数据的存储位置注册到 Lake Formation,将其置于管理之下。接着,用 Glue 爬网程序读取数据的结构,在数据目录中创建表定义。这样一来,原始文件的集合就可以作为可查询的表来处理。如果建立了数据摄取机制,就可以将持续流入的数据同步到目录中。通过完善这一系列流程,原本分散的数据会开始作为受到有效管控的分析基础发挥作用。
与数据目录的关系
Lake Formation 的权限管理以 Glue 数据目录为基础。目录保存表的结构和位置等元数据,Lake Formation 在其上叠加一层权限,规定谁可以访问哪些数据库、表、列。仅靠以往的 S3 存储桶策略或 IAM 难以进行的列级和行级精细控制,可以通过目录统一应用。由于可以将数据本身与其可见范围和访问权限分开管理,因此可以进行诸如按部门以不同范围安全共享同一份数据之类的运维。
与查询引擎的集成
在 Lake Formation 中设置的权限会统一应用于多个分析服务。无论是在 Athena 中进行临时查询、从 Redshift Spectrum 引用,还是在 EMR 中进行大规模处理,访问时都会使用相同的权限规则。这样一来,就不必为所用的每个工具分别构建访问控制,能够保持治理的一致性。对列进行掩码以隐藏敏感信息、对行进行过滤以只显示负责的范围等控制,无论经由哪个引擎都会一致地发挥作用。分析人员可以在选择熟悉的工具的同时,在组织的管控之下安全地处理数据。
治理的最佳实践
在大规模数据湖中,为每张表单独设置权限的方式容易导致管理失控。如果采用为数据附加标签并基于标签授予权限的基于标签的访问控制,即使新表增加,如果标签匹配,也会自动应用适当的权限,运维会大幅简化。对敏感的列施加掩码,彻底贯彻最小权限。将访问记录保留为审计日志,以便追踪谁查看了什么。将 S3 路径统一置于 Lake Formation 的管理之下、避免与 IAM 的双重管理,对于防止混乱也是重要的。
总结
Lake Formation 是一项为 S3 数据湖提供细粒度访问控制的服务。通过列级和行级权限管理以及 LF-TBAC(基于标签的访问控制),提高大规模环境中权限管理的效率。通过跨账户共享安全地实现 Organizations 内的数据共享。通过 CloudTrail 集成记录数据访问的审计日志,构建数据治理的基础。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。