当前位置: 首页 > news >正文

无需代码!用 Amazon Glue 实现 PostgreSQL 数据复制与 PII 脱敏

无需代码!用 Amazon Glue 实现 PostgreSQL 数据复制与 PII 脱敏

在企业数据管理中,将生产库数据同步到测试或分析环境时,如何兼顾效率与数据安全一直是难题。人工处理不仅耗时,还容易出现敏感信息泄露风险。而 Amazon Glue Studio 提供的低代码解决方案,能完美解决这一问题 —— 无需编写复杂脚本,通过可视化操作就能完成数据复制与个人身份信息(PII)脱敏。本文将详细介绍如何基于 Amazon Glue 构建这一流程,附关键配置步骤与验证方法。

一、方案背景与核心价值

1. 常见痛点

  • 合规风险:生产数据库中的姓名、邮箱、手机号等 PII 数据若直接复制,会违反 GDPR、CCPA 等法规要求。

  • 效率低下:人工脱敏需编写大量 SQL 或 Python 脚本,且跨账户、跨 VPC 的数据传输配置复杂。

  • 运维负担:传统 ETL 工具需手动管理服务器、监控作业,占用过多运维资源。

2. Amazon Glue 解决方案优势

  • 零代码 / 低代码:通过可视化编辑器拖拽组件,无需编写 ETL 脚本。

  • 自动化运维:Amazon Glue 自动处理资源分配、作业监控与重试,无需管理底层基础设施。

  • 跨账户支持:支持多亚马逊云科技账户间数据传输,符合企业资源隔离最佳实践。

  • 灵活脱敏规则:内置 PII 检测功能,可自定义脱敏策略(如手机号替换、邮箱掩码)。

img

二、方案架构解析

本方案基于3个亚马逊云科技账户实现,分别承担不同角色,确保数据隔离与权限管控:

首先需要创建注册并登录亚马逊云科技账号:亚马逊云科技官网

亚马逊云科技近期推出了全新免费套餐(Free Tier 2.0),可以帮助开发者/企业用户更低成本、更轻松地上手云服务,新账户注册可领 $100 美元抵扣金,完成 5 个入门任务,每完成一项额外奖励 $20,最高再拿 $100,总抵扣金达 200 美元

与旧版本对比,其优势如下,不过需要注意的是仅在海外区域可用哦(北京与宁夏为中国区域,其他为海外区域)

Free Tier 2.0(现行)Legacy Free Tier(旧版)
账户与支付支持银联信用卡注册账户与人民币支付,无需外币信用卡。(2月份开始支持银联信用卡)
免费形态账户分为两种计划:免费计划(确保 0 元,最长 6 个月或抵扣金用完)与付费计划(所有服务全量访问)。两种计划内均包括服务抵扣金,短期免费试用服务和永久免费服务。三类优惠:Trials(短期试用)/ 12 个月免费 / 永久免费;到期或超额后按需计费。
金额机制新用户最高 $200 AWS 抵扣金:注册 $100,完成 EC2/RDS/Lambda/Bedrock/Budgets 5个任务再得 $100。以按服务配额为主(按月清零、不可跨服务挪用),没用到的配额会浪费。
误扣风险免费计划不扣费(除非自愿升级),剩余抵扣金升级后在自注册起 12 个月内仍可用于合规服务。容易因超出某服务配额而进入计费;新手对“超限”不敏感。
特点专而深:抵扣金可集中投向你的刚需服务(示例:EC2 指定实例族、RDS、Lambda、Bedrock 等)。广而浅:配额分布在很多服务,用不到的等于浪费,刚需服务的免费量相对有限。

核心流程

  1. 源账户 RDS 数据库通过 VPC 对等连接向 Glue 账户开放访问。

  2. Glue Crawler 自动爬取源库与目标库元数据,同步到 Data Catalog。

  3. Glue ETL 作业提取源库数据,通过内置函数脱敏 PII 字段。

  4. 脱敏后的数据加载到目标账户 RDS 数据库。

  5. 验证目标库数据,确认脱敏效果。

