我试图使用GCP中的数据丢失预防工具在GCS Bucket和Big Query External表中的数据上自动标记InfoTypes,如PhoneNumber、EmailId,这样我就可以在data Catalog和随后的Dataplex中使用这些标记。现在的问题是
- 如果我选择了除大查询表(GCS、数据存储等(之外的任何来源,则禁用将GCP DLP检查结果发布到数据目录的选项
- 如果我选择"大查询表",数据目录发布选项将被启用,但当我尝试运行检查作业时,它的错误会显示为";不支持外部表进行检查";。令人惊讶的是,它只支持内部大查询表
问题是,我对GCP DLP-数据目录集成仅适用于内部大查询表的理解正确吗?我在这里做错了什么,GCP文档也没有提到这些事情!
此外,在从DLP UI控制台配置检查作业时,我必须强制提供Big Query表ID,是否有方法可以针对BQ数据集或一堆表运行DLP检查作业?
关于谷歌云中的数据丢失预防服务,您的理解是正确的,不能通过复制到外围服务来过滤数据,例如公共Google Cloud Storage(GCS(存储桶或外部BigQuery表。请访问此URL以获取更多参考。
现在,关于如何针对BQ一堆表运行DLP检查作业,有两种方法:
- 以编程方式获取大查询表,查询该表并调用DLP流式内容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
}
下面是这个方法的教程。
- 以编程方式获取大查询表,然后为每个表触发一个检查作业。这是最便宜的方法,但您需要考虑它是一个批处理操作,因此它不会实时执行。以下是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
使用此线程可获得有关针对BQ一组表运行DLP检查作业的更多参考。