Consultar resultados de Protección de Datos Sensibles en BigQuery

En esta página se proporcionan consultas de ejemplo que puede usar para analizar los resultados de Protección de Datos Sensibles que se han exportado a BigQuery.

Puedes configurar una tarea de inspección o un activador de tareas para guardar los resultados en BigQuery. De esta forma, podrás consultar los resultados para analizarlos en profundidad. Cuando tus resultados se exportan a BigQuery, los datos se escriben en una tabla nueva o en una ya creada.

Para obtener más información sobre todas las acciones que puede realizar Protección de Datos Sensibles después de la inspección, consulta el tema conceptual Acciones.

Para obtener más información sobre cómo ejecutar consultas, consulta los siguientes artículos:

Columnas de la tabla de BigQuery

Las columnas de la tabla de resultados exportados se basan en los atributos del objeto Finding.

Si configuras la inspección de una tabla de BigQuery, puedes configurar la tarea o el activador de tareas de forma que los resultados exportados contengan los identificadores de la fila. De esta forma, puede vincular los hallazgos de la inspección a las filas que los contienen.

En el trabajo de inspección o en el activador de trabajo, asigna a los siguientes campos los nombres de las columnas que identifican de forma única cada fila de la tabla, es decir, las columnas que actúan como clave principal:

  • Si utilizas la consola Google Cloud , define el campo Campos de identificación (separados por comas).
  • Si usas la API DLP, define la propiedad identifyingFields.

Cuando se haya completado la inspección y los resultados se hayan exportado a BigQuery, cada resultado contendrá los valores correspondientes de las columnas que hayas especificado. Estos valores se mostrarán en el campo location.content_locations.record_location.record_key.id_values. Después, puede usar esos valores para vincular el resultado a la fila específica de la tabla de BigQuery inspeccionada.

Consultas de ejemplo

Puedes usar las siguientes consultas de ejemplo para analizar tus resultados. También puedes usar las consultas en una herramienta de visualización como Looker Studio. Estas consultas se proporcionan para ayudarte a empezar a consultar los datos de tus resultados.

En cada una de las siguientes consultas, sustituye lo siguiente:

  • PROJECT_ID: el identificador del proyecto
  • DATASET: el nombre del conjunto de datos de BigQuery
  • TABLE_ID: el ID de la tabla

Seleccionar el recuento de cada infoType

Google Cloud consola

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;

Línea de comandos

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

Seleccionar el recuento de cada infoType por día

Google Cloud consola

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;

Línea de comandos

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

Selecciona el recuento de cada infoType en cada contenedor.

Google Cloud consola

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;

Línea de comandos

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

Selecciona los tipos de resultados encontrados en cada columna de una tabla.

Esta consulta agrupará todos los resultados por nombre de columna y está diseñada para funcionar con los resultados de una tarea de inspección de BigQuery. Esta consulta es útil si quieres identificar los tipos probables de una columna determinada. Puedes ajustar los ajustes modificando las cláusulas WHERE y HAVING. Por ejemplo, si en la tabla de resultados se incluyen varias tablas, puede limitar los resultados a una sola ejecución de trabajo o a un solo nombre de tabla.

Google Cloud consola

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 consulta anterior podría producir un resultado como este en una tabla de ejemplo, donde la columna infoTypes nos indica cuántas instancias de cada infoType se han encontrado en esa columna.

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]