账户类型核心功能关键资源
源账户(Source Account)存储生产数据Amazon RDS for PostgreSQL(含 PII 数据)、私有子网、安全组
目标账户(Target Account)接收脱敏后数据Amazon RDS for PostgreSQL(空表,结构与源库一致)、私有子网
Glue 账户(Glue Account)执行 ETL 作业Amazon Glue Studio、Glue Crawler、Data Catalog、S3 端点

三、前置准备:环境配置

在开始构建 ETL 作业前,需完成以下基础配置,确保各账户间网络互通、权限合规。

img

1. 账户与资源清单

资源类型配置要求示例值
源账户 RDSPostgreSQL 13.14-R1,私有子网,表结构含 PII 字段(last_name、email 等)VPC:10.1.0.0/16,子网:10.1.10.0/24
目标账户 RDS与源库表结构完全一致,初始为空VPC:10.2.0.0/16,子网:10.2.10.0/24
Glue 账户 VPC含私有子网、自引用安全组(允许所有 TCP 端口入站)VPC:10.3.0.0/16,安全组:sg-0f(自引用规则)
IAM 角色Glue 账户需具备 RDS 访问、S3 读写权限角色名:AWSGlueServiceRole-DataSync
S3 端点Glue 账户 VPC 需创建 S3 端点,用于存储 ETL 脚本端点类型:Gateway,关联 Glue 子网路由表

2. 关键 SQL:创建测试表与数据

源账户 RDS中执行以下 SQL,创建含 PII 数据的客户表(目标账户 RDS 执行相同表结构,无需插入数据):

\-- 1. 创建模式(Schema)CREATE SCHEMA cx;\-- 2. 创建客户表(含PII字段)CREATE TABLE cx.customer (    id INT PRIMARY KEY,    first\_name VARCHAR(50),    last\_name VARCHAR(50), -- PII字段:姓氏    email VARCHAR(100),    -- PII字段:邮箱    phone\_number VARCHAR(20), -- PII字段:手机号    address VARCHAR(200),    ssn VARCHAR(20),      -- PII字段:社保号    notes TEXT            -- PII字段:备注(可能含邮箱/手机号));\-- 3. 插入测试数据INSERT INTO cx.customer (id, first\_name, last\_name, email, phone\_number, address, ssn, notes)VALUES (1, 'Kwaku', 'Mensah', 'kwaku\_mensah@email.com', '646-555-0100', '123 Main St, Anytown, USA', '123-45-6789', 'Bought \$5K in products in 2021. Email: juan\_li@email.com'),(2, 'Jane', 'Doe', 'janedoe@email.com', '555-555-0101', '123 Oak Rd, Anytown, USA', '987-65-4321', 'Spent \$8K last 2 years. Call 555-555-0199 for offers');

3. 网络打通:VPC 对等连接配置

为实现 Glue 账户访问源 / 目标账户 RDS,需建立 VPC 对等连接,步骤如下:

  1. 创建对等连接:在 Glue 账户 VPC 控制台,分别创建与源账户、目标账户 VPC 的对等连接(请求方:Glue 账户,接受方:源 / 目标账户)。

  2. 启用 DNS 解析:在 Glue 账户对等连接设置中,勾选 “启用 DNS 解析”,确保 Glue 能解析 RDS 私有域名。

  3. 更新路由表

  • Glue 账户路由表:添加源账户 VPC(10.1.0.0/16)和目标账户 VPC(10.2.0.0/16)的路由,下一跳为对等连接 ID。

  • 源 / 目标账户路由表:添加 Glue 账户 VPC(10.3.0.0/16)的路由,下一跳为对等连接 ID。

  1. 安全组授权:在源 / 目标账户 RDS 安全组中,添加入站规则:类型 = PostgreSQL(端口 5432),源 = Glue 账户安全组 ID(如 sg-0f)。

四、核心步骤:构建 Glue ETL 作业

1. 步骤 1:创建 Glue 连接(打通 RDS 访问)

Glue 账户控制台操作,为源库和目标库分别创建 JDBC 连接:

