AWS Architecture Blog

Automate custom PII detection at scale with Amazon Macie and Step Functions

8.5内容质量
Automate custom PII detection at scale with Amazon Macie and Step Functions

TL;DR · AI 摘要

AWS官方博客展示如何用Macie和Step Functions实现自动化PII检测,满足GDPR/HIPAA等合规要求。

核心要点

  • 使用Amazon EventBridge触发Step Functions工作流实现零人工干预的PII扫描
  • 通过自定义数据标识符扩展Macie的检测能力,支持组织特有敏感数据类型
  • 采用三存储桶架构确保数据血缘追踪,生成CSV/JSON格式的合规审计报告

结构提纲

按章节快速跳转。

  1. 介绍金融、医疗等行业在处理PII数据时面临的合规挑战及自动化需求

  2. 基于EventBridgeStep Functions构建事件驱动的自动化检测流水线

  3. 详细说明S3三存储桶模式与Macie自定义标识符的集成方案

  4. 分阶段说明从对象上传到报告生成的完整处理流程

  5. 描述生成CSV/JSON格式审计报告的具体实现方式

  6. 通过SNS实现实时高风险数据发现通知的自动化处理

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 自动化PII检测架构
    • 核心组件
      • EventBridge触发机制
      • Step Functions工作流
    • 数据处理流程
      • S3三存储桶模式
      • Macie扫描引擎
    • 合规输出
      • CSV/JSON报告
      • SNS实时告警

金句 / Highlights

值得收藏与分享的关键句。

#AWS#数据合规#PII检测#Step Functions#Macie
打开原文

使用 Amazon Macie 和 Step Functions 大规模自动化自定义 PII 检测 | AWS 架构博客

使用 Amazon Macie 和 Step Functions 大规模自动化自定义 PII 检测

金融、保险、医疗和政府等受监管行业的企业会处理大量包含个人身份信息(PII)的数据。您的应用程序、理赔处理系统、合作伙伴数据馈送和内部工作流程生成的文件可能包含姓名、地址、社会安全号码以及特定于组织的标识符(如保单号码、会员 ID 和医疗记录号码)。

识别和分类这些敏感数据是合规的必然要求。GDPRHIPAA、CCPA 和 PCI DSS 等法规要求您了解 PII 的存储位置、谁可以访问它以及如何保护它。手动分类无法扩展。虽然 Amazon Macie 提供了托管的敏感数据发现功能,但某些格式可能无法被标准检测引擎默认识别。您可以使用专属于您业务的自定义标识符来扩展检测能力。

在本文中,您将学习如何构建和部署一个事件驱动的管道,该管道可在文件到达 Amazon Simple Storage Service(Amazon S3)的瞬间自动检测 PII。然后,该管道通过整合您自己的自定义标识符,超越 Macie 内置的托管数据标识符,能够检测标准 PII 以及特定于组织的敏感数据类型。

解决方案概述

该解决方案使用 Amazon EventBridge 触发 AWS Step Functions 工作流,该工作流协调 Macie 分类任务(包括自定义数据标识符),并生成零人工干预的合规报告。当每个文件上传到 Amazon S3 时,管道会自动调用 Macie,使用内置和自定义数据标识符扫描文件,检测标准和特定于组织的 PII,无需人工干预。然后,它以 CSV 和 JSON 格式生成带有完整时间戳的审计就绪报告,为您的合规团队提供所需的文档。对于高严重性发现,管道会通过 Amazon Simple Notification Service(Amazon SNS)发布实时通知,使安全团队能够立即响应。为在整个过程中保持清晰的数据血缘关系,架构实现了三存储桶模式。这有助于根据处理状态隔离对象,并确保未扫描的数据永远不会与已验证的数据混合。

架构

该管道基于以下 AWS 服务构建的事件驱动架构:

  • Amazon S3 – 存储层,通过三个存储桶组织数据,每个存储桶代表不同的处理状态:原始数据、暂存数据和已扫描数据。
  • Amazon EventBridge – 检测新对象上传并自动触发工作流,无需轮询。
  • AWS Step Functions – 协调整个扫描生命周期,从任务创建到报告生成的每个步骤。
  • Amazon Macie – 检测 PII,使用内置和自定义数据标识符扫描对象中的敏感数据。
  • AWS Lambda – 在协调步骤之间提供计算逻辑,包括启动 Macie 分类任务、轮询任务状态、解析发现结果、生成报告以及在存储桶之间移动对象。
  • Amazon SNS – 传递实时警报,当检测到高严重性发现时通知您的团队。

下图展示了使用上述服务的解决方案架构概览。

图1 — 架构概述

