本頁面提供範例查詢,可用於分析匯出至 BigQuery 的資訊保護發現項目。
您可以設定檢查工作或工作觸發條件,將發現項目儲存至 BigQuery。這樣一來,您就能查詢調查結果,以進行進一步分析。當發現項目匯出至 BigQuery 時,資料會寫入新資料表或現有資料表。
如要進一步瞭解 Sensitive Data Protection 在檢查後可執行的所有動作,請參閱「動作」概念主題。
如要進一步瞭解如何執行查詢,請參閱下列文章:
BigQuery 資料表的資料欄
匯出結果表格的資料欄會根據 Finding
物件的屬性而定。
將結果連結回含有發現項目的資料列
如果您設定檢查 BigQuery 表格,可以設定工作或工作觸發條件,讓匯出的發現項目包含資料列的 ID。這樣一來,您就能將檢查結果連結回包含這些結果的資料列。
在檢查作業或作業觸發程序中,將下列欄位設為資料表中可唯一識別每個資料列的欄位名稱,也就是做為主鍵的欄位:
- 如果您使用 Google Cloud 控制台,請設定「識別欄位 (以半形逗號分隔)」欄位。
- 如果您使用 DLP API,請設定
identifyingFields
屬性。
檢查完成並將結果匯出至 BigQuery 後,每個結果都會包含您指定的資料欄對應值。這些值會位於 location.content_locations.record_location.record_key.id_values
欄位中。然後使用這些值,將發現項目連結回檢查過的 BigQuery 資料表中的特定資料列。
查詢範例
您可以使用以下查詢範例分析發現項目,也可以在 Looker Studio 等視覺化工具中使用查詢。這些查詢旨在協助您開始查詢您的發現項目資料。
在下列各項查詢中,請替換以下項目:
PROJECT_ID
:專案 IDDATASET
:BigQuery 資料集名稱TABLE_ID
:資料表 ID
選取每種 infoType 的計數
Google Cloud 控制台
SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;
指令列
bq query --use_legacy_sql=false ' SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;'
依日期選取每種 infoType 的計數
Google Cloud 控制台
SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;
指令列
bq query --use_legacy_sql=false ' SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;'
選取每個容器中每種 infoType 的計數
Google Cloud 控制台
SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name, info_type.name ORDER BY count DESC;
指令列
bq query --use_legacy_sql=false ' SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name,info_type.name ORDER BY count DESC;'
選取資料表每欄中找到的發現項目類型
這項查詢會依資料欄名稱將所有發現項目分組,並適用於 BigQuery 檢查工作中的發現項目。如果您想找出特定資料欄的可能類型,這個查詢就非常實用。您可以修改 WHERE 和 HAVING 子句來調整設定。舉例來說,如果調查結果表格中包含多個表格結果,您可以將這些結果限制為僅一個工作執行或一個表格名稱。
Google Cloud 控制台
SELECT table_counts.field_name, STRING_AGG( CONCAT(" ",table_counts.name," [count: ",CAST(table_counts.count_total AS String),"]") ORDER BY table_counts.count_total DESC) AS infoTypes FROM ( SELECT locations.record_location.field_id.name AS field_name, info_type.name, COUNT(*) AS count_total FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations WHERE (likelihood = 'LIKELY' OR likelihood = 'VERY_LIKELY' OR likelihood = 'POSSIBLE') GROUP BY locations.record_location.field_id.name, info_type.name HAVING count_total>200 ) AS table_counts GROUP BY table_counts.field_name ORDER BY table_counts.field_name
針對範例資料表,上述查詢可能會產生類似這樣的結果,其中 infoTypes 資料欄會告訴我們,該資料欄中找到的每個 infoType 執行個體數量。
field_name | infoTypes |
---|---|
field1 |
CUSTOM_USER_US [count: 7004] ,CUSTOM_USER_EU [count: 2996] |
field2 |
US_VEHICLE_IDENTIFICATION_NUMBER [count: 9597] |
field3 |
EMAIL_ADDRESS [count: 10000] |
field4 |
IP_ADDRESS [count: 10000] |
field5 |
PHONE_NUMBER [count: 7815] |
field6 |
US_SOCIAL_SECURITY_NUMBER [count: 10000] |
field7 |
CREDIT_CARD_NUMBER [count: 10000] |