如何对Big查询表中已经存在的数据进行反标识,然后重新标识并加载到其他BQ表中。
感谢
最简单的方法是使用数据流管道调用deidentityContent。
我通过使用;去识别敏感数据";使用以下属于数据丢失预防(DLP(API的转换来取消对数据的识别,然后将其插入BigQuery中,然而,重新识别数据需要加密令牌。为了实现这一点,您可以在Cloud DLP:中使用支持的加密方法
- 使用AES-SIV的确定性加密
- 格式保留加密
- 加密散列
在这篇文章中,提到了使用确定性加密实现转换的一些密钥和步骤,但您可以使用您喜欢的加密。
正如所回答的那样,实现这一点的简单方法是遵循Dataflow pipeline教程
最后但同样重要的是,我与您分享了一个示例,说明如何通过替换我用来模拟BigQuery数据的faker库生成的数据来取消标识。
from faker import Faker
from google.cloud import dlp_v2
fake = Faker()
dlp = dlp_v2.DlpServiceClient()
def create_fake_data(data_length=5):
data = []
headers = [
{"name": "name"}, {"name": "email"},
{"name": "credit_card"}, {"name": "credit_card_provider"},
{"name": "phone"}]
for i in range(data_length):
data.append({"values":
[
{"string_value": fake.unique.first_name()},
{"string_value": fake.free_email()},
{"string_value": fake.unique.credit_card_number()},
{"string_value": fake.credit_card_provider()},
{"string_value": fake.phone_number()},
]
}
)
return {"table": {"headers": headers, "rows": data}}
def deidentify_with_replace(item):
parent = "projects/julio-castor-mx"
inspect_config = {"info_types": [
{"name": "EMAIL_ADDRESS"},
{"name": "CREDIT_CARD_NUMBER"},
{"name": "PHONE_NUMBER"}]}
deidentify_config = {
"info_type_transformations": {
"transformations": [
{
"primitive_transformation": {
"replace_config": {
"new_value": {"string_value": "[IDENTIFIED]"},
}
}
}
]
}
}
response = dlp.deidentify_content(
request={
"parent": parent,
"deidentify_config": deidentify_config,
"inspect_config": inspect_config,
"item": item
}
)
return response.item
if __name__ == "__main__":
data = create_fake_data()
deidentify_data = deidentify_with_replace(data)
请考虑InfoType
参数定义DLP检测器,以创建取消标识。此处列出了这些检测器,若要取消表的标识,请使用Table
对象。
您可以在这个存储库中看到更多示例