0

根据DLP docs,当您创建检查作业时,您需要指定表引用:

{
  "inspectJob":{
    "storageConfig":{
      "bigQueryOptions":{
        "tableReference":{
          "projectId":"bigquery-public-data",
          "datasetId":"usa_names",
          "tableId":"usa_1910_current"
        },
        "rowsLimit":"1000",
        "sampleMethod":"RANDOM_START",
        "identifyingFields":[
          {
            "name":"name"
          }
        ]
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"FIRST_NAME"
        }
      ],
      "includeQuote":true
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"[PROJECT-ID]",
              "datasetId":"testingdlp",
              "tableId":"bqsample3"
            },
            "outputSchema":"BASIC_COLUMNS"
          }
        }
      }
    ]
  }
}

这意味着我需要为每个表创建一个 Inspect Job,我想在我的所有 Big Query 资源中查找敏感数据,该怎么做?

4

1 回答 1

2

要在所有 Big Query 资源中运行 DLP,您有两种选择。

  • 以编程方式获取您的 Big Query 表,然后为每个表触发一个Inspect Job

    优点:更便宜,1 GB 到 50 TB (TB) - 每 GB 价格 1.00 美元

    缺点:这是一个批处理操作,所以它不是实时执行的。

    Python 示例,思路如下:

    client = bigquery.Client()
    datasets = list(client.list_datasets(project=project_id))
    
    if datasets:
        for dataset in datasets:
            tables = client.list_tables(dataset.dataset_id)
            for table in tables:
                # Create Inspect Job for table.table_id
    
  • 以编程方式获取您的 Big Query 表、查询您的表并调用 DLP Streaming Content API

    优点:这是一个实时操作。

    缺点:更贵,超过 1 GB - 每 GB 价格 3.00 美元

    Java Sample,想法:

    url =
        String.format(
            "jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;OAuthType=3;ProjectId=%s;",
            projectId);
    DataSource ds = new com.simba.googlebigquery.jdbc42.DataSource();
    ds.setURL(url);
    conn = ds.getConnection();
    DatabaseMetaData databaseMetadata = conn.getMetaData();
    ResultSet tablesResultSet =
        databaseMetadata.getTables(conn.getCatalog(), null, "%", new String[]{"TABLE"});
    while (tablesResultSet.next()) {
    // Query your Table Data and call DLP Streaming API
    }
    

有关第二个选项的完整教程,请参阅博客文章

请注意:“成本可能会变得非常高,具体取决于您指示 Cloud DLP 扫描的信息量。了解可用于降低成本同时确保您使用云的几种方法DLP 以扫描您打算扫描的确切数据,请参阅控制 Cloud DLP 成本。”

在撰写本文时计费信息是最新的,有关最新信息,请查看 DLP计费文档页面

于 2020-06-04T20:03:47.253 回答