在数据湖中保护PII:AWS Lake Formation 访问控制
Source: Dev.to
在数据湖中保护 PII:AWS Lake Formation 访问控制
在当今数据驱动的企业环境中,个人可识别信息(PII)是最敏感的数据资产之一。随着组织将越来越多的数据迁移到数据湖,确保对这些信息的访问受到严格控制变得至关重要。本文将探讨 AWS Lake Formation 如何帮助您在数据湖层面实现细粒度的访问控制,从而安全地管理和保护 PII。
为什么要在数据湖层面保护 PII?
- 合规要求:GDPR、CCPA、HIPAA 等法规对 PII 的收集、存储和使用都有严格规定。
- 业务风险:数据泄露可能导致巨额罚款、品牌声誉受损以及潜在的法律诉讼。
- 数据共享需求:在同一数据湖中,不同团队(如数据科学、业务分析、运营)需要访问不同的数据子集,必须确保每个团队只能看到其被授权的数据。
传统方法的局限性
| 方法 | 优点 | 缺点 |
|---|---|---|
| IAM 角色 + S3 Bucket Policy | 简单、易于实现 | 粒度粗糙,无法对单个列或行进行控制 |
| Glue Catalog 权限 | 支持数据库/表级别的权限 | 仍然缺乏列级别的细粒度控制 |
| 自定义 ETL 过滤 | 完全可定制 | 维护成本高,容易出现安全漏洞 |
AWS Lake Formation 的核心优势
-
细粒度访问控制
- 列级别权限:可以对特定列(如
ssn、email)设置SELECT或DENY权限。 - 行级别过滤(LF‑Tag):通过标签实现基于行的过滤,例如只允许某地区的用户查看该地区的数据。
- 列级别权限:可以对特定列(如
-
统一的元数据管理
- Lake Formation 将 Glue Data Catalog 与权限模型统一管理,避免权限碎片化。
-
自动化数据注册
- 使用 Lake Formation 注册向导,一次性将 S3 中的原始数据注册为受管表,自动应用预定义的安全策略。
实战:使用 Lake Formation 保护 PII
下面演示一个典型的工作流,展示如何在 Lake Formation 中为 PII 数据设置列级别的访问控制。
步骤 1:在 S3 中准备原始数据
{
"UserId": "12345",
"FirstName": "John",
"LastName": "Doe",
"Email": "john.doe@example.com",
"SSN": "123-45-6789",
"Country": "US"
}
注意:此处的 JSON 示例仅用于演示,实际数据请使用加密或脱敏处理。
步骤 2:使用 Lake Formation 注册数据湖
- 登录 AWS Lake Formation 控制台。
- 选择 “Data lake locations” → “Add location”,指向包含上述 JSON 文件的 S3 前缀。
- 勾选 “Grant Lake Formation permissions to the location”,让 Lake Formation 接管该路径的访问控制。
步骤 3:创建受管表并映射列
在 Lake Formation → Tables 中:
- 选择 “Create table” → “From existing data”。
- 指定 Database(如
pii_db)和 Table name(如customer_info)。 - 在 Columns 页面,确保所有列都被正确识别。
步骤 4:定义 LF‑Tag(标签)用于列级别控制
| LF‑Tag 名称 | 值 |
|---|---|
PII | TRUE |
NON_PII | TRUE |
- 为
Email、SSN列打上PII=TRUE标签。 - 为其他列打上
NON_PII=TRUE标签。
步骤 5:授予角色/用户权限
假设有两个 IAM 角色:
- DataAnalystRole:只能访问非 PII 列。
- DataScientistRole:需要访问全部列(包括 PII)。
在 Lake Formation → Permissions 中:
| 主体 (Principal) | 数据库/表 | 列标签 | 权限 |
|---|---|---|---|
DataAnalystRole | pii_db.customer_info | NON_PII=TRUE | SELECT |
DataAnalystRole | pii_db.customer_info | PII=TRUE | DENY |
DataScientistRole | pii_db.customer_info | * | SELECT |
提示:Lake Formation 会自动在查询时注入 行级过滤(如果你为
Country列添加了相应的标签),从而只返回被授权的行。
步骤 6:在 Athena 中验证权限
-- 使用 DataAnalystRole 运行
SELECT * FROM pii_db.customer_info LIMIT 10;
返回结果仅包含 UserId、FirstName、LastName、Country 四列,Email 与 SSN 被过滤掉。
-- 使用 DataScientistRole 运行
SELECT * FROM pii_db.customer_info LIMIT 10;
返回所有列,证明权限配置生效。
常见最佳实践
| 实践 | 说明 |
|---|---|
| 最小权限原则 | 只授予用户完成工作所需的最小列/行权限。 |
| 标签统一管理 | 使用统一的 LF‑Tag 体系,避免同一列出现多个冲突标签。 |
| 审计日志 | 开启 AWS CloudTrail 与 Lake Formation audit logs,实时监控谁在何时访问了哪些 PII。 |
| 数据加密 | 在 S3 层面启用 SSE‑S3 或 SSE‑KMS,确保静态数据加密。 |
| 定期权限审查 | 使用 AWS Config Rules 检测未授权的权限变更。 |
结论
AWS Lake Formation 为数据湖中的 PII 提供了 列级 与 行级 双重细粒度的访问控制,使组织能够在满足合规要求的同时,灵活地为不同业务团队提供所需的数据视图。通过统一的标签体系、自动化的数据注册以及与 IAM、Glue、Athena 的深度集成,Lake Formation 成为构建安全、可治理数据湖的关键组件。
下一步:在您的 AWS 环境中试用 Lake Formation,先从一个小型数据集开始,逐步将标签和权限模型推广到整个数据湖。这样既能快速验证安全策略,又能在实际业务中不断迭代完善。
Source: …
AWS 社区日班加罗尔 2025 – “使用 Lake Formation 管理 PII 数据”
演讲者:Ankit Sheth
日期:2025 年 5 月 23 日
什么是数据湖?(它为何重要?)
数据湖是一种大型、灵活的存储库,能够以任意规模保存任何类型的数据——结构化、半结构化或非结构化。典型内容包括:
- 客户记录
- 应用日志
- 图像、视频和传感器数据
与传统数据库需要预先定义模式不同,数据湖采用 schema‑on‑read(读取时模式)方式:先摄取原始数据,只有在查询时才定义其结构。这使得数据湖既 灵活 又 成本高效。
数据湖的关键特性
- 单一真相源 – 所有数据集中存放,简化发现和治理。
- 支持多种格式 – CSV、JSON、Parquet、Avro、普通文件等。
- 快速摄取与消费 – 数据可快速加载,供众多分析工具使用。
- 低成本存储 – AWS 数据湖通常使用 Amazon S3,远比传统数据库便宜。
- 存储与计算解耦 – 仅在运行查询时付费计算,存储费用保持不变。
- 内置保护与安全 – Lake Formation 等服务可定义细粒度访问策略并审计使用情况。
如果你曾为数据分散在各个孤岛而苦恼,这些优势会让你感同身受。
为什么访问层很重要
本次会议聚焦 Lake Formation 的访问层,该层实现了 基于角色的访问控制(RBAC)。在处理敏感数据——如社会安全号、信用卡号、健康记录时,你需要对谁能看到什么进行精确控制。
传统方法的挑战
以一家电商平台为例:
| 团队 | 数据需求 |
|---|---|
| 市场营销 | 客户人口统计信息 |
| 财务 | 交易记录 |
| 数据科学 | 用于推荐模型的原始点击流数据 |
| 分析 | 全业务报告 |
每个团队需要的访问级别不同。有的需要完整可见,有的只需要匿名化数据,少数团队绝不能看到 PII。手动管理这些权限很快会变成 一团乱麻。
Lake Formation 如何解决:基于角色的访问

Lake Formation 提供了一个 统一的地点 来定义跨整个数据湖的权限。会议中展示的幻灯片清晰地说明了这一工作流。
权限流程
- 管理员设置权限 – 在数据库、表、列、行甚至单元格级别授予权限,并在 Lake Formation 中注册资源。
- 用户查询数据 – 用户(例如通过 Amazon Athena)使用临时凭证发送查询。
- Lake Formation 检查元数据 – 查询 AWS Glue Data Catalog 获取表定义。
- 验证权限 – Lake Formation 确认用户角色是否被允许访问请求的数据。
- 发放凭证 – 若授权成功,颁发临时 S3 凭证。
- 检索数据 – 用户即可从存储桶读取数据。
双层保护
Lake Formation 在 两层 同时强制权限:
- 元数据层 – 通过 AWS Glue Data Catalog 控制。
- 存储层 – 通过为 Amazon S3 访问发放凭证进行控制。
这种双层方式确保即使一层被绕过,另一层仍能阻止未授权的数据访问。
数据库级别 vs. 表级别权限

- 数据库级别 – 授予
访问数据库中的所有表。
- Table‑level – 授予对特定表、列或行的访问权限,实现细粒度控制。
要点
- Lake Formation 通过提供统一的细粒度权限模型,简化了对 PII(个人身份信息)和其他敏感数据的管理。
- 基于角色的访问 让您能够在团队和使用场景中实施最小特权原则。
- 两层安全(元数据 + 存储)为防止意外或恶意的数据泄露提供了强大的安全网。
如果您正在 AWS 上构建或改造数据湖,加入 Lake Formation 的访问层是不可忽视的最佳实践。

数据库级别权限
这些是覆盖整个数据库的广泛权限。您可以授予某人:
- SELECT – 从所有表读取数据
- INSERT – 添加新记录
- DELETE – 删除记录
- ALTER – 修改表结构
- SUPER – 完全的管理权限,包括向其他人授予权限的能力
Source: …
表级列访问控制
Lake Formation 在这方面表现尤为出色。您可以为特定表中的特定列设置访问权限。例如:
- 您的 营销团队 可以看到
customer_name和email,但看不到credit_card_number。 - 您的 合规团队 可以看到所有列。
- 您的 外部承包商 只能看到匿名化的、聚合后的数据。
在处理个人信息时,这种细粒度的控制至关重要。与其为不同列隐藏方式创建大量相同数据的副本(既繁琐又昂贵),不如一次定义访问规则,由 Lake Formation 自动执行。
注意: 您可以尝试使用 S3 桶策略来实现此功能,但很快会变得难以管理。每次添加新用户、角色或数据集时,都必须手动在多个位置更新策略。Lake Formation 将所有内容集中在一个地方进行管理。
实际场景示例
场景 1:医疗数据
一家医院在数据湖中存储患者信息。
- 医生 需要完整的病史访问权限。
- 财务人员 只应看到保险和付款细节。
- 研究人员 研究健康趋势时只能使用匿名化数据,且不得看到任何个人身份信息。
使用 Lake Formation,您只需设置一次这些规则。系统会自动强制执行,无论用户是通过 Athena、Redshift Spectrum 还是其他已连接的工具访问数据。
场景 2:电子商务平台
一家线上商店希望研究购买习惯。
- 营销团队 可以查看客户人口统计和购买类型,但不能查看具体价格(价格信息保留给财务团队)。
- 数据科学家 构建机器学习模型时需要交易模式,但不需要客户姓名。
Lake Formation 让您创建与业务需求完全匹配的基于角色的策略。
场景 3:监管合规
如果您位于欧盟,GDPR 要求对个人数据进行严格控制。
Lake Formation 提供审计就绪的日志,记录谁在何时访问了哪些数据,简化审计期间的合规检查。
## 关于作者
作为一名 **AWS Community Builder**,我喜欢通过自己的经验和活动分享所学,并乐于帮助他人在成长道路上。如果您觉得这有帮助或有任何问题,欢迎随时联系!🚀
🔗 **在 LinkedIn 上与我联系**
## 参考文献
- **事件:** AWS Community Day Bangalore 2025
- **主题:** *在数据湖中保护个人身份信息:AWS Lake Formation 访问控制*
- **日期:** 2025年5月23日
- **地点:** [Conrad Bengaluru](https://www.hilton.com/en/hotels/blrkrci-conrad-bengaluru/hotel-location/?WT.mc_id=zPADA0IN1CH2PSH3paid_ggl4DOMBPP_Apr5SiteGGL_ObjROAS_TacBPP_TarKeyword_SMIN_FrmtRSAs_CrNText_DvceAll_LPOHW6BLRKRCI7EN8acctid=9094736915-campid=16903767109-adgrpid=135963230375)
## 也发布于
- [AWS Builder Center](https://builder.aws.com/content/37FRSfJBVN28NpXDcfhgijdg2GG/securing-pii-in-data-lakes-aws-lake-formation-access-control)
- [Hashnode](https://devopstour.hashnode.dev/securing-pii-in-data-lakes-aws-lake-formation-access-control)