Esta página oferece exemplos de consultas que podem ser usadas para analisar as descobertas da Proteção de dados sensíveis exportadas para o BigQuery.
É possível configurar um job de inspeção ou um acionador de jobs para salvar as descobertas no BigQuery. Isso permite que você consulte as descobertas para uma análise adicional. Quando as descobertas são exportadas para o BigQuery, os dados são gravados em uma tabela nova ou atual.
Para mais informações sobre todas as ações que a Proteção de dados sensíveis pode realizar após a inspeção, consulte o tópico conceitual Ações.
Para mais informações sobre como executar consultas, consulte:
Colunas da tabela do BigQuery
As colunas da tabela de descobertas exportadas são baseadas nos atributos do objeto
Finding
.
Vincular os resultados às linhas que contêm as descobertas
Se você estiver configurando a inspeção de uma tabela do BigQuery, poderá configurar o job ou o acionador de jobs para que as descobertas exportadas contenham os identificadores da linha. Assim, você pode vincular as descobertas de inspeção de volta às linhas que as contêm.
No job de inspeção ou no acionador de job, defina os seguintes campos como os nomes das colunas que identificam exclusivamente cada linha na tabela, ou seja, as colunas que servem para uma chave primária:
- Se você estiver usando o console do Google Cloud, defina o campo Campos de identificação (separados por vírgula).
- Se você estiver usando a API DLP, defina a
propriedade
identifyingFields
.
Quando a inspeção for concluída e as descobertas forem exportadas para o BigQuery, cada descoberta vai conter os valores correspondentes das colunas especificadas. Esses valores vão estar no campo location.content_locations.record_location.record_key.id_values
. Em seguida, use esses valores para vincular a descoberta à linha específica na tabela do BigQuery inspecionada.
Amostras de consultas
Use as consultas de exemplo a seguir para analisar as descobertas. Também é possível usar as consultas em uma ferramenta de visualização, como o Looker Studio. Essas consultas são fornecidas para ajudar você a começar a consultar os dados das descobertas.
Em cada uma das consultas a seguir, substitua o seguinte:
PROJECT_ID
: o identificador do projetoDATASET
: o nome do conjunto de dados do BigQueryTABLE_ID
: o ID da tabela
Selecionar a contagem de cada infoType
Console do 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;
Linha de 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;'
Selecionar a contagem de cada infoType por dia
Console do 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;
Linha de 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;'
Seleciona a contagem de cada infoType em cada contêiner
Console do 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;
Linha de 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;'
Seleciona os tipos de descoberta encontrados para cada coluna de uma tabela
Essa consulta agrupa todas as descobertas por nome de coluna e tem como finalidade trabalhar em descobertas de um job de inspeção do BigQuery. Essa consulta é útil se você estiver tentando identificar os tipos prováveis de uma determinada coluna. É possível ajustar as configurações modificando as cláusulas WHERE e HAVING. Por exemplo, se vários resultados de tabela forem incluídos na tabela de descobertas, será possível limitá-los a apenas uma execução de job ou um nome de tabela.
Console do 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
A consulta acima pode produzir um resultado como este para uma tabela de amostra, em que a coluna infoTypes informa quantas instâncias de cada infoType foram encontradas para essa coluna.
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] |