多个设计决策塑造了该架构。该流水线为每个对象创建专用的Macie分类任务,而非进行批处理,这使得在数据摄入时能够实现实时PII检测。前面提到的三存储桶模式将未处理数据与已验证数据隔离,暂存存储桶配置为自动过期对象。Step Functions协调工作流,利用内置的重试逻辑和等待状态来处理Macie中的异步任务执行。自定义数据标识符扩展了Macie的检测能力,使其能够覆盖组织特有的领域特定模式。最后,Amazon EventBridge触发流水线,而非使用S3原生事件通知,提供高级过滤、多目标支持和跨账户路由功能。

演示步骤

在本节中,您将部署并配置自动化PII检测流水线。

先决条件

  • 具有管理权限的沙盒或非生产AWS账户。
  • 已安装并配置AWS命令行界面(AWS CLI) v2。
  • 目标AWS区域中已启用Amazon Macie。
  • 用于高严重性通知的有效电子邮件地址。

步骤1:部署AWS CloudFormation堆栈

通过此示例CloudFormation模板下载并部署完整解决方案。

#### 选项A:使用AWS CLI

code
aws cloudformation deploy \
  --template-file deployment/templates/macie_complete_solution.yaml \
  --stack-name macie-pii-pipeline \
  --parameter-overrides BucketNamePrefix=macie-pii-pipeline \
  NotificationEmail=security-team@example.com \
  --capabilities CAPABILITY_IAM --region us-east-1

#### 选项B:使用AWS管理控制台

  • 导航至AWS CloudFormation控制台。
  • 选择创建堆栈 > 使用新资源(标准)。
  • 上传模板,填写参数并提交。

✓ 预期结果:堆栈在3到5分钟后达到CREATE_COMPLETE状态。

下图显示了示例创建堆栈参数和配置:

图2 — CloudFormation控制台显示创建堆栈配置页面

步骤2:确认Amazon SNS订阅

打开确认邮件并选择确认订阅。

✓ 预期结果:订阅在Amazon SNS控制台显示为已确认,如下图所示

图3 — Amazon SNS已确认订阅

步骤3:配置自定义数据标识符

堆栈会自动从部署期间提供的CustomIdentifierPatterns参数中创建自定义数据标识符。在Macie控制台中验证它们是否存在。

code
[{"name":"PolicyID","regex":"POL-[0-9]{6,10}"},
{"name":"MemberID","regex":"MEM-[A-Z]{2}[0-9]{6}"}]

✓ 预期结果:自定义标识符如以下图像所示出现在Macie控制台

图4 — Macie控制台中的自定义数据标识符

步骤4:测试流水线

  • 使用AWS CLI或控制台将示例文件上传到原始存储桶。
code
aws s3 cp test-file-with-pii.csv s3://macie-pii-pipeline-<ACCOUNT_ID>-raw/

✓ 预期结果:Step Functions执行在几秒内启动。

下图显示测试文件已复制到S3存储桶:

图5 — 上传到原始存储桶的测试文件

#### 监控流水线进度

在Step Functions控制台 > 选择状态机 > 查看运行操作。

注意:底层的 Macie 任务可能需要一些时间才能完成。扫描时间因任务而异。被扫描数据的数量和类型、压缩方式以及使用的数据标识符数量都会影响任务运行时间。本文示例中,任务大约需要 15-20 分钟完成。作为最佳实践,建议启用 S3 AWS CloudTrail 数据事件日志以审计 PII 管道。

✓ 预期结果:图形检查器显示活动状态为蓝色,完成状态为绿色。

图 6 — Step Functions 管道

图 7 — Step Functions 图形检查器

Step Functions 状态机通过五个顺序状态协调端到端扫描工作流。首先,TriggerScan 将新上传的对象复制到暂存存储桶,并创建一个针对该暂存数据的 Macie 分类任务。任务提交后,工作流进入 WaitForMacie 状态,暂停执行 60 秒以允许分类任务处理。接下来,CheckStatus 轮询 Macie DescribeClassificationJob API 以确定任务是否完成。任务完成后,GetFindings 会检索分类结果,生成详细报告,并向 Amazon SNS 主题发布通知供下游消费者使用。最后,MoveFiles 将原始对象从原始存储桶移动到永久扫描数据存储位置,并清理暂存副本。

#### 验证报告

code
aws s3 ls s3://macie-pii-pipeline-<ACCOUNT_ID>-scanned/reports/

✓ 预期结果:每个扫描生成两个带时间戳的文件(CSV + JSON),如以下图像所示

图 8 — 扫描存储桶中的报告

接下来,Amazon SNS 向目标接收者触发通知电子邮件。下图显示了通知的示例。

图 9 — Amazon SNS 通知电子邮件

第 5 步:检查数据流

原始存储桶 → 暂存存储桶 → 扫描存储桶

  • 原始存储桶 – 处理完成后文件被移除(已启用版本控制)。
  • 暂存存储桶 – 七天后自动过期。
  • 扫描存储桶 – 包含处理后的文件和报告。