img

  1. 进入 Amazon Glue > 数据连接 > 创建连接。

  2. 选择 “JDBC” 作为数据源,配置如下:

  • 源库连接

    • 名称:Source DB Connection-Postgresql

    • JDBC URL:jdbc:postgresql://源RDS端点:5432/sourcedb(sourcedb 为源库名)

    • 用户名 / 密码:源 RDS 数据库 credentials

    • 网络选项:选择 Glue 账户 VPC、私有子网、自引用安全组(sg-0f)

  • 目标库连接

    • 名称:Target DB Connection-Postgresql

    • JDBC URL:jdbc:postgresql://目标RDS端点:5432/targetdb(targetdb 为目标库名)

    • 其他配置与源库连接一致。

img

2. 步骤 2:创建 Glue Crawler(同步元数据)

Crawler 用于自动爬取 RDS 表结构,将元数据写入 Data Catalog,避免手动定义 Schema:

  1. 进入 Amazon Glue > 爬虫 > 创建爬虫。

  2. 源库爬虫配置

  • 名称:Source PostgreSQL database crawler

  • 数据源:选择 “JDBC”,连接 = Source DB Connection-Postgresql,包含路径 =sourcedb/cx/%(sourcedb = 源库名,cx = 模式名)。

  • IAM 角色:选择前置准备的 AWSGlueServiceRole-DataSync。

  • 输出数据库:创建新数据库sourcedb-postgresql(用于存储源库元数据)。

img

  1. 目标库爬虫配置
  • 名称:Target PostgreSQL database crawler

  • 数据源:连接 = Target DB Connection-Postgresql,包含路径 =targetdb/cx/%

  • 输出数据库:创建新数据库targetdb-postgresql

  1. 运行爬虫:选择两个爬虫,点击 “运行”,完成后在 Data Catalog 中可查看同步的表(如 sourcedb_cx_customer、targetdb_cx_customer)。

img

3. 步骤 3:可视化构建 ETL 作业(核心环节)

进入 Amazon Glue Studio,通过拖拽组件完成数据提取、脱敏、加载,无需编写代码

img

(1)添加数据源节点(提取源库数据)
  1. 在 Glue Studio 画布左侧 “Sources” 中,拖拽 “Amazon Glue Data Catalog” 到画布。

  2. 配置属性:

  • 数据库:sourcedb-postgresql(源库元数据数据库)

  • 表:sourcedb_cx_customer(源库客户表)

img

(2)添加 PII 脱敏节点(关键步骤)
  1. 在 “Transforms” 中,拖拽 “Detect Sensitive Data” 到画布,连接到数据源节点。

  2. 配置脱敏规则(细粒度控制,确保精准脱敏):

img

  • 数据扫描方式:选择 “在每一行中查找敏感数据”(支持列级排除)。

  • 敏感信息类型:勾选 “Person’s name”“Email Address”“US Phone”“Social Security Number (SSN)”。

  • 全局操作:选择 “REDACT”(替换),编辑文本 =“***”。

  • 细粒度覆盖(针对特定列自定义规则):

img

实体类型列名脱敏操作编辑文本
Email Addressemail、notesREDACT******@email.com
US Phonephone_number、notesREDACT555-555-5555
Social Security Number (SSN)ssn、notesREDACT123-******
Person’s namelast_name、notesREDACT*****
(3)添加数据转换节点(清理无用字段)
  1. 在 “Transforms” 中,拖拽 “Change Schema” 到画布,连接到 “Detect Sensitive Data” 节点。

  2. 配置字段映射:

  • 保留需要的字段(id、first_name、last_name、email 等)。

  • 删除 DetectedEntities 字段(脱敏过程中生成的元数据,无需写入目标库):勾选 “DetectedEntities” 后的 “Drop” 复选框。

  • 类型修正:将 id 字段从字符串(脱敏后默认类型)改回 “int”。

img

(4)添加数据目标节点(加载到目标库)
  1. 在 “Targets” 中,拖拽 “Amazon Glue Data Catalog” 到画布,连接到 “Change Schema” 节点。

img

  1. 配置属性:
  • 数据库:targetdb-postgresql(目标库元数据数据库)

  • 表:targetdb_cx_customer(目标库客户表)

  • 写入模式:选择 “追加”(首次同步也可选择 “覆盖”)。

