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 saperne di più su tutte le azioni che Sensitive Data Protection può eseguire dopo l'ispezione, consulta l'argomento concettuale Azioni.
Per saperne di più 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 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 fungono da chiave primaria:
- Se utilizzi la console Google Cloud , imposta il campo Campi di identificazione (separati da virgole).
- Se utilizzi l'API DLP, imposta la proprietà
identifyingFields.
Al termine dell'ispezione e dopo l'esportazione dei risultati in BigQuery, ogni risultato conterrà i valori corrispondenti delle colonne specificate. Questi valori saranno nel campo location.content_locations.record_location.record_key.id_values. Puoi quindi utilizzare questi valori per ricollegare il risultato alla riga specifica della 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 Data Studio. Queste query vengono fornite per aiutarti a iniziare a eseguire query sui dati dei risultati.
In ciascuna 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 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 raggrupperà tutti i risultati per nome della colonna ed è destinata a funzionare sui risultati di un job di ispezione di 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 della tabella, puoi limitarli a una sola esecuzione del job o a un solo nome della 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 la colonna specificata.
| 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] |