Esegui query sui risultati di Sensitive Data Protection in BigQuery

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.

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 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;'

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]