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 del 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 delle query, consulta:
Colonne della tabella BigQuery
Le colonne della tabella dei risultati esportati si basano sugli attributi dell'oggetto
Finding.
Collegare 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 Google Cloud console, imposta il campo Campi di identificazione (separati da virgole).
- Se utilizzi l'API DLP, imposta la
identifyingFieldsproprietà.
Al termine dell'ispezione e dell'esportazione dei risultati in BigQuery, ogni risultato conterrà i valori corrispondenti delle colonne che hai specificato. Questi valori si troveranno 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 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 sono fornite per aiutarti a iniziare a eseguire query sui dati dei risultati.
In ognuna delle seguenti query, sostituisci:
PROJECT_ID: l'identificatore del progettoDATASET: il nome del set di dati BigQueryTABLE_ID: l'ID della tabella
Selezionare il conteggio di ogni infoType
Google Cloud Console
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;'
Selezionare il conteggio di ogni infoType per giorno
Google Cloud Console
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
Google Cloud Console
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 in base al nome della colonna ed è progettata per funzionare con i risultati di un job di ispezione di 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 inclusi più risultati di tabelle, puoi limitarli a una sola esecuzione del job o a un solo nome di tabella.
Google Cloud Console
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, dove la colonna infoTypes indica il numero di istanze di ogni infoType trovato per la colonna specificata.
| 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] |