Questa pagina fornisce query di esempio che puoi utilizzare per analizzare i risultati di Sensitive Data Protection esportati in BigQuery.
Puoi configurare un job di ispezione o un trigger di job per salvare i risultati in BigQuery. In questo modo puoi eseguire query sui risultati per ulteriori analisi. Quando i risultati vengono esportati in BigQuery, i dati vengono scritti in una tabella nuova o esistente.
Per ulteriori informazioni su tutte le azioni che Sensitive Data Protection può eseguire dopo l'ispezione, consulta l'argomento concettuale Azioni.
Per maggiori informazioni sull'esecuzione di query, consulta le seguenti risorse:
Colonne della tabella BigQuery
Le colonne della tabella dei risultati esportati si basano sugli attributi dell'oggetto
Finding
.
Collega i risultati alle righe contenenti i risultati
Se stai configurando l'ispezione di una tabella BigQuery, puoi configurare il job o il trigger del job in modo che i risultati esportati contengano gli identificatori della riga. In questo modo, puoi collegare i risultati dell'ispezione alle righe che li contengono.
Nel job di ispezione o nel trigger del job, imposta i seguenti campi sui nomi delle colonne che identificano in modo univoco ogni riga della tabella, ovvero le colonne che fungono da chiave primaria:
- Se utilizzi la console Google Cloud , imposta il campo Campi identificativi (separati da virgole).
- Se utilizzi l'API DLP, imposta la proprietà
identifyingFields
.
Al termine dell'ispezione e dell'esportazione dei risultati in
BigQuery, ogni risultato conterrà i valori corrispondenti delle
colonne che hai specificato. Questi valori saranno nel campo
location.content_locations.record_location.record_key.id_values
. Puoi
quindi utilizzare questi valori per collegare il risultato alla riga specifica della
tabella BigQuery esaminata.
Query di esempio
Puoi utilizzare le seguenti query di esempio per analizzare i risultati. Puoi anche utilizzare le query in uno strumento di visualizzazione come Looker Studio. Queste query vengono fornite per aiutarti a iniziare a eseguire query sui dati dei risultati.
In ognuna delle seguenti query, sostituisci quanto segue:
PROJECT_ID
: l'identificatore del progettoDATASET
: il nome del set di dati BigQueryTABLE_ID
: l'ID tabella
Seleziona il conteggio di ogni infoType
Console 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;
Riga di comando
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;'
Seleziona il conteggio di ogni infoType per giorno
Console 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;
Riga di comando
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;'
Seleziona il conteggio di ogni infoType in ogni contenitore
Console 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;
Riga di comando
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;'
Seleziona i tipi di risultati trovati per ogni colonna di una tabella
Questa query raggruppa tutti i risultati per nome della colonna ed è pensata per funzionare con i risultati di un job di ispezione BigQuery. Questa query è utile se stai cercando di identificare i tipi probabili per una determinata colonna. Puoi modificare le impostazioni modificando le clausole WHERE e HAVING. Ad esempio, se nella tabella dei risultati sono incluse più tabelle, puoi limitarle a una sola esecuzione del job o a un solo nome di tabella.
Console 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
La query precedente potrebbe produrre un risultato simile a questo per una tabella di esempio, in cui la colonna infoTypes indica quante istanze di ogni infoType sono state trovate per quella determinata colonna.
field_name | previsti |
---|---|
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] |