在将数据加载到 Amazon OpenSearch 服务之前,使用 AWS Glue 检测、屏蔽和删

在 AWS Glue 中检测、屏蔽和删除 PII 数据,然后加载到 Amazon OpenSearch 服务

主要重点

讨论如何使用 AWS Glue 检测、屏蔽和删除个人识别信息PII数据。展示高级架构以及此流程的具体案例,以快速扩展数据平台而不增加开发负担。提出进行合规性管理的必要性,确保数据隐私法律的遵从。

在不断扩展的数据处理工作中,许多大小企业都在努力将其分析工作负载迁移并现代化至 AWS 平台。客户选择迁移到 AWS 的主要原因之一是能够使用全管理服务,这样可以节省维护基础架构的时间,包括打补丁、监控和备份等。这样一来,领导层和开发团队便可专注于优化当前解决方案,甚至探索新的用例,而不必花时间处理现有基础设施。

随著 AWS 上的快速发展,对于数据的管理和处理负责任地显得尤为重要,这包括遵循数据隐私法律,防止存储或暴露像个人识别信息PII或受保护健康信息PHI等敏感数据。在本文中,我们将介绍一个高级架构和具体案例,展示如何在不增加大量开发时间的情况下,继续扩展组织的数据平台。我们将使用 AWS Glue 来检测、屏蔽和删除 PII 数据,然后将其加载到 Amazon OpenSearch 服务。

解决方案概述

下图展示了高级解决方案架构。我们根据AWS WellArchitected Framework Data Analytics Lens定义了设计中的所有层级和组件。

该架构由多个组件组成:

资料来源

数据可能来自数十到数百个来源,包括数据库、文件传输、日志、SaaS 应用程序等。组织不一定能控制通过这些渠道导入的数据。

数据摄取:数据湖的批次处理、微批次和流式处理

许多组织通过各种方式将源数据导入数据湖,包括批次、微批次和流式处理作业。例如,Amazon EMR、AWS Glue、和 AWS Database Migration ServiceAWS DMS都可用于执行批量或流式操作,让数据汇入 Amazon Simple Storage Service Amazon S3中的数据湖。Amazon AppFlow 可用于从不同的 SaaS 应用程序转移数据到数据湖。AWS DataSync 和AWS Transfer Family可帮助通过多种协议移动文件到和从数据湖。Amazon Kinesis 和 Amazon MSK 也有直接将数据流输入到 Amazon S3 数据湖的能力。

在将数据加载到 Amazon OpenSearch 服务之前,使用 AWS Glue 检测、屏蔽和删

S3 数据湖

使用 Amazon S3 作为数据湖符合现代数据策略。它提供低成本存储,同时不妨碍性能、可靠性或可用性。这样可以根据需要将计算资源带到数据中,并仅为执行所需的容量付费。

在这种架构中,原始数据可以来自多个来源内部和外部,这可能包含敏感数据。

通过使用 AWS Glue 爬虫,我们可以发现和编目数据,进而生成表结构,最终使得使用 AWS Glue ETL 进行 PII 转换来检测和屏蔽或删除可能已经进入数据湖的敏感数据变得简单易行。

商业背景和数据集

为了展示我们的方案的价值,假设您是一家金融服务组织的数据工程团队的一员。您的要求是能够在数据进入组织的云环境时检测和屏蔽敏感数据。该数据将由下游分析过程消耗。未来,用户将能够安全地根据从内部银行系统收集的数据流来搜索历史支付交易。操作团队、客户和接口应用程序的搜索结果必须在敏感字段上进行屏蔽。

以下表格展示了解决方案所使用的数据结构。为了便于理解,我们将原始数据列与策划后的列进行了对应。您会注意到,该模式中有多个字段视为敏感数据,如名字、姓氏、社会安全号码SSN、地址、信用卡号、电话号码、电子邮件和 IPv4 地址。

原始列名称策划后列名称类型c0firstnamestringc1lastnamestringc2ssnstringc3addressstringc4postcodestringc5countrystringc6purchasesitestringc7creditcardnumberstringc8creditcardproviderstringc9currencystringc10purchasevalueintegerc11transactiondatedatec12phonenumberstringc13emailstringc14ipv4string

用例:在加载到 OpenSearch 服务之前批量检测 PII

实施以下架构的客户已经在 Amazon S3 上构建了其数据湖,进行不同类型的扩展分析。该解决方案适用于不需要实时进入 OpenSearch 服务的客户,并计划使用在计划内运行或通过事件触发的数据集成工具。

