使用数据掩蔽隐藏敏感信息
要隐藏存储在所迁移的表的一列或多列中的敏感数据,可以利用数据掩蔽转换规则操作。从 3.5.4 版本开始,AWS DMS 允许在表映射中使用数据掩蔽转换规则操作,使您能够在迁移过程中更改一列或多列的内容。AWS DMS 将修改后的数据加载到目标表中。
AWS Database Migration Service 为数据掩蔽转换规则操作提供了三个选项:
数据掩蔽:数字掩码
数据掩蔽:数字随机化
数据掩蔽:哈希掩码
与其他转换规则类似,可以在复制任务的表映射中配置这些数据掩蔽转换规则操作。规则目标应设置为列级别。
使用掩码字符掩盖列数据中的数字
“数据掩蔽:数字掩码”转换规则操作允许您使用所指定的单个 ASCII 可打印字符(不包括空字符或空格字符)替换数字,从而掩盖一列或多列中的数值数据。
以下示例使用掩码字符 '#' 掩盖 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-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 数据类型:
数据掩蔽:数字掩码支持
WSTRING和STRING数据类型的列。数据掩蔽:数字随机化支持
WSTRING, STRING; NUMERIC, INT1, INT2, INT4, and INT8数据类型及其对应的无符号数据类型的列。数据掩蔽:哈希掩码支持
WSTRING和STRING数据类型的列。
要详细了解 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。