Ergebnisse zum Schutz sensibler Daten in BigQuery abfragen

Auf dieser Seite finden Sie Beispielabfragen, mit denen Sie Ergebnisse zum Schutz sensibler Daten analysieren können, die nach BigQuery exportiert wurden.

Sie können einen Inspektionsjob oder Job-Trigger konfigurieren, um die Ergebnisse in BigQuery zu speichern. Auf diese Weise können Sie die Ergebnisse zur weiteren Analyse abfragen. Beim Export der Ergebnisse nach BigQuery werden die Daten entweder in eine neue oder in eine vorhandene Tabelle geschrieben.

Weitere Informationen zu allen Aktionen, die der Schutz sensibler Daten nach der Prüfung ausführen kann, finden Sie im Konzeptthema Aktionen.

Weitere Informationen zum Ausführen von Abfragen finden Sie hier:

Spalten der BigQuery-Tabelle

Die Spalten der Tabelle mit den exportierten Ergebnissen basieren auf den Attributen des Objekts Finding.

Wenn Sie die Prüfung einer BigQuery-Tabelle konfigurieren, können Sie den Job oder Job-Trigger so einrichten, dass die exportierten Ergebnisse die IDs der Zeile enthalten. Auf diese Weise können Sie die Prüfergebnisse wieder mit den Zeilen verknüpfen, in denen sie enthalten sind.

Legen Sie im Inspektionsjob oder Job-Trigger die folgenden Felder auf die Namen der Spalten fest, die jede Zeile in der Tabelle eindeutig identifizieren – also die Spalten, die den Zweck eines Primärschlüssels erfüllen:

  • Wenn Sie die Google Cloud Console verwenden, legen Sie das Feld Identifizierende Felder (durch Kommas getrennt) fest.
  • Wenn Sie die DLP API verwenden, legen Sie das Attribut identifyingFields fest.

Wenn die Prüfung abgeschlossen ist und die Ergebnisse nach BigQuery exportiert wurden, enthält jedes Ergebnis die entsprechenden Werte der von Ihnen angegebenen Spalten. Diese Werte stehen im Feld location.content_locations.record_location.record_key.id_values. Anschließend können Sie diese Werte verwenden, um das Ergebnis wieder mit der spezifischen Zeile in der geprüften BigQuery-Tabelle zu verknüpfen.

Beispielabfragen

Sie können die folgenden Beispielabfragen verwenden, um Ihre Ergebnisse zu analysieren. Sie können die Abfragen auch in einem Visualisierungstool wie Looker Studio verwenden. Diese Abfragen werden zur Verfügung gestellt, um Ihnen den Einstieg in das Abfragen von Ergebnisdaten zu erleichtern.

Ersetzen Sie in jeder der folgenden Abfragen Folgendes:

  • PROJECT_ID: die Projekt-ID
  • DATASET: der Name des BigQuery-Datasets
  • TABLE_ID: die Tabellen-ID

Anzahl jedes infoType auswählen

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;

Befehlszeile

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

Anzahl jedes infoType nach Tag auswählen

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;

Befehlszeile

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

Anzahl jedes infoType in jedem Container auswählen

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;

Befehlszeile

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

Für jede Tabellenspalte gefundene Ergebnistypen auswählen

Diese Abfrage gruppiert alle Ergebnisse nach Spaltennamen und ist für die Arbeit an Ergebnissen aus einem BigQuery-Inspektionsjob vorgesehen. Diese Abfrage ist nützlich, wenn Sie versuchen, die wahrscheinlichen Typen für eine bestimmte Spalte zu identifizieren. Sie können die Einstellungen anpassen, indem Sie die WHERE- und HAVING-Klauseln ändern. Wenn Ihre Ergebnistabelle beispielsweise mehrere Tabellenergebnisse enthält, können Sie diese auf eine Jobausführung oder einen Tabellennamen beschränken.

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

Die obige Abfrage könnte ein solches Ergebnis für eine Beispieltabelle erzeugen, wobei die Spalte "infoTypes" anzeigt, wie oft jeder infoType in dieser Spalte gefunden wurde.

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]