GCP Data Loss Prevention 是否支持将其结果发布到外部大查询表的数据目录

Does GCP Data Loss Prevention support publishing its results to Data Catalog for External Big Query Tables

我尝试使用 GCP 中的数据丢失防护工具自动标记 GCS 存储桶和外部大查询 table 中的数据的 PhoneNumber、EmailId 等信息类型,以便我可以在数据目录和随后在 Dataplex 中。现在的问题是

  1. 如果我 select 除 Big Query table(GCS、Data Store 等)以外的任何来源,则禁用将 GCP DLP 检查结果发布到 Data Catalog 的选项。
  2. 如果我 select 大查询 table,Data Catalog 发布选项已启用,但是当我尝试 运行 检查作业时,它的错误是“外部 tables 不支持检查”。令人惊讶的是它只支持内部大查询 tables.

问题是,我对 GCP DLP - 数据目录集成仅适用于内部大查询 table 的理解是否正确?我在这里做错了,GCP 文档也没有提到这些东西!

此外,在从 DLP UI 控制台配置检查作业时,我必须强制提供大查询 tableid,有什么方法可以 运行 DLP 检查作业一个 BQ 数据集或一堆 tables?

关于Data Loss Prevention Services in Google Cloud,您的理解是正确的,数据不能ex-filtrated 通过复制到边界外的服务,例如 public Google 云存储 (GCS) 存储桶或 外部 BigQuery table。访问此 URL 以获取更多参考。

现在,关于如何 运行 DLP 检查工作 针对 BQ 一堆 tables ,有两种方法可以做到:

  • 以编程方式获取 Big Query tables,查询 table 并调用 DLP Streaming Content API。它实时运行,但价格昂贵。在这里,我在 Java 示例代码中分享了这个概念:
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
}

这是此方法的 tutorial

  • 以编程方式获取 Big Query tables,然后为每个 table 触发一个 Inspect Job .这是最便宜的方法,但你需要考虑它是一个批处理操作,所以它不是实时执行的。这是 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

使用此 获取更多关于 运行 对 tables 的 BQ 群执行 DLP 检查作业的更多参考。