使用数据掩蔽隐藏敏感信息 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用数据掩蔽隐藏敏感信息

要隐藏存储在所迁移的表的一列或多列中的敏感数据,可以利用数据掩蔽转换规则操作。从 3.5.4 版本开始,Amazon DMS 允许在表映射中使用数据掩蔽转换规则操作,使您能够在迁移过程中更改一列或多列的内容。Amazon DMS 将修改后的数据加载到目标表中。

Amazon Database Migration Service 为数据掩蔽转换规则操作提供了三个选项:

  • 数据掩蔽:数字掩码

  • 数据掩蔽:数字随机化

  • 数据掩蔽:哈希掩码

与其他转换规则类似,可以在复制任务的表映射中配置这些数据掩蔽转换规则操作。规则目标应设置为列级别。

使用掩码字符掩盖列数据中的数字

“数据掩蔽:数字掩码”转换规则操作允许您使用所指定的单个 ASCII 可打印字符(不包括空字符或空格字符)替换数字,从而掩盖一列或多列中的数值数据。

以下示例使用掩码字符 '#' 掩盖 customer_mastercust_passport_no 列中的所有数字,并将掩蔽的数据加载到目标表中:

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "cust_schema", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "cust_schema", "table-name": "customer_master", "column-name": "cust_passport_no" }, "rule-action": "data-masking-digits-mask", "value": "#" } ] }

例如,如果源表中的 cust_passport_no 列包含记录“C6BGJ566669K”,则 Amazon DMS 任务会将此数据作为 "C#BGJ######K" 写入目标表。

用随机数字替换列中的数字

转换规则“数据掩蔽:数字随机化”允许您将一列或多列中的每个数字替换为随机数字。在以下示例中,Amazon DMS 用随机数字替换源表 customer_master cust_passport_no 列中的每个数字,并将修改后的数据写入目标表:

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "cust_schema", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "cust_schema", "table-name": "customer_master", "column-name": "cust_passport_no" }, "rule-action": "data-masking-digits-randomize" } ] }

例如,Amazon DMS 任务会将源表 cust_passport_no 列中的 "C6BGJ566669K" 值转换为 "C1BGJ842170K",并将其写入目标数据库。

用哈希值替换列数据

转换规则“数据掩蔽:哈希掩码”允许您将列数据替换为使用 SHA256 算法生成的哈希值。哈希值的长度将始终为 64 个字符,因此目标表列的长度应至少为 64 个字符。或者,您可以向列添加 change-data-type 转换规则操作,以增加目标表中列的长度。

以下示例为源表 customer_master cust_passport_no 列中的数据生成一个 64 个字符长的哈希值,并在增加列长后将转换后的数据加载到目标表:

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "cust_schema", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "cust_schema", "table-name": "customer_master", "column-name": "cust_passport_no" }, "rule-action": "change-data-type", "data-type": { "type": "string", "length": "100", "scale": "" } }, { "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-target": "column", "object-locator": { "schema-name": "cust_schema", "table-name": "customer_master", "column-name": "cust_passport_no" }, "rule-action": "data-masking-hash-mask" } ] }

例如,如果源表的 cust_passport_no 列包含值 “C6BGJ566669K”,则 Amazon DMS 任务将向目标表写入哈希 “7CB06784764C9030CCC41E25C15339FEB293FFE9B329A72B5FED564E99900C75”

限制

  • 每个数据掩蔽转换规则选项仅支持特定 Amazon DMS 数据类型:

    • 数据掩蔽:数字掩码支持 WSTRINGSTRING 数据类型的列。

    • 数据掩蔽:数字随机化支持 WSTRING, STRING; NUMERIC, INT1, INT2, INT4, and INT8 数据类型及其对应的无符号数据类型的列。

    • 数据掩蔽:哈希掩码支持 WSTRINGSTRING 数据类型的列。

    要详细了解 Amazon DMS 数据类型与源引擎数据类型的映射关系,请参阅源引擎与 Amazon DMS 数据类型的数据类型映射。请参阅 Oracle 的源数据类型SQL Server 的源数据类型PostgreSQL 的源数据类型MySQL 的源数据类型 的源数据类型。

  • 对数据类型不兼容的列使用数据掩蔽规则操作会导致 DMS 任务出错。要指定错误处理行为,请参阅 DMS 任务设置中的 DataMaskingErrorPolicy。有关 DataMaskingErrorPolicy 的更多信息,请参阅错误处理任务设置

  • 如果您计划使用的掩蔽选项不支持您的源列类型,则可以添加 change-data-type 转换规则操作,将列的数据类型更改为兼容类型。change-data-type 转换的 rule-id 数字应该是一个比掩码转换的规则 ID 更小的数字,以便在掩蔽之前进行数据类型更改。

  • 建议对主键/唯一键/外键列使用“数据掩蔽:哈希掩码”操作,因为生成的哈希值将是唯一且一致的。其他两个掩码选项不能保证唯一性。

  • 虽然“数据掩蔽:数字掩码”和“数据掩蔽:数字随机化”仅影响列数据中的数字,而不影响数据长度,但“数据掩蔽:哈希掩码”会修改整列,数据长度更改为 64 个字符。因此,应相应地创建目标表,或者为正在进行掩码处理的列添加一个 change-data-type 转换规则。

  • 在 Amazon DMS 中,指定了数据掩蔽转换规则操作的列将从数据验证中排除。如果主键/唯一键列被掩码,则此表的数据验证将不会运行;此类表的验证状态将显示为 No Primary key