在数据湖中保护PII:AWS Lake Formation 访问控制

发布: (2025年12月23日 GMT+8 21:47)
15 分钟阅读
原文: Dev.to

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 的核心优势

  1. 细粒度访问控制

    • 列级别权限:可以对特定列(如 ssnemail)设置 SELECTDENY 权限。
    • 行级别过滤(LF‑Tag):通过标签实现基于行的过滤,例如只允许某地区的用户查看该地区的数据。
  2. 统一的元数据管理

    • Lake Formation 将 Glue Data Catalog 与权限模型统一管理,避免权限碎片化。
  3. 自动化数据注册

    • 使用 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 注册数据湖

  1. 登录 AWS Lake Formation 控制台
  2. 选择 “Data lake locations” → “Add location”,指向包含上述 JSON 文件的 S3 前缀。
  3. 勾选 “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 名称
PIITRUE
NON_PIITRUE
  • EmailSSN 列打上 PII=TRUE 标签。
  • 为其他列打上 NON_PII=TRUE 标签。

步骤 5:授予角色/用户权限

假设有两个 IAM 角色:

  • DataAnalystRole:只能访问非 PII 列。
  • DataScientistRole:需要访问全部列(包括 PII)。

Lake Formation → Permissions 中:

主体 (Principal)数据库/表列标签权限
DataAnalystRolepii_db.customer_infoNON_PII=TRUESELECT
DataAnalystRolepii_db.customer_infoPII=TRUEDENY
DataScientistRolepii_db.customer_info*SELECT

提示:Lake Formation 会自动在查询时注入 行级过滤(如果你为 Country 列添加了相应的标签),从而只返回被授权的行。

步骤 6:在 Athena 中验证权限

-- 使用 DataAnalystRole 运行
SELECT * FROM pii_db.customer_info LIMIT 10;

返回结果仅包含 UserId、FirstName、LastName、Country 四列,EmailSSN 被过滤掉。

-- 使用 DataScientistRole 运行
SELECT * FROM pii_db.customer_info LIMIT 10;

返回所有列,证明权限配置生效。


常见最佳实践

实践说明
最小权限原则只授予用户完成工作所需的最小列/行权限。
标签统一管理使用统一的 LF‑Tag 体系,避免同一列出现多个冲突标签。
审计日志开启 AWS CloudTrailLake Formation audit logs,实时监控谁在何时访问了哪些 PII。
数据加密在 S3 层面启用 SSE‑S3SSE‑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 permission model

Lake Formation 提供了一个 统一的地点 来定义跨整个数据湖的权限。会议中展示的幻灯片清晰地说明了这一工作流。

权限流程

  1. 管理员设置权限 – 在数据库、表、列、行甚至单元格级别授予权限,并在 Lake Formation 中注册资源。
  2. 用户查询数据 – 用户(例如通过 Amazon Athena)使用临时凭证发送查询。
  3. Lake Formation 检查元数据 – 查询 AWS Glue Data Catalog 获取表定义。
  4. 验证权限 – Lake Formation 确认用户角色是否被允许访问请求的数据。
  5. 发放凭证 – 若授权成功,颁发临时 S3 凭证。
  6. 检索数据 – 用户即可从存储桶读取数据。

双层保护

Lake Formation 在 两层 同时强制权限:

  • 元数据层 – 通过 AWS Glue Data Catalog 控制。
  • 存储层 – 通过为 Amazon S3 访问发放凭证进行控制。

这种双层方式确保即使一层被绕过,另一层仍能阻止未授权的数据访问。

数据库级别 vs. 表级别权限

Database vs. Table permissions

  • 数据库级别 – 授予

访问数据库中的所有表。

  • Table‑level – 授予对特定表、列或行的访问权限,实现细粒度控制。

要点

  • Lake Formation 通过提供统一的细粒度权限模型,简化了对 PII(个人身份信息)和其他敏感数据的管理。
  • 基于角色的访问 让您能够在团队和使用场景中实施最小特权原则。
  • 两层安全(元数据 + 存储)为防止意外或恶意的数据泄露提供了强大的安全网。

如果您正在 AWS 上构建或改造数据湖,加入 Lake Formation 的访问层是不可忽视的最佳实践。

![AWS Lake Formation Overview](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i51gmsiv2fg17i8hmle.jpeg)

数据库级别权限

这些是覆盖整个数据库的广泛权限。您可以授予某人:

  • SELECT – 从所有表读取数据
  • INSERT – 添加新记录
  • DELETE – 删除记录
  • ALTER – 修改表结构
  • SUPER – 完全的管理权限,包括向其他人授予权限的能力

Source:

表级列访问控制

Lake Formation 在这方面表现尤为出色。您可以为特定表中的特定列设置访问权限。例如:

  • 您的 营销团队 可以看到 customer_nameemail,但看不到 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)
Back to Blog

相关文章

阅读更多 »