Cette page fournit des exemples de requêtes que vous pouvez utiliser pour analyser les résultats de Sensitive Data Protection exportés vers BigQuery.
Vous pouvez configurer un job d'inspection ou un déclencheur de job pour enregistrer les résultats dans BigQuery. Cela vous permet d'interroger les résultats pour une analyse plus approfondie. Lorsque vos résultats sont exportés vers BigQuery, les données sont écrites dans une table nouvelle ou existante.
Pour en savoir plus sur toutes les actions que Sensitive Data Protection peut effectuer après l'inspection, consultez la page conceptuelle Actions.
Pour en savoir plus sur l'exécution de requêtes, consultez les ressources suivantes :
Colonnes de la table BigQuery
Les colonnes de la table des résultats exportés sont basées sur les attributs de l'objet Finding.
Associer les résultats aux lignes contenant les résultats
Si vous configurez l'inspection d'une table BigQuery, vous pouvez configurer le job ou le déclencheur de job de sorte que les résultats exportés contiennent les identifiants de la ligne. Cela vous permet d'associer les résultats de l'inspection aux lignes qui les contiennent.
Dans le job d'inspection ou le déclencheur de job, définissez les champs suivants sur les noms des colonnes qui identifient de manière unique chaque ligne de la table, c'est-à-dire les colonnes qui servent de clé primaire :
- Si vous utilisez la console Google Cloud , définissez le champ Champs d'identification (séparés par une virgule).
- Si vous utilisez l'API DLP, définissez la propriété
identifyingFields.
Une fois l'inspection terminée et les résultats exportés vers BigQuery, chaque résultat contiendra les valeurs correspondantes des colonnes que vous avez spécifiées. Ces valeurs se trouvent dans le champ location.content_locations.record_location.record_key.id_values. Vous pouvez ensuite utiliser ces valeurs pour associer le résultat à la ligne spécifique de la table BigQuery inspectée.
Exemples de requêtes
Servez-vous des exemples de requêtes suivants pour analyser vos résultats. Vous pouvez également interroger les données dans un outil de visualisation tel que Data Studio. Ces requêtes sont fournies pour vous aider à interroger vos données de résultats.
Dans chacune des requêtes suivantes, remplacez les éléments suivants :
PROJECT_ID: identifiant du projetDATASET: nom de l'ensemble de données BigQueryTABLE_ID: ID de la table
Sélectionnez le nombre de chaque 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;
Ligne de commande
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;'
Sélectionnez le nombre de chaque infoType par jour
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;
Ligne de commande
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;'
Sélectionne le nombre de chaque infoType dans chaque conteneur
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;
Ligne de commande
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;'
Sélectionne les types de résultats trouvés pour chaque colonne d'une table
Cette requête regroupe tous les résultats par nom de colonne et est destinée à fonctionner sur les résultats d'un job d'inspection BigQuery. Cette requête est utile si vous essayez d'identifier les types probables d'une colonne donnée. Vous pouvez ajuster les paramètres en modifiant les clauses WHERE et HAVING. Par exemple, si plusieurs résultats de table sont inclus dans votre table de résultats, vous pouvez les limiter à une seule exécution de job ou à un seul nom de table.
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 requête ci-dessus peut générer un résultat de ce type pour un exemple de table, où la colonne infoTypes indique le nombre d'instances de chaque infoType trouvé pour cette colonne donnée.
| 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] |