(5)保存并运行作业
  1. 作业详情配置:
  • 名称:ETL - Replicate customer data

  • IAM 角色:AWSGlueServiceRole-DataSync

  • 其他参数默认(如 worker 类型 = G.1X,数量 = 2)。

  1. 点击 “保存”→“运行”,在 “Runs” 标签页查看进度,直至状态变为 “成功”。

五、验证结果:确认脱敏效果

登录目标账户 RDS,执行以下 SQL 查询,验证数据是否成功脱敏:

\-- 查询目标库客户表,查看PII字段脱敏效果SELECT id, first\_name, last\_name, email, phone\_number, ssn, notes FROM cx.customer LIMIT 5;

预期脱敏结果

img

idfirst_namelast_nameemailphone_numberssnnotes
1Kwaku***********@email.com555-555-5555123-******Bought $5K in products in 2021. Email: ******@email.com
2Jane***********@email.com555-555-5555123-******Spent $8K last 2 years. Call 555-555-5555 for offers

可见,last_name、email、phone_number 等 PII 字段已被脱敏,原始敏感信息未泄露,符合合规要求。

六、资源清理(避免不必要开销)

作业验证完成后,删除临时资源:

  1. Glue 资源:删除 ETL 作业、Crawler、Data Catalog 数据库、连接。

  2. 网络资源:删除 VPC 对等连接,移除路由表中的对等路由、安全组入站规则。

  3. S3 资源:删除 Glue 账户中aws-glue-assets-<账户ID>-<区域>存储桶下的 ETL 脚本文件。

  4. RDS 资源:若无需保留测试数据,删除源 / 目标账户的 RDS 实例(或使用 CloudFormation 栈批量删除)。

七、总结与扩展

通过 Amazon Glue Studio,我们无需编写代码就实现了跨账户 PostgreSQL 数据复制与 PII 脱敏,既满足了合规要求,又降低了运维成本。企业可基于此方案扩展:

  • 多数据源支持:除 PostgreSQL 外,可对接 MySQL、Oracle、S3 等,实现异构数据同步。

  • 定时调度:在 ETL 作业中设置调度规则(如每日凌晨 3 点运行),替代人工触发。

  • 自定义脱敏函数:通过 “Custom Transform” 节点编写 Python 代码,实现复杂脱敏逻辑(如身份证号部分掩码)。

如果你需要进一步优化性能(如增量同步)或扩展场景(如数据湖加载),可参考 Amazon Glue 官方文档,或基于本文的基础架构进行二次开发。

http://www.dtcms.com/a/400947.html

相关文章:

  • 浅析网站域名在搜索引擎排名中的作用wordpress 图片外链
  • 建设部网站首页督办案件菜鸟网站做图
  • 南岸网站建设淘宝网络营销案例分析
  • 集团网站建设价格手机网站建设cz35
  • nginx定时重启及失败重试
  • h5网站怎么做的表白网站制作在线
  • 为什么网站设计很少全屏公司装修费会计分录
  • 潍坊视频类网站建设在哪里查企业信息最准确
  • 阿里云可以做电商网站吗平台外宣推广技巧
  • 没有网站可以做京东联盟吗网站添加微信
  • 晋江+网站建设+推广广州seo代理计费
  • FPGA知识体系
  • 洛阳 网站建设公司做网站的岗位好吗
  • 期末作业制作网站有什么做节能报告的网站
  • 广州做网站的公司有哪些网站建设公司studstu
  • 快速网站建设小学网站模板
  • 节点网站门户网站 架构
  • 黄石做网站公司扁平化颜色网站
  • 易书网上书城网站建设方案安阳网络教研平台官网
  • 沭阳县建设局网站wordpress更换字体
  • 给公司建立网站不可以做到的文字网址生成器
  • 电子商务网站建设组织流程图广州番禺营销型网站
  • 怎样做网站 网页wordpress怎么进入
  • 纺织品服装网站建设优化网站建设静态代码
  • 有人知道做网站吗?如何建立公众号的步骤
  • 建设部注册网站北京最有名的广告公司有哪些
  • 哈希表解Two Sum问题
  • 做资源分享网站怎么样网站源码采集
  • 网站建设后台管理登陆代码北京海淀区官网
  • 广州技术支持:奇亿网站建设论坛式网站建设