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 saperne di più sull'esecuzione delle query, consulta quanto segue:
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 impostare il job o il trigger di job in modo che i risultati esportati contengano gli identificatori della riga. In questo modo puoi ricollegare 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 hanno lo scopo di una chiave primaria:
- Se utilizzi la console Google Cloud, imposta il campo Identificazione dei campi (separati da virgole).
- Se utilizzi l'API DLP, imposta la proprietà
identifyingFields
.
Al termine dell'ispezione e all'esportazione dei risultati in BigQuery, ogni risultato conterrà i valori corrispondenti delle colonne specificate. Questi valori saranno disponibili nel campo location.content_locations.record_location.record_key.id_values
. Puoi quindi utilizzare questi valori per collegare il risultato alla riga specifica nella tabella BigQuery ispezionata.
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 ciascuna delle seguenti query, sostituisci la seguente:
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 ciascun container
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 colonna ed è pensata per funzionare sui risultati di un job di ispezione BigQuery. Questa query è utile se stai cercando di identificare i tipi probabili per una determinata colonna. Puoi regolare le impostazioni modificando le clausole WHERE e HAVING. Ad esempio, se nella tabella dei risultati sono inclusi più risultati di tabelle, puoi limitarli a un solo nome di esecuzione del job o a un 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 infoType indica quante istanze di ogni infoType sono state trovate per quella determinata colonna.
field_name | infoTypes |
---|---|
field1 |
CUSTOM_USER_US [count: 7004] e 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] |