Risultati di Query 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 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.

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