使用数据掩蔽隐藏敏感信息 - AWS Database Migration Service

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

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

AWS 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”,则 AWS DMS 任务会将此数据作为 "C#BGJ######K" 写入目标表。

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

转换规则“数据掩蔽:数字随机化”允许您将一列或多列中的每个数字替换为随机数字。在以下示例中,AWS 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" } ] }

例如,AWS 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”,则 AWS DMS 任务将向目标表写入哈希 “7CB06784764C9030CCC41E25C15339FEB293FFE9B329A72B5FED564E99900C75”

限制

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

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

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

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

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

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

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

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

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

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