微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何去标识大查询表中存在的数据

如何解决如何去标识大查询表中存在的数据

如何对Big query表中已经存在的数据进行去标识化,然后重新标识并加载到其他BQ表中。

谢谢

解决方法

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

,

我创建了一个示例,使用 "de-identifying sensitive data" 使用属于 transformations API 的以下 Data Loss Prevention (DLP) 对数据进行去标识化,然后将它们插入到 BigQuery 中,但是要重新标识数据需要加密令牌。为此,您可以使用 Cloud DLP 中支持的 cryptographic methods

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

在此 post 中,提到了使用确定性加密实现转换的一些关键和步骤,但是您可以使用您喜欢的那个。

正如回答的那样,执行此操作的简单方法是遵循数据流管道 tutorial

最后但并非最不重要的一点是,我与您分享一个示例,说明如何通过替换我用来模拟 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 检测器。这些检测器列在 here 中,并使用 Table object 去标识表。

您可以在此repository

中看到更多示例

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?