Esegui query sui risultati di Sensitive Data Protection in BigQuery

Questa pagina fornisce query di esempio che puoi utilizzare per analizzare i risultati della Protezione dei dati sensibili esportati in BigQuery.

Puoi configurare un job di ispezione o un attivatore 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 ulteriori 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.

Se stai configurando l'ispezione di una tabella BigQuery, puoi configurare il job o l'attivatore 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 nell'attivatore del job, imposta i seguenti campi sui nomi delle colonne che identificano in modo univoco ogni riga della tabella, ovvero le colonne che hanno la funzione di una 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 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 poi utilizzare questi valori per collegare il rilevamento 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 ogni una delle seguenti query, sostituisci quanto segue:

  • PROJECT_ID: l'identificatore del progetto
  • DATASET: il nome del set di dati BigQuery
  • TABLE_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;'

Consente di selezionare 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;'

Consente di selezionare 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 elaborare 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 inclusi più risultati di tabella, puoi limitarli a un'unica 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 riportata sopra potrebbe produrre un risultato come questo per una tabella di esempio, dove la colonna infoTypes indica quante istanze di ciascun infoType sono state trovate per la colonna in questione.

field_name infoType
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]