0

如何去识别大查询表中已经存在的数据,然后重新识别相同的数据并加载到其他 BQ 表中。

谢谢

4

2 回答 2

0

我创建了一个示例,使用“去识别敏感数据”通过以下属于数​​据丢失防护 (DLP) API 的转换来去识别数据,然后将它们插入 BigQuery,但是需要重新识别数据加密令牌。为此,您可以使用Cloud DLP中支持的加密方法:

  • 使用 AES-SIV 的确定性加密
  • 格式保留加密
  • 加密哈希

在这篇文章中,提到了使用确定性加密实现转换的一些密钥和步骤,但是您可以使用您喜欢的那个。

正如回答的那样,执行此操作的简单方法是遵循 Dataflow 管道教程

最后但并非最不重要的一点是,我与您分享了一个示例,说明如何通过替换由我用来模拟您的 BigQuery 数据的伪造库生成的数据来进行去标识化。


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检测器。这些检测器在此处列出,并使用Tableobject取消识别表。

您可以在此存储库中查看更多示例

于 2021-01-26T00:46:51.570 回答
0

最简单的方法是使用数据流管道调用 deidentifyContent。

于 2021-01-21T16:53:08.407 回答