本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
由 Rajkumar Raghuwanshi (AWS) 和 Jagadish Kantubugata (AWS) 创作
摘要
此模式描述了在从 SQL Server 迁移到适用于 PostgreSQL 的亚马逊 RDS 或兼容 Amazon Aurora PostgreSQL 时,如何对电子邮件地址实施安全哈希算法 1 (SHA1) 哈希。电子邮件地址是个人身份信息 (PII) 的一个示例。PII 是直接查看或与其他相关数据配对时可用于合理推断个人身份的信息。
这种模式涵盖了在不同的数据库归类和字符编码中保持一致的哈希值所面临的挑战,并提供了使用 PostgreSQL 函数和触发器的解决方案。尽管这种模式侧重于 SHA1 哈希,但它可以适应PostgreSQL模块支持的其他哈希算法。pgcrypto
请务必考虑哈希策略的安全影响,如果要处理敏感数据,请咨询安全专家。
先决条件和限制
先决条件
活跃的 AWS 账户
源 SQL 服务器数据库
目标 PostgreSQL 数据库(适用于 PostgreSQL 的亚马逊 RDS 或兼容 Aurora PostgreSQL)
PL/pgSQL 编码专业知识
限制
这种模式需要根据用例更改数据库级别的排序规则。
尚未评估对大型数据集的性能影响。
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按地区划分的AWS 服务
。有关特定终端节点,请参阅服务终端节点和配额,然后选择服务的链接。
产品版本
Microsoft SQL Server 2012 或更高版本
架构
源技术堆栈
SQL Server
NET Framework。
目标技术堆栈
PostgreSQL
pgcrypto
延期
自动化和扩缩
为了便于维护,可以考虑将哈希函数作为存储过程来实现。
对于大型数据集,请评估性能并考虑批处理或索引策略。
工具
AWS 服务
兼容 Amazon Aurora PostgreSQL 是一款完全托管、符合 ACID 标准的关系数据库引擎,可帮助您设置、操作和扩展 PostgreSQL 部署。
AWS Database Migration Service (AWS DMS) 可帮助您将数据存储迁移到云和本地设置的组合中, AWS Cloud 或者迁移到云端和本地设置的组合之间。
亚马逊关系数据库服务 Amazon RDS f or PostgreSQL 可帮助你在中设置、操作和扩展 PostgreSQL 关系数据库。 AWS Cloud
AWS Schema Conversion Tool (AWS SCT) 通过自动将源数据库架构和大部分自定义代码转换为与目标数据库兼容的格式来支持异构数据库迁移。
其他工具
pgAdmin
是一种适用于 PostgreSQL 的开源管理工具。它提供了一个图形界面,可帮助您创建、维护和使用数据库对象。 SQL Server 管理工作室 (SSMS)
是一个用于管理任何 SQL 基础架构的集成环境。
最佳实践
使用适当的归类设置来处理目标数据库端的特殊字符。
使用各种电子邮件地址(包括带有非 ASCII 字符的地址)进行彻底测试。
保持应用程序层和数据库层之间大写和小写处理的一致性。
使用哈希值对查询的性能进行基准测试。
操作说明
Task | 描述 | 所需技能 |
---|---|---|
查看 SQL 服务器代码。 | 要查看生成 SHA1 哈希值的 SQL Server 代码,请执行以下操作:
| 数据工程师、数据库管理员、应用程序开发人员 |
记录哈希算法和数据转换。 | 要记录确切的哈希算法和数据转换,请执行以下操作:
| 应用程序开发人员、数据工程师、数据库管理员 |
Task | 描述 | 所需技能 |
---|---|---|
创建 | 要创建
| 数据库管理员、数据工程师 |
实现一个 PostgreSQL 函数。 | 实现以下 PostgreSQL 函数来复制 SQL Server 的哈希逻辑。简而言之,此函数使用以下步骤:
| 数据工程师、数据库管理员、应用程序开发人员 |
测试函数。 | 要测试该函数,请使用来自 SQL Server 的示例数据来验证匹配的哈希值。运行以下命令:
| 应用程序开发人员、数据库管理员、数据工程师 |
Task | 描述 | 所需技能 |
---|---|---|
在相关表上创建触发器。 | 要在相关表上创建触发器以在插入或更新时自动生成哈希值,请运行以下命令:
| 应用程序开发人员、数据工程师、数据库管理员 |
Task | 描述 | 所需技能 |
---|---|---|
开发迁移脚本或使用 AWS DMS。 | 开发迁移脚本或 AWS DMS 用于填充现有数据的哈希值(包括存储在源系统
| 数据工程师、应用程序开发人员、数据库管理员 |
使用新的 PostgreSQL 哈希函数。 | 要使用新的 PostgreSQL 哈希函数来确保一致性,请执行以下操作:
| 应用程序开发人员、数据库管理员、 DevOps 工程师 |
Task | 描述 | 所需技能 |
---|---|---|
识别应用程序查询。 | 要识别使用哈希值的应用程序查询,请执行以下操作:
| 应用程序开发人员、数据库管理员、数据工程师 |
修改查询。 | 如有必要,可以修改查询以使用新的 PostgreSQL 哈希函数。执行以下操作:
| 应用程序开发人员、数据库管理员、数据工程师 |
Task | 描述 | 所需技能 |
---|---|---|
执行测试。 | 要对生产数据的子集进行全面测试,请执行以下操作:
| 应用程序开发人员、数据工程师、数据库管理员 |
验证哈希值是否匹配。 | 要验证 SQL Server 和 PostgreSQL 之间的哈希值是否匹配,请执行以下操作:
| 应用程序开发人员、数据工程师、数据库管理员 |
验证应用程序的功能。 | 要使用迁移的数据和新的哈希实现来验证应用程序的功能,请执行以下操作:
| 应用程序开发人员、数据库管理员、数据工程师 |
故障排除
事务 | 解决方案 |
---|---|
哈希值不匹配。 | 验证源和目标之间的字符编码和排序规则。有关更多信息,请参阅在 Amazon Aurora 和 Amazon RDS 上管理 PostgreSQL 中的排序规则更改 |
相关资源
AWS 博客
其他资源
P@@ ostgreSQL pgcrypto 模块(PostgreSQL
文档) Po@@ stgreSQL 触发器函数(PostgreSQL
文档) SQL Server HASHBYTES 函数
(微软文档)
其他信息
这种模式侧重于 SHA1 哈希,但可以适应 PostgreSQL 的 pgcrypto 模块支持的其他哈希算法。请务必考虑哈希策略的安全影响,如果要处理敏感数据,请咨询安全专家。