AWS Lake Formation
统一管理数据湖的构建、管理和安全,为 S3 上的数据提供列级和行级精细访问控制的服务
概述
AWS Lake Formation 是一项统一管理基于 S3 的数据湖构建、数据摄入、目录注册和访问控制的服务。与 Glue Data Catalog 集成,提供从数据源摄入 (蓝图)、Schema 自动发现、表/列/行级访问控制、跨账户数据共享等功能。从 Athena、Redshift Spectrum、EMR 查询数据湖时的访问权限,可通过 Lake Formation 的统一策略进行管理。
IAM 策略无法实现的精细访问控制
如果仅依靠 S3 的 IAM 策略和 Glue Data Catalog 的资源策略来管理数据湖的访问控制,随着表数量和用户数量的增加,策略会爆炸式地复杂化。Lake Formation 提供独有的权限模型,可在数据库、表、列、行各级别授予访问权限,通过类似 SQL GRANT/REVOKE 的直观操作进行管理。列级过滤可实现对同一张表,用户 A 可看到所有列,用户 B 仅能看到去除个人信息列后的列。行级安全 (Row-Level Security) 通过定义数据过滤器实现「销售部门用户仅能看到本部门数据」等行级访问控制。单元格级安全是列过滤和行过滤的组合,可实现仅遮蔽特定行的特定列等最精细的控制。这些权限无论从 Athena、Redshift Spectrum 还是 EMR 查询都一致适用,防止因访问路径不同而看到不同数据的事故。
数据湖构建工作流与蓝图
使用 Lake Formation 构建数据湖的标准工作流分为四步:注册数据湖位置、连接数据源、通过蓝图摄入数据、设置权限。首先将 S3 存储桶注册为数据湖位置,并将该存储桶的访问权限委托给 Lake Formation。然后配置数据源 (RDS、DynamoDB、本地数据库等) 的连接。蓝图是将典型数据摄入模式模板化的功能,提供数据库快照 (全量摄入) 和增量摄入两种类型。执行蓝图后,后台自动生成 Glue 爬虫和 ETL 作业,从数据源提取数据以 Parquet 格式存储到 S3,并在 Glue Data Catalog 中注册为表。与手动构建 Glue 作业相比,可大幅减少初始设置工作量。但如果需要复杂的数据转换或自定义逻辑,直接创建 Glue 作业更灵活。
跨账户数据共享与 Governed Tables
Lake Formation 的跨账户数据共享功能可向 Organizations 内的其他账户或外部账户按表/列粒度授予数据访问权限。传统的 S3 存储桶策略跨账户访问无法感知数据的逻辑结构 (表、列),而 Lake Formation 可实现「账户 B 仅可读取表 X 的列 A、B、C」这样的粒度共享。与 AWS RAM (Resource Access Manager) 集成,共享邀请和审批工作流已标准化。Governed Tables 是 Lake Formation 管理的特殊表类型,支持 ACID 事务、自动数据压缩、时间旅行查询。即使多个 ETL 作业同时写入同一张表,事务隔离级别也能保证读取端不会看到中间状态的数据。与 Apache Iceberg 表格式的集成也在推进中,Iceberg 表也可应用 Lake Formation 的权限模型。