在数据记录进入 Amazon S3 之前,我们实施了一个摄取层,确保所有数据流可靠且安全地导入数据湖。Kinesis Data Streams 被部署作为加速结构化和半结构化数据流的摄取层。这些流的例子包括关联数据库的变更、应用程序、系统日志或点击流。对于更改数据捕获CDC用例,您可以将 Kinesis Data Streams 作为 AWS DMS 的目标。生成包含敏感数据的流的应用程序或系统可以通过 Amazon Kinesis Agent、AWS SDK for Java 或 Kinesis Producer Library 将其发送到 Kinesis 数据流。最后,Amazon Kinesis Data Firehose 帮助我们可靠地将几乎即时的批次数据加载到我们的 S3 数据湖目标中。

下图显示了数据如何通过 Kinesis Data Streams 流转,并从原始 S3 前缀检索样本数据。对于这个架构,我们遵循了 数据湖基础 中对 S3 前缀的数据生命周期建议。

在接下来的截图中,您可以看到第一条记录的详细信息,JSON 载荷遵循前面部分的相同模式。您可以看到未经过滤的数据流入 Kinesis 数据流,这些数据将在后续阶段被混淆。

在将数据收集并送入 Kinesis Data Streams 后,并通过 Kinesis Data Firehose 传送至 S3 存储桶后,架构的处理层接管了任务。我们使用 AWS Glue PII 转换来自动检测和屏蔽管道中的敏感数据。如下图所示,我们采用无代码的可视化 ETL 方法在 AWS Glue Studio 中实现了转换作业。

首先,我们从 piidatadb 数据库访问源数据目录表。该表具有先前部分展示的结构。我们使用作业书签来跟踪原始处理数据。

我们在 AWS Glue Studio 可视化 ETL 作业中,利用 AWS Glue DataBrew 食谱 来将两个日期属性转换为 OpenSearch 所期望的格式。这使我们可以完全无代码操作。

我们使用检测 PII操作来识别敏感栏位。根据所选模式、检测阈值和数据集的样本行,让 AWS Glue 自动判断。举例来说,我们使用适用于美国的模式如社会安全号码可能无法检测出其他国家的敏感数据。您可以查看与您用例相关的可用类别和位置,或使用正则表达式regex在 AWS Glue 中创建敏感数据的检测实体。

选择 AWS Glue 提供的正确抽样方法是非常关键的。在这个例子中,流入的数据已知包含敏感数据,因此不需要对数据集中的 100 行进行抽样。若您要求不能让任何敏感数据进入下游源,考虑抽样 100 数据,或扫描整个数据集并对每个单独的储存格进行操作,以确保检测到所有敏感数据。采样的好处是降低了成本,因为您无需扫描这么多数据。

检测 PII操作可以让您选择屏蔽敏感数据时使用的默认字符串。在我们的例子中,我们使用字符串 。

我们使用应用映射操作来重命名并删除不必要的列,例如 ingestionyear、ingestionmonth 和 ingestionday。这一步还使我们可以将其中一个列的数据类型purchasevalue从字符串转换为整数。

从这一点起,作业将分为两个输出目的地:OpenSearch 服务和 Amazon S3。

我们提供的 OpenSearch 服务集群通过 OpenSearch 内置连接器连接。我们指定要写入的 OpenSearch 索引,连接器自动处理凭证、域名和端口。以下截图展示了我们写入指定索引 indexospii的过程。

我们将屏蔽后的数据集存储在策划的 S3 前缀中。在这里,我们有数据经过标准化,适合数据科学家或随需报告需求的安全消费。

为了实现统一治理、访问控制以及所有数据集和数据目录表的审计跟踪,您可以使用 AWS Lake Formation。该服务可帮助您限制对 AWS Glue 数据目录表和基础数据的访问,仅允许被授予必要权限的用户和角色进行操作。

飞兔视频加速器

在批量作业成功运行后,您可以使用 OpenSearch 服务进行搜索查询或报告。如下图所示,该管道自动屏蔽了敏感字段,几乎没有编码开发工作。

您可以根据每日的交易量,过滤特定信用卡提供商,以识别运营数据中的趋势,如上图所示。您还可以确定用户进行购买时的位置和域名。transactiondate 属性有助于我们看到随时间变化的趋势。以下截图展示了适当屏蔽的交易信息记录。

![遮挡的 JSON 数据](https//d2908q01vomqb2cloudfrontnet/b6692ea5