以下图像展示了本操作指南创建的三个示例存储桶。

图 10 — 执行后的三存储桶状态

生产环境部署的加固措施

  • 对于多租户环境,为每个租户使用独立的 BucketNamePrefix 部署单独的堆栈,以保持严格的数据隔离。
  • 通过传递 KmsKeyArn 参数,启用 Amazon S3 存储桶默认加密(默认使用 SSE-S3 或客户管理的 AWS KMS 密钥)。
  • 为跨多个账户的数据源配置跨账户 Amazon EventBridge 规则。
  • 注意 Macie 自定义数据标识符配额:每个账户最多 10,000 个,但每个分类任务最多 30 个。如需更多标识符,可将它们分配到多个任务中。
  • 对于高吞吐量工作负载,将多个对象批量放入单个 Macie 分类任务中,以减少 API 开销并遵守 CreateClassificationJob 限流规则(每秒 0.1 个请求,即每 10 秒一个任务)。详见 Macie 配额。
  • 启用 Amazon S3 AWS CloudTrail 事件,以记录管道中每个对象访问和移动的完整审计轨迹。
  • 启用 Amazon SNS 数据加密(使用 SSE-KMS)。

扩展此解决方案

  • 数据湖集成 – 将 JSON 分析结果路由到 Amazon Athena 或 AWS Glue 进行趋势分析。使用 Amazon QuickSight 构建 PII 密度可视化仪表板。
  • 修复工作流程 – 通过向 Step Functions 添加修复分支来隔离文件或撤销访问权限,当检测到高严重性 PII 时触发该分支。
  • 多账户环境 – 使用 AWS Organizations 和 Amazon EventBridge 跨账户规则,在专用的安全账户中集中扫描。
  • 增强的安全态势 – 将发现结果发布到 AWS Security Hub 以实现统一的安全态势管理。
  • 高吞吐量批量处理 – 修改触发扫描功能,将对象批量合并到单个 Macie 任务中,实现大规模成本优化。

清理资源

为避免持续计费,请删除此方案创建的所有资源:

  • 清空由堆栈创建的所有 S3 存储桶。CloudFormation 无法删除非空存储桶。

aws s3 rm s3://macie-pii-pipeline-<ACCOUNT_ID>-raw --recursive aws s3 rm s3://macie-pii-pipeline-<ACCOUNT_ID>-stage --recursive aws s3 rm s3://macie-pii-pipeline-<ACCOUNT_ID>-scanned --recursive aws s3 rm s3://macie-pii-pipeline-<ACCOUNT_ID>-access-logs --recursive

  • 删除 CloudFormation 堆栈。

aws cloudformation delete-stack --stack-name macie-pii-pipeline --region us-east-1

  • 等待堆栈删除完成。

aws cloudformation wait stack-delete-complete --stack-name macie-pii-pipeline --region us-east-1

  • Amazon S3 存储桶使用 DeletionPolicy: Retain 策略防止自动删除。需手动删除保留的存储桶。

aws s3 rb s3://macie-pii-pipeline-<ACCOUNT_ID>-raw aws s3 rb s3://macie-pii-pipeline-<ACCOUNT_ID>-stage aws s3 rb s3://macie-pii-pipeline-<ACCOUNT_ID>-scanned aws s3 rb s3://macie-pii-pipeline-<ACCOUNT_ID>-access-logs

  • 如果不再需要,禁用 Macie(可选)。

aws macie2 disable-macie --region us-east-1

结论

在本文中,我们演示了如何构建一个事件驱动的管道,自动检测上传到 Amazon S3 的文件中的 PII。通过将 Macie 的托管分类与自定义数据标识符结合,由 AWS Step Functions 编排,并通过 Amazon EventBridge 实时触发,该解决方案无需人工干预即可检测标准和领域特定的敏感数据。该管道可在几秒内响应 S3 存储桶上传,对每个对象执行完整的扫描生命周期,生成带时间戳的 CSV 和 JSON 报告以满足合规要求,并在检测到高严重性发现时发送实时 Amazon SNS 通知。

入门指南

要在您自己的环境中部署此方案,请克隆 GitHub 仓库,并按照 README 中的逐步部署说明操作。这是一个非生产环境的示例代码,未包含列出的加固措施。您可以通过添加自定义数据标识符来扩展管道以支持组织特有的数据格式,配置跨账户的 Amazon EventBridge 规则以支持多账户环境,或按 Macie 任务批量处理对象以优化高吞吐量工作负载。

如需了解更多内容,请查阅 Amazon Macie 文档以了解额外的检测功能,探索 AWS Step Functions 的生产级错误处理最佳实践,并访问 AWS Security 博客了解更多的数据保护模式。

作者简介

'"`