本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
要隐藏存储在要迁移的表的一列或多列中的敏感数据,可以利用数据屏蔽转换规则操作。从版本 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 用随机数替换源表cust_passport_no
customer_master
列中的每个数字,并将修改后的数据写入目标表:
{
"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
转换规则操作,以增加目标表中列的宽度。
以下示例为源表列中的数据生成一个 64 个字符长的哈希值,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": "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”
,则 t AWS DMS ask 将“7CB06784764C9030CCC41E25C15339FEB293FFE9B329A72B5FED564E99900C75”
向目标表写入哈希。
限制
每个数据屏蔽转换规则选项仅支持特定 AWS DMS 数据类型:
数据掩码:数据类型的列支持数字掩码:
WSTRING
和。STRING
数据屏蔽:数据类型列支持数字随机化:无
WSTRING, STRING; NUMERIC, INT1, INT2, INT4, and INT8
符号对应列。数据屏蔽:数据类型的列支持哈希掩码:
WSTRING
和。STRING
要详细了解如何将 AWS DMS 数据类型映射到源引擎的数据类型,请参阅源引擎与数据类型的 AWS DMS 数据类型映射。请参阅Oracle 的源数据类型、SQL Server 的源数据类型Postgre 的源数据类型 SQL、和的源数据类型“我的” 的源数据类型 SQL。
对数据类型不兼容的列使用数据屏蔽规则操作会导致DMS任务出错。要 DataMaskingErrorPolicy 指定错误处理行为,请参阅DMS任务设置。有关
DataMaskingErrorPolicy
的更多信息,请参阅 错误处理任务设置。如果您计划使用的掩码选项不支持您的源列类型,则可以添加 change-data-type转换规则操作,将列的数据类型更改为兼容类型。
change-data-type
转换rule-id
的数字应小于掩码转换的规则 ID,以便在掩码之前发生数据类型更改。使用 Data Masking:Hashing Mask 操作对主键/唯一键/外键列进行掩码,因为生成的哈希值将是唯一且一致的。其他两个掩码选项不能保证唯一性。
虽然数据屏蔽:数字掩码和数据屏蔽:数字随机化仅影响列数据中的数字而不影响数据长度,但数据掩码:哈希掩码会修改整列,数据长度更改为 64 个字符。因此,应相应地创建要创建的目标表或为被屏蔽的列添加 change-data-type转换规则。
中将指定了 “数据屏蔽转换规则” 操作的列排除在 AWS DMS数据验证之外。如果主键/唯一键列被屏蔽,则不会对此表运行数据验证;该表的验证状态将等于。
No Primary key