Contrôler les accès avec des tags
Ce document explique comment utiliser des tags avec les ressources BigQuery pour le contrôle des accès.
Un tag est une paire clé-valeur que vous pouvez associer à une ressource Cloud de Confiance by S3NS. Vous pouvez utiliser des tags avec BigQuery de différentes manières :
- Accorder ou refuser des règles de manière conditionnelle : vous pouvez associer des tags à des tables, des vues et des ensembles de données BigQuery, et utiliser Identity and Access Management (IAM) pour accorder des rôles ou refuser l'accès (aperçu) à ces ressources de manière conditionnelle en fonction de leurs tags. Pour en savoir plus sur les stratégies de refus, consultez Stratégies de refus.
- Contrôle des accès au niveau des colonnes : vous pouvez associer des tags de gouvernance des données (preview) aux colonnes de table et les utiliser avec des règles de données pour restreindre l'accès aux données des colonnes.
Vous pouvez associer des tags directement à une ressource, ou les tags peuvent être hérités des ressources parentes dans la hiérarchie des ressources Cloud de Confiance .
Ce document explique comment utiliser des tags avec IAM pour accorder ou refuser l'accès aux tables, aux vues et aux ensembles de données BigQuery de manière conditionnelle.
Pour en savoir plus sur l'utilisation des tags dans la hiérarchie des ressources Cloud de Confiance by S3NS, consultez la page Présentation des tags.
Pour accorder des autorisations à de nombreuses ressources BigQuery associées en même temps, y compris à des ressources qui n'existent pas encore, envisagez d'utiliser des conditions IAM.
Limites
Les tags de table ne sont pas compatibles avec les tables BigQuery Omni, les tables des ensembles de données masqués ou les tables temporaires. Les tags d'ensemble de données ne sont pas compatibles avec les ensembles de données BigQuery Omni. De plus, les requêtes interrégionales dans BigQuery Omni n'utilisent pas de tags lors des vérifications de contrôle des accès aux tables dans d'autres régions.
Vous pouvez associer jusqu'à 50 tags à une table ou à un ensemble de données.
Toutes les tables référencées dans une requête générique doivent avoir exactement le même ensemble de valeurs et de clés de tag.
Les utilisateurs disposant d'un accès conditionnel à un ensemble de données ou à une table ne peuvent pas modifier les autorisations associées à cette ressource via la console Cloud de Confiance . Les modifications d'autorisations ne sont acceptées que via l'outil bq et l'API BigQuery.
Certains services en dehors de BigQuery ne peuvent pas valider correctement les conditions de tag IAM. Si la condition du tag est positive, ce qui signifie qu'un utilisateur ne dispose d'un rôle sur une ressource que si cette dernière possède un tag particulier, l'accès à cette ressource est refusé, quels que soient les tags auxquels elle est associée. Si la condition du tag est négative, ce qui signifie qu'un utilisateur ne dispose d'un rôle sur une ressource que si cette ressource ne possède pas de tag particulier, la condition de tag n'est pas vérifiée.
Rôles requis
Vous devez accorder des rôles IAM qui donnent aux utilisateurs les autorisations nécessaires pour effectuer chaque tâche de ce document.
Les deux rôles IAM prédéfinis suivants incluent toutes les autorisations BigQuery nécessaires :
- Propriétaire de données BigQuery (
roles/bigquery.dataOwner) - Administrateur BigQuery (
roles/bigquery.admin)
Les autorisations Resource Manager permettant d'ajouter et de supprimer des tags sont incluses dans le rôle Utilisateur de tags (roles/resourcemanager.tagUser).
Autorisations requises
Pour utiliser des tags dans BigQuery, vous devez disposer des autorisations suivantes :
| Opération | Interfaces BigQuery (API, CLI, console) et Terraform | API Cloud Resource Manager ou gcloud |
|---|---|---|
| Associer un tag à une table ou une vue |
|
|
| Supprimer un tag d'une table ou d'une vue |
|
|
| Associer un tag à un ensemble de données |
|
|
| Supprimer un tag d'un ensemble de données |
|
|
Pour lister les clés et les valeurs de clé de tag dans la console Cloud de Confiance , vous devez disposer des autorisations suivantes :
Pour lister les clés de tag associées à une organisation ou à un projet parent, vous devez disposer de l'autorisation
resourcemanager.tagKeys.listau niveau du parent de la clé de tag et de l'autorisationresourcemanager.tagKeys.getpour chaque clé de tag. Pour afficher la liste des clés de tag dans la console BigQuery, cliquez sur le nom de l'ensemble de données, puis sur Modifier les détails. Vous pouvez également cliquer sur le nom de la table ou de la vue, puis sur Détails > Modifier les détails.Pour lister les valeurs de tag des clés associées à une organisation ou à un projet parent, vous devez disposer de l'autorisation
resourcemanager.tagValues.listau niveau du parent de la valeur de tag et de l'autorisationresourcemanager.tagValues.getpour chaque valeur de tag. Pour afficher la liste des valeurs de clé de tag dans la console BigQuery, cliquez sur le nom de l'ensemble de données, puis sur Modifier les détails. Vous pouvez également cliquer sur le nom de la table ou de la vue, puis sur Détails > Modifier les détails.
Pour utiliser des tags dans l'API Cloud Resource Manager ou gcloud, vous avez besoin des autorisations suivantes :
- Pour lister les tags associés à une table ou une vue avec l'API Cloud Resource Manager ou gcloud CLI, vous devez disposer de l'autorisation IAM
bigquery.tables.listTagBindings. - Pour lister les tags effectifs d'une table ou d'une vue, vous devez disposer de l'autorisation IAM
bigquery.tables.listEffectiveTags. - Pour lister les tags associés à un ensemble de données avec l'API Cloud Resource Manager ou gcloud CLI, vous devez disposer de l'autorisation IAM
bigquery.datasets.listTagBindings. - Pour lister les tags effectifs d'un ensemble de données, vous devez disposer de l'autorisation IAM
bigquery.datasets.listEffectiveTags.
Créer des clés et des valeurs de tags
Vous pouvez créer un tag avant de l'associer à une ressource BigQuery, ou vous pouvez le créer manuellement lorsque vous créez la ressource à l'aide de la consoleCloud de Confiance .
Pour savoir comment créer des clés et des valeurs de tags, consultez les sections Créer un tag et Ajouter des valeurs de tags dans la documentation Resource Manager.
Ajouter des tags aux ensembles de données
Les sections suivantes expliquent comment associer des tags à des ensembles de données nouveaux et existants, lister les tags associés à un ensemble de données et dissocier les tags d'un ensemble de données.
Associer des tags lors de la création d'un ensemble de données
Après avoir créé un tag, vous pouvez l'associer à un nouvel ensemble de données BigQuery. Vous ne pouvez associer qu'une seule valeur de tag à un ensemble de données pour une clé de tag donnée. Vous pouvez associer jusqu'à 50 tags à un ensemble de données.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Si le volet de gauche ne s'affiche pas, cliquez sur Développer le volet de gauche pour l'ouvrir.
Dans le panneau Explorateur, sélectionnez le projet dans lequel vous souhaitez créer votre ensemble de données.
Cliquez sur Afficher les actions > Créer un ensemble de données.
Saisissez les informations concernant votre nouvel ensemble de données. Pour en savoir plus, consultez Créer des ensembles de données.
Développez la section Tags.
Pour appliquer un tag existant, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis choisissez Niveau d'accès actuel > Sélectionner l'organisation actuelle ou Sélectionner le projet actuel.
Vous pouvez également cliquer sur Sélectionner le champ d'application pour rechercher une ressource ou afficher la liste des ressources actuelles.
Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Pour saisir manuellement un tag, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis sélectionnez Saisir manuellement les ID > Organisation, Projet ou Tags.
Si vous créez un tag pour votre projet ou votre organisation, saisissez
PROJECT_IDouORGANIZATION_IDdans la boîte de dialogue, puis cliquez sur Enregistrer.Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.
Cliquez sur Créer un ensemble de données.
SQL
Utilisez l'instruction CREATE SCHEMA.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CREATE SCHEMA PROJECT_ID.DATASET_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données que vous créez.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir en tant que premier tag sur l'ensemble de données, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq mk --dataset avec l'option --add_tags :
bq mk --dataset \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Remplacez les éléments suivants :
TAG: tag que vous associez au nouvel ensemble de données. Si vous utilisez plusieurs tags, séparez-les par une virgule. Exemple :556741164180/env:prod,myProject/department:sales. Chaque tag doit porter le nom de l'espace de noms associé à la clé et le nom court de la valeur.PROJECT_ID: ID du projet dans lequel vous créez un ensemble de données.DATASET_ID: ID du nouvel ensemble de données.
Terraform
Utilisez la ressource google_bigquery_dataset.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
L'exemple suivant crée un ensemble de données nommé my_dataset, puis lui associe des tags en remplissant le champ resource_tags :
Pour appliquer votre configuration Terraform dans un projet Cloud de Confiance , suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Cloud de Confiance par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf, par exemplemain.tf. Dans ce tutoriel, le fichier est appelémain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tfque vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yeslorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Cloud de Confiance pour afficher les résultats. Dans la console Cloud de Confiance , accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
API
Appelez la méthode datasets.insert et ajoutez vos tags au champ resource_tags.
Associer des tags à un ensemble de données existant
Après avoir créé un tag, vous pouvez l'associer à un ensemble de données existant. Vous ne pouvez associer qu'une seule valeur de tag à un ensemble de données pour une clé de tag donnée.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Dans le panneau Informations sur l'ensemble de données, cliquez sur Modifier les détails.
Développez la section Tags.
Pour appliquer un tag existant, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis choisissez Niveau d'accès actuel > Sélectionner l'organisation actuelle ou Sélectionner le projet actuel.
Vous pouvez également cliquer sur Sélectionner le champ d'application pour rechercher une ressource ou afficher la liste des ressources actuelles.
Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Pour saisir manuellement un tag, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis sélectionnez Saisir manuellement les ID > Organisation, Projet ou Tags.
Si vous créez un tag pour votre projet ou votre organisation, saisissez
PROJECT_IDouORGANIZATION_IDdans la boîte de dialogue, puis cliquez sur Enregistrer.Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction ALTER SCHEMA SET OPTIONS.
L'exemple suivant écrase tous les tags d'un ensemble de données existant.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table que vous taguez.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir comme premier tag de la table, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
L'exemple suivant utilise l'opérateur += pour associer des tags à un ensemble de données sans écraser les tags existants. Si un tag existant possède la même clé, il est écrasé.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table que vous taguez.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir comme premier tag de la table, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq update avec l'option --add_tags :
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Remplacez les éléments suivants :
TAG: tag que vous associez à l'ensemble de données. Si vous utilisez plusieurs tags, séparez-les par une virgule. Exemple :556741164180/env:prod,myProject/department:sales. Chaque tag doit porter le nom de l'espace de noms associé à la clé et le nom court de la valeur.PROJECT_ID: ID du projet dans lequel se trouve l'ensemble de données existant.DATASET_ID: ID de l'ensemble de données existant.
gcloud
Pour associer un tag à un ensemble de données à l'aide de la ligne de commande, créez une ressource de liaison de tag à l'aide de la commande gcloud resource-manager tags bindings create :
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
TAG_VALUE_NAME: ID permanent ou nom de l'espace de noms de la valeur du tag à associer, tel quetagValues/4567890123ou1234567/my_tag_key/my_tag_value.RESOURCE_ID: ID complet de la ressource, avec le nom de domaine de l'API (//bigquery.googleapis.com/) permettant de déterminer le type de ressource. Exemples ://bigquery.googleapis.com/projects/my_project/datasets/my_dataset.LOCATION: emplacement de votre ensemble de données.
Terraform
Ajoutez des tags au champ resource_tags de l'ensemble de données, puis appliquez la configuration mise à jour à l'aide de la ressource google_bigquery_dataset. Pour en savoir plus, consultez l'exemple Terraform dans Associer des tags lors de la création d'un ensemble de données.
API
Appelez la méthode datasets.get pour obtenir la ressource d'ensemble de données, y compris le champ resource_tags. Ajoutez vos tags au champ resource_tags et transmettez la ressource d'ensemble de données mise à jour à l'aide de la méthode datasets.update.
Répertorier les tags associés à un ensemble de données
Les étapes suivantes fournissent une liste de liaisons de tags directement associées à un ensemble de données. Ces méthodes ne renvoient pas les tags hérités des ressources parentes.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Les tags apparaissent dans le panneau Informations sur l'ensemble de données.
bq
Pour lister les tags associées à un ensemble de données, utilisez la commande bq show.
bq show PROJECT_ID:DATASET_ID
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant votre ensemble de données.DATASET_ID: ID de l'ensemble de données pour lequel vous souhaitez lister les tags.
gcloud
Pour obtenir la liste des liaisons de tags associées à une ressource, exécutez la commande gcloud resource-manager tags bindings list :
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
RESOURCE_ID: ID complet de l'ensemble de données, avec le nom de domaine de l'API permettant de déterminer le type de ressource (//bigquery.googleapis.com/). Exemple ://bigquery.googleapis.com/projects/my_project/datasets/my_dataset.LOCATION: emplacement de votre ensemble de données.
Le résultat ressemble à ce qui suit :
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
Vous pouvez lister les tags hérités par les ensembles de données BigQuery à l'aide de gcloud resource-manager tags bindings list. Vous pouvez également utiliser l'option --filter de l'attribut namespacedTagValue pour filtrer les tags en fonction de l'ID du projet, de la valeur du tag ou de la clé du tag.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant votre ensemble de données.DATASET_ID: ID de l'ensemble de données.TAG_FILTER: spécifiez une valeur pour filtrer les tags hérités en fonction de l'un des éléments suivants :Filtrez les tags par ID du projet. Par exemple,
myproject.Filtrez les valeurs de tag en spécifiant l'ID permanent ou le nom d'espace de noms de la valeur de tag. Par exemple,
tagValues/4567890123ou1234567/my_tag_key/my_tag_value.Filtrez les clés de tag en spécifiant leur nom à afficher. Par exemple,
tagkey.
Terraform
Utilisez la commande terraform state show pour lister les attributs de l'ensemble de données, y compris le champ resource_tags. Exécutez cette commande dans le répertoire où le fichier de configuration Terraform du jeu de données a été exécuté.
terraform state show google_bigquery_dataset.default
API
Appelez la méthode datasets.get pour obtenir la ressource de l'ensemble de données. La ressource d'ensemble de données inclut les tags associés à l'ensemble de données dans le champ resource_tags.
Vues
Utilisez la vue INFORMATION_SCHEMA.SCHEMATA_OPTIONS.
Par exemple, la requête suivante affiche tous les tags associés à tous les ensembles de données d'une région. Cette requête renvoie une table avec des colonnes, dont schema_name (nom de l'ensemble de données), option_name (toujours 'tags'), object_type (toujours ARRAY<STRUCT<STRING, STRING>>) et option_value, qui contient des tableaux d'objets STRUCT représentant les tags associés à chaque ensemble de données. Pour les ensembles de données sans tags attribués, la colonne option_value renvoie un tableau vide.
SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name='tags'
Remplacez les éléments suivants :
REGION: région dans laquelle se trouvent vos ensembles de données.
Dissocier les tags d'un ensemble de données
Vous pouvez dissocier un tag d'une ressource en supprimant la ressource de liaison de tag. Si vous supprimez un tag, vous devez d'abord le dissocier de l'ensemble de données. Pour en savoir plus, consultez Supprimer des tags.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Dans le panneau Informations sur l'ensemble de données, cliquez sur Modifier les détails.
Dans la section Tags, cliquez sur Supprimer l'élément à côté du tag que vous souhaitez supprimer.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction ALTER SCHEMA SET OPTIONS.
L'exemple suivant dissocie des tags d'un ensemble de données à l'aide de l'opérateur -=. Pour dissocier tous les tags d'un ensemble de données, vous pouvez spécifier tags=NULL ou tags=[].
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table dont vous dissociez les tags.TAG_KEY_1: nom de clé avec espace de noms du premier tag que vous souhaitez dissocier, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag que vous souhaitez dissocier (par exemple,'prod'ou'sales').TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag que vous dissociez.TAG_VALUE_2: nom court de la valeur du deuxième tag que vous dissociez.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq update avec l'option --remove_tags :
bq update \ --remove_tags=REMOVED_TAG \ PROJECT_ID:DATASET_ID
Remplacez les éléments suivants :
REMOVED_TAG: tag que vous supprimez de l'ensemble de données. Si vous utilisez plusieurs tags, séparez-les par une virgule. N'accepte que les clés sans paires clé-valeur. Par exemple,556741164180/env,myProject/department. Chaque tag doit porter le nom de l'espace de noms associé à la clé.PROJECT_ID: ID du projet contenant votre ensemble de données.DATASET_ID: ID de l'ensemble de données dont vous souhaitez dissocier les tags.
Si vous souhaitez supprimer tous les tags d'un ensemble de données, utilisez la commande bq update avec l'option --clear_all_tags :
bq update \ --clear_all_tags PROJECT_ID:DATASET_ID
gcloud
Pour dissocier un tag d'un ensemble de données à l'aide de la ligne de commande, supprimez la liaison de tag à l'aide de la commande gcloud resource-manager tags bindings delete :
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
TAG_VALUE_NAME: ID permanent ou nom de l'espace de noms de la valeur du tag à dissocier, tel quetagValues/4567890123ou1234567/my_tag_key/my_tag_valueRESOURCE_ID: ID complet de l'ensemble de données, avec le nom de domaine de l'API permettant de déterminer le type de ressource (//bigquery.googleapis.com/). Exemple ://bigquery.googleapis.com/projects/my_project/datasets/my_dataset.LOCATION: emplacement de votre ensemble de données.
Terraform
Supprimez vos tags du champ resource_tags de l'ensemble de données, puis appliquez la configuration mise à jour à l'aide de la ressource google_bigquery_dataset.
API
Appelez la méthode datasets.get pour obtenir la ressource d'ensemble de données, y compris le champ resource_tags. Supprimez vos tags du champ resource_tags et transmettez la ressource d'ensemble de données mise à jour à l'aide de la méthode datasets.update.
Ajouter des tags à des tables
Les sections suivantes expliquent comment associer des tags à des tables nouvelles et existantes, lister les tags associés à une table et dissocier les tags d'une table.
Associer des tags lors de la création d'une table
Après avoir créé un tag, vous pouvez l'associer à une nouvelle table. Vous ne pouvez associer qu'une seule valeur de tag à une table pour une clé de tag donnée. Vous pouvez associer jusqu'à 50 tags à une table.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Dans la section Informations sur l'ensemble de données, cliquez sur Créer une table.
Saisissez les informations concernant votre nouvelle table. Pour en savoir plus, consultez Créer et utiliser des tables.
Développez la section Tags.
Pour appliquer un tag existant, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis choisissez Niveau d'accès actuel > Sélectionner l'organisation actuelle ou Sélectionner le projet actuel.
Vous pouvez également cliquer sur Sélectionner le champ d'application pour rechercher une ressource ou afficher la liste des ressources actuelles.
Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Pour saisir manuellement un tag, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis sélectionnez Saisir manuellement les ID > Organisation, Projet ou Tags.
Si vous créez un tag pour votre projet ou votre organisation, saisissez
PROJECT_IDouORGANIZATION_IDdans la boîte de dialogue, puis cliquez sur Enregistrer.Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.
Cliquez sur Créer une table.
SQL
Utilisez l'instruction CREATE TABLE.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données dans lequel vous créez la table.TABLE_ID: nom de la nouvelle table.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir comme premier tag de la table, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq mk --table avec l'option --add_tags :
bq mk --table \ --schema=SCHEMA \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Remplacez les éléments suivants :
SCHEMA: définition de schéma intégrée.TAG: tag que vous associez à la nouvelle table. Si vous utilisez plusieurs tags, séparez-les par une virgule. Exemple :556741164180/env:prod,myProject/department:sales. Chaque tag doit porter le nom de l'espace de noms associé à la clé et le nom court de la valeur.PROJECT_ID: ID du projet dans lequel vous créez une table.DATASET_ID: ID de l'ensemble de données dans lequel vous créez une table.TABLE_ID: ID de la nouvelle table.
Terraform
Utilisez la ressource google_bigquery_table.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
L'exemple suivant crée une table nommée mytable, puis lui associe des tags en remplissant le champ resource_tags :
Pour appliquer votre configuration Terraform dans un projet Cloud de Confiance , suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Cloud de Confiance par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf, par exemplemain.tf. Dans ce tutoriel, le fichier est appelémain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tfque vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yeslorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Cloud de Confiance pour afficher les résultats. Dans la console Cloud de Confiance , accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
API
Appelez la méthode tables.insert avec une ressource de table définie et incluez les tags dans le champ resource_tags.
Associer des tags à une table existante
Après avoir créé un tag, vous pouvez l'associer à une table existante. Vous ne pouvez associer qu'une seule valeur de tag à une table pour une clé de tag donnée.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.
Cliquez sur Présentation > Tables, puis sélectionnez une table.
Cliquez sur l'onglet Détails, puis sur Modifier les détails.
Développez la section Tags.
Pour appliquer un tag existant, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis choisissez Niveau d'accès actuel > Sélectionner l'organisation actuelle ou Sélectionner le projet actuel.
Vous pouvez également cliquer sur Sélectionner le champ d'application pour rechercher une ressource ou afficher la liste des ressources actuelles.
Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Pour saisir manuellement un tag, procédez comme suit :
Cliquez sur la flèche du menu déroulant à côté de Sélectionner un niveau d'accès, puis sélectionnez Saisir manuellement les ID > Organisation, Projet ou Tags.
Si vous créez un tag pour votre projet ou votre organisation, saisissez
PROJECT_IDouORGANIZATION_IDdans la boîte de dialogue, puis cliquez sur Enregistrer.Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.
Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction ALTER TABLE SET OPTIONS.
L'exemple suivant écrase tous les tags d'une table existante.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table que vous taguez.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir comme premier tag de la table, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
L'exemple suivant utilise l'opérateur += pour associer un tag à une table sans écraser les tags existants. Si un tag existant possède la même clé, il est écrasé.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table que vous taguez.TAG_KEY_1: nom de clé avec espace de noms que vous souhaitez définir comme premier tag de la table, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag, par exemple'prod'ou'sales'.TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag.TAG_VALUE_2: nom court de la valeur du deuxième tag.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq update avec l'option --add_tags :
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Remplacez les éléments suivants :
TAG: tag que vous associez à la table. Si vous utilisez plusieurs tags, séparez-les par une virgule. Exemple :556741164180/env:prod,myProject/department:sales. Chaque tag doit porter le nom de l'espace de noms associé à la clé et le nom court de la valeur.PROJECT_ID: ID du projet contenant votre table.DATASET_ID: ID de l'ensemble de données contenant votre table.TABLE_ID: ID de la table que vous mettez à jour.
gcloud
Pour associer un tag à une table à l'aide de la ligne de commande, créez une ressource de liaison de tag à l'aide de la commande gcloud resource-manager tags bindings create :
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
TAG_VALUE_NAME: ID permanent ou nom de l'espace de noms de la valeur du tag à associer, tel quetagValues/4567890123ou1234567/my_tag_key/my_tag_value.RESOURCE_ID: ID complet de la table, avec le nom de domaine de l'API permettant de déterminer le type de ressource (//bigquery.googleapis.com/). Par exemple,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: emplacement de votre table.
Terraform
Ajoutez des tags au champ resource_tags de la table, puis appliquez la configuration mise à jour à l'aide de la ressource google_bigquery_table. Pour en savoir plus, consultez l'exemple Terraform dans Associer des tags lors de la création d'une table.
API
Appelez la méthode tables.update avec une ressource de table définie et incluez les tags dans le champ resource_tags.
Répertorier les tags associés à une table
Vous pouvez lister les tags directement associés à une table. Ce processus ne liste pas les tags hérités des ressources parentes.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.
Cliquez sur Présentation > Tables, puis sélectionnez une table.
Les tags sont visibles dans l'onglet Détails.
bq
Exécutez la commande bq show, puis recherchez la colonne tags. Si la table ne comporte aucun tag, la colonne tags ne s'affiche pas.
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant votre table.DATASET_ID: ID de l'ensemble de données contenant votre table.TABLE_ID: ID de votre table.
gcloud
Pour obtenir la liste des liaisons de tags associées à une ressource, exécutez la commande gcloud resource-manager tags bindings list :
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
RESOURCE_ID: ID complet de la table, avec le nom de domaine de l'API permettant de déterminer le type de ressource (//bigquery.googleapis.com/). Exemple ://bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: emplacement de votre ensemble de données.
Le résultat ressemble à ce qui suit :
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
Vous pouvez lister les tags hérités par les tables BigQuery à l'aide de gcloud resource-manager tags bindings list. Vous pouvez également utiliser l'option --filter de l'attribut namespacedTagValue pour filtrer les tags en fonction de l'ID du projet, de la valeur du tag ou de la clé du tag.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant votre ensemble de données.DATASET_ID: ID de l'ensemble de données.TAG_FILTER: spécifiez une valeur pour filtrer les tags hérités en fonction de l'un des éléments suivants :Filtrez les tags par ID du projet. Par exemple,
myproject.Filtrez les valeurs de tag en spécifiant l'ID permanent ou le nom d'espace de noms de la valeur de tag. Par exemple,
tagValues/4567890123ou1234567/my_tag_key/my_tag_value.Filtrez les clés de tag en spécifiant leur nom à afficher. Par exemple,
tagkey.
Terraform
Utilisez la commande terraform state show pour lister les attributs de la table, y compris le champ resource_tags. Exécutez cette commande dans le répertoire où le fichier de configuration Terraform de la table a été exécuté.
terraform state show google_bigquery_table.default
API
Appelez la méthode tables.get avec une ressource de table définie, puis recherchez le champ resource_tags.
Vues
Utilisez la vue INFORMATION_SCHEMA.TABLE_OPTIONS.
Par exemple, la requête suivante affiche tous les tags associés à toutes les tables d'un ensemble de données. Cette requête renvoie une table avec des colonnes, dont schema_name (nom de l'ensemble de données), option_name (toujours 'tags'), object_type (toujours ARRAY<STRUCT<STRING, STRING>>) et option_value, qui contient des tableaux d'objets STRUCT représentant les tags associés à chaque ensemble de données. Pour les tables sans tags attribués, la colonne option_value renvoie un tableau vide.
SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name='tags'
Remplacez DATASET_ID par l'ID de l'ensemble de données contenant votre table.
Dissocier les tags d'une table
Vous pouvez supprimer l'association d'un tag à une table en supprimant la liaison de tag. Si vous supprimez un tag, vous devez le dissocier de la table avant de le supprimer. Pour en savoir plus, consultez Supprimer des tags.
Console
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans le volet de gauche, cliquez sur Explorateur :

Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.
Cliquez sur Présentation > Tables, puis sélectionnez une table.
Cliquez sur l'onglet Détails, puis sur Modifier les détails.
Dans la section Tags, cliquez sur Supprimer l'élément à côté du tag que vous souhaitez supprimer.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction ALTER TABLE SET OPTIONS.
L'exemple suivant dissocie des tags d'une table à l'aide de l'opérateur -=. Pour dissocier tous les tags d'un tableau, vous pouvez spécifier tags=NULL ou tags=[].
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET_ID: ID de l'ensemble de données contenant la table.TABLE_ID: nom de la table dont vous dissociez les tags.TAG_KEY_1: nom de clé avec espace de noms du premier tag que vous souhaitez dissocier, par exemple'my-project/env'ou'556741164180/department'.TAG_VALUE_1: nom court de la valeur du tag que vous souhaitez dissocier (par exemple,'prod'ou'sales').TAG_KEY_2: nom de clé avec espace de noms pour le deuxième tag que vous dissociez.TAG_VALUE_2: nom court de la valeur du deuxième tag que vous dissociez.
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Pour supprimer certains tags d'une table, exécutez la commande bq update avec l'option --remove_tags :
bq update \ --remove_tags=TAG_KEYS \ PROJECT_ID:DATASET_ID.TABLE_ID
Remplacez les éléments suivants :
TAG_KEYS: clés de tag que vous dissociez de la table, séparées par des virgules. Exemple :556741164180/env,myProject/department. Chaque clé de tag doit porter le nom de l'espace de noms associé à la clé.PROJECT_ID: ID du projet contenant votre table.DATASET_ID: ID de l'ensemble de données contenant votre table.TABLE_ID: ID de la table que vous mettez à jour.
Pour supprimer tous les tags d'une table, exécutez la commande bq update avec l'option --clear_all_tags :
bq update \ --clear_all_tags \ PROJECT_ID:DATASET_ID.TABLE_ID
gcloud
Pour supprimer l'association d'un tag à une table à l'aide de la ligne de commande, supprimez la liaison de tag à l'aide de la commande gcloud resource-manager tags bindings delete :
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Remplacez les éléments suivants :
TAG_VALUE_NAME: ID permanent ou nom de l'espace de noms de la valeur du tag à supprimer, tel quetagValues/4567890123ou1234567/my_tag_key/my_tag_value.RESOURCE_ID: ID complet de la table, avec le nom de domaine de l'API permettant de déterminer le type de ressource (//bigquery.googleapis.com/). Exemple ://bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: emplacement de votre ensemble de données.
Terraform
Supprimez vos tags du champ resource_tags de la table, puis appliquez la configuration mise à jour à l'aide de la ressource google_bigquery_table.
API
Appelez la méthode tables.update avec une ressource de table définie et supprimez les tags dans le champ resource_tags. Pour supprimer tous les tags, supprimez le champ resource_tags.
Taguer d'autres ressources de type tableau
Vous pouvez également taguer les vues, les vues matérialisées, les clones et les instantanés BigQuery.
Taguer des colonnes
Vous pouvez taguer les colonnes de table avec des tags de gouvernance des données pour le contrôle des accès au niveau des colonnes et le masquage des données.
Supprimer les tags
Vous ne pouvez pas supprimer un tag s'il est référencé par une table, une vue ou un ensemble de données. Vous devez dissocier toutes les ressources de liaison de tag existantes avant de supprimer la clé ou la valeur du tag. Pour supprimer des clés et des valeurs de tags, consultez la section Supprimer des tags.
Exemple
Supposons que vous soyez administrateur d'une organisation. Vos analystes de données sont tous membres du groupe analysts@example.com, qui possède le rôle IAM de lecteur de données BigQuery sur le projet userData. Un analyste de données stagiaire est embauché et, conformément aux règles de l'entreprise, il ne doit être autorisé à afficher l'ensemble de données anonymousData que dans le projet userData.
Vous pouvez contrôler son accès à l'aide de tags.
Créez un tag avec la clé
employee_typeet la valeurintern:
Dans la console Cloud de Confiance , accédez à la page IAM.
Recherchez la ligne contenant le stagiaire auquel vous souhaitez restreindre l'accès à l'ensemble de données, puis cliquez sur Modifier le compte principal sur cette ligne.
Dans le menu Rôle, sélectionnez Lecteur de données BigQuery.
Cliquez sur Ajouter une condition :
Dans les champs Titre et Description, saisissez les valeurs décrivant la condition de tag IAM que vous souhaitez créer.
Dans l'onglet Générateur de conditions, cliquez sur Ajouter.
Dans le menu Type de condition, sélectionnez Ressource, puis Tag.
Dans le menu Opérateur, sélectionnez comporte une valeur.
Dans le champ Chemin d'accès de la valeur, saisissez le chemin d'accès de la valeur du tag au format
ORGANIZATION/TAG_KEY/TAG_VALUE(par exemple,example.org/employee_type/intern).
Cette condition de tag IAM restreint l'accès du stagiaire aux ensembles de données portant le tag
intern.Pour enregistrer la condition de tag, cliquez sur Enregistrer.
Pour enregistrer toutes les modifications que vous avez apportées dans le volet Modifier les autorisations, cliquez sur Enregistrer.
Pour associer la valeur du tag
internà l'ensemble de donnéesanonymousData, utilisez la ligne de commande pour exécuter la commandegcloud resource-manager tags bindings create. Exemple :gcloud resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
Contrôler l'accès aux colonnes avec des tags de gouvernance des données
Vous pouvez appliquer la sécurité au niveau des colonnes et le masquage des données dans BigQuery à l'aide de tags de gouvernance des données. Les tags de gouvernance des données sont un type de tag Resource Manager que vous pouvez associer à des colonnes sensibles et utiliser dans les règles de données BigQuery pour accorder un accès conditionnel à vos utilisateurs.
Configurez la sécurité au niveau des colonnes en créant des tags de gouvernance des données et en les associant à des colonnes BigQuery. Créez ensuite des règles de données BigQuery qui font référence à ces tags. Ces règles appliquent des règles de masquage des données ou accordent un accès aux données brutes à des utilisateurs spécifiques, ce qui garantit que seuls les principaux autorisés peuvent consulter les données sensibles.
Pour en savoir plus, consultez Présentation du contrôle des accès au niveau des colonnes et Présentation du masquage des données.
Avant de commencer à utiliser les tags de gouvernance
-
Installez la Google Cloud CLI.
-
Configurez la gcloud CLI afin d'utiliser votre identité fédérée.
Pour en savoir plus, consultez Se connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init - Pour créer et gérer des tags de gouvernance des données, vous devez utiliser l'édition Enterprise de BigQuery.
Rôles requis pour les tags de gouvernance des données
Pour obtenir les autorisations nécessaires pour contrôler l'accès aux colonnes à l'aide de tags de gouvernance des données, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Créez des tags de gouvernance des données :
- Administrateur de tags (
roles/resourcemanager.tagAdmin) sur le projet ou l'organisation - Lecteur de l'organisation (
roles/resourcemanager.organizationViewer) sur l'organisation
- Administrateur de tags (
-
Associer ou supprimer des tags de colonne :
- Propriétaire de données BigQuery (
roles/bigquery.dataOwner) sur la table - Utilisateur de tags (
roles/resourcemanager.tagUser) sur l'organisation, le projet ou la valeur du tag
- Propriétaire de données BigQuery (
-
Créer et gérer des règles de données :
Administrateur BigQuery (
roles/bigquerydatapolicy.admin) sur le projet
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer des tags de gouvernance des données
Créez la clé et les valeurs du tag de gouvernance des données.
Créer une clé de tag
Pour créer une clé pour un tag de gouvernance des données, définissez le champ purpose sur DATA_GOVERNANCE lorsque vous créez la clé de tag. Définir cet objectif permet de classer le tag pour la sécurité au niveau des colonnes ou le masquage des données, et de le distinguer des tags de ressources généraux dans BigQuery.
gcloud
Exécutez la commande
gcloud resource-manager tags keys create:gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=DATA_GOVERNANCERemplacez les éléments suivants :
TAG_KEY: nom court de la clé de tag.PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet, utilisezorganizations/ORGANIZATION_IDau lieu deprojects/PROJECT_ID.
API
Envoyez une requête
POSTau point de terminaisontagKeys:curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_KEY","parent":"projects/PROJECT_ID","purpose":"DATA_GOVERNANCE"}' \ --compressedRemplacez les éléments suivants :
TAG_KEY: nom court de la clé de tag.PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet, utilisezorganizations/ORGANIZATION_IDau lieu deprojects/PROJECT_ID.
Créer une valeur de tag
Pour ajouter une ou plusieurs valeurs à une clé de tag, procédez comme suit.
gcloud
Obtenez le nom avec espace de noms de la clé de tag en exécutant la commande
gcloud resource-manager tags keys list:gcloud resource-manager tags keys list --parent=projects/PROJECT_IDCréez une valeur en exécutant la commande
gcloud resource-manager tags values create:gcloud resource-manager tags values create TAG_VALUE \ --parent=PROJECT_ID/TAG_KEYRemplacez les éléments suivants :
TAG_VALUE: nom court de la valeur de tag spécifié par l'utilisateur.PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet, utilisez plutôt votreORGANIZATION_ID.
API
Obtenez le nom d'espace de noms pour la clé de tag :
curl --request GET \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name=PROJECT_ID/TAG_KEY" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json'La réponse contient le champ
name, par exempletagKeys/4567890123.Envoyez une requête
POSTau point de terminaisontagValuesavec le nom de clé du tag :curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagValues" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_VALUE","parent":"tagKeys/TAG_KEY_ID"}' \ --compressedRemplacez les éléments suivants :
TAG_VALUE: nom court de la valeur de tag spécifié par l'utilisateur.PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet, utilisez plutôt votreORGANIZATION_ID.TAG_KEY_ID: nom de l'espace de noms de la clé de tag de l'étape 1. Par exemple, si le nom de la clé de tag esttagKeys/4567890123, l'ID de la clé de tag est4567890123.
Créer des valeurs de tag hiérarchiques
Vous pouvez également créer une valeur de tag enfant associée à une valeur de tag parent et créer un arbre hiérarchique de valeurs de tag de gouvernance des données. La hiérarchie peut comporter cinq niveaux, comme illustré dans le diagramme suivant :
gcloud
Pour créer une valeur de tag enfant, exécutez la commande gcloud resource-manager tags values create et spécifiez une valeur de tag parent dans l'option --parent :
gcloud resource-manager tags values create CHILD_TAG_VALUE \
--parent=PROJECT_ID/TAG_KEY/PARENT_TAG_VALUE
Remplacez les éléments suivants :
CHILD_TAG_VALUE: nom court de la valeur de tag enfant que vous créez.PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS . Pour fournir une organisation au lieu d'un projet, utilisez plutôt votreORGANIZATION_ID.TAG_KEY: nom court de la clé de tag qui est le parent de la valeur de tag.PARENT_TAG_VALUE: nom court de la valeur du tag parent.
API
Pour créer une valeur de tag enfant, utilisez le nom de ressource de la valeur de tag du parent (par exemple, tagValues/123456789012) dans le champ parent :
curl --request POST \
"https://cloudresourcemanager.googleapis.com/v3/tagValues" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"shortName":"CHILD_TAG_VALUE","parent":"tagValues/PARENT_TAG_VALUE_ID"}' \
--compressed
Remplacez les éléments suivants :
CHILD_TAG_VALUE: nom court de la valeur de tag enfant que vous créez.PARENT_TAG_VALUE_ID: ID numérique de la valeur de tag parente.
Associer des tags de gouvernance des données à des colonnes BigQuery
Associez les tags de gouvernance des données que vous avez créés aux colonnes BigQuery que vous souhaitez protéger.
SQL
Créer une table avec une colonne taguée
Pour associer des tags de gouvernance des données lors de la création d'une table, utilisez l'instruction CREATE TABLE. Spécifiez le tag en définissant l'option data_governance_tags sur la colonne.
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID (
COLUMN_NAME INT64 OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")])
);
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS . Pour fournir une organisation au lieu d'un projet comme parent de votre tag, utilisez votreORGANIZATION_IDà la place du format de clé de tag (ORGANIZATION_ID/TAG_KEY).DATASET_ID: ID de l'ensemble de données dans lequel réside la table.TABLE_ID: ID de la table que vous créez.COLUMN_NAME: nom de la colonne que vous souhaitez taguer.TAG_KEY: clé de tag que vous souhaitez appliquer.TAG_VALUE: valeur de tag que vous souhaitez appliquer.
Ajouter un tag à une table existante
Pour associer des tags de gouvernance des données à une colonne d'une table existante, utilisez l'instruction ALTER TABLE pour définir l'option data_governance_tags sur la colonne.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
ALTER COLUMN COLUMN_NAME SET OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")]);
CLI bq
Créer une table avec une colonne taguée
Pour créer un fichier de schéma JSON local qui définit le tag, exécutez la commande
bq mk:bq mk \ --table \ --project_id=PROJECT_ID \ --description="description of my table" \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_IDRemplacez les éléments suivants :
PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet comme parent de votre tag, utilisez votreORGANIZATION_IDà la place du format de clé de tag (ORGANIZATION_ID/TAG_KEY).DATASET_ID: ID de l'ensemble de données dans lequel réside la table.TABLE_ID: ID de la table que vous créez.
Ajouter un tag à une table existante
Pour ajouter un tag à une table existante, commencez par exporter son schéma vers un fichier local :
bq show \ --project_id=PROJECT_ID \ --schema \ --format=prettyjson \ DATASET_ID.TABLE_ID > SCHEMA_FILE.jsonModifiez le fichier de schéma pour ajouter l'objet
dataGovernanceTagsInfoà la colonne. Exemple :[ { "description": "my sensitive column", "mode": "NULLABLE", "name": "Column_X", "type": "INT64", "dataGovernanceTagsInfo": { "dataGovernanceTags": { "PROJECT_ID/TAG_KEY": "TAG_VALUE" } } }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" } ]Mettez à jour la table pour associer des tags à la colonne sensible à l'aide de la commande
bq update:bq update \ --project_id=PROJECT_ID \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_IDVous pouvez également utiliser la commande
bq updatepour supprimer des tags existants et en ajouter de nouveaux.
API
Créer une table avec une colonne taguée
Utilisez la méthode tables.insert. Incluez le champ dataGovernanceTagsInfo dans le corps de la requête.
```json
{
"schema": {
"fields": [
{
"name": "Column_X",
"type": "INT64",
"description": "sensitive column",
"dataGovernanceTagsInfo": {
"dataGovernanceTags": {
"PROJECT_ID/TAG_KEY": "TAG_VALUE"
}
}
}
]
}
}
```
Ajouter un tag à une table existante
Récupérez la ressource de table actuelle avec la méthode
tables.get.Modifiez la ressource de table pour inclure le champ
dataGovernanceTagsInfopour la colonne cible.Appelez la méthode
tables.updateoutables.patchavec la ressource de table mise à jour.
Créer et gérer des règles relatives aux données
Créez et gérez des règles de données BigQuery qui font référence à des tags de gouvernance des données pour appliquer des règles de masquage ou des règles d'accès aux données brutes.
Une fois qu'une stratégie de données est créée pour une colonne taguée, seuls les utilisateurs spécifiés dans cette stratégie peuvent accéder à la colonne, à condition qu'ils aient également accès à la table. L'accès est refusé à tous les autres utilisateurs.
Créer des stratégies de données
API
Créez une stratégie de données qui utilise une règle de masquage SHA256 prédéfinie ou créez une stratégie d'accès aux données brutes.
Créer une stratégie de données avec une règle de masquage SHA256 prédéfinie
Pour créer une stratégie de données avec une règle de masquage SHA256 prédéfinie, envoyez une requête POST au point de terminaison dataPolicies :
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"DATA_MASKING_POLICY","dataMaskingPolicy":{"predefinedExpression":"SHA256"},"grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS. Pour fournir une organisation au lieu d'un projet en tant que parent de votre balise, utilisez votreORGANIZATION_IDà la place du formatdataGovernanceTag.key(ORGANIZATION_ID/TAG_KEY).LOCATION: région dans laquelle vous créez la règle de données. Pour en savoir plus, consultez la page Emplacements des règles relatives aux données.EMAIL_ADDRESS: adresse e-mail de l'utilisateur auquel accorder l'accès.TAG_KEY: nom court de la clé de tag.TAG_VALUE: nom court de la valeur du tag spécifié par l'utilisateur.POLICY_ID: ID du règlement sur les données.
Créer une règle d'accès aux données brutes
Pour créer une règle d'accès aux données brutes, définissez dataPolicyType sur RAW_DATA_ACCESS_POLICY :
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"RAW_DATA_ACCESS_POLICY","grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
Mettre à jour les stratégies des données
Mettez à jour une règle de données existante pour accorder l'accès à d'autres utilisateurs.
API
Pour ajouter des utilisateurs en mettant directement à jour une règle, commencez par obtenir la règle actuelle et son
etag:curl --request GET \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --compressedEnvoyez une requête
PATCHavec la liste mise à jour des bénéficiaires et leetagde l'étape précédente :curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"], "etag": "ETAG" }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID?updateMask=grantees"Remplacez
ETAGpar la valeuretagrenvoyée par la requêteGETà l'étape précédente.Vous pouvez également utiliser la méthode
addGranteespour ajouter des utilisateurs à une règle :curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:addGrantees"Pour supprimer des utilisateurs d'une règle, utilisez la méthode
removeGrantees:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:removeGrantees"
Supprimer les stratégies de données
API
Pour supprimer une règle de données, envoyez une requête DELETE au point de terminaison dataPolicies :
curl --request DELETE \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
Lister les règles relatives aux données
API
Pour lister les règles de données qui font référence à une clé de tag, envoyez une requête GET au point de terminaison dataPolicies avec un paramètre filter :
curl --request GET \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies?filter=dataGovernanceTag:PROJECT_ID/TAG_KEY" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
Interactions avec d'autres fonctionnalités
Cette section décrit comment les tags de gouvernance des données interagissent avec d'autres fonctionnalités BigQuery.
| Fonctionnalité | Interaction |
|---|---|
| Schéma d'informations | Les tags de gouvernance des données associés aux colonnes sont inclus dans les vues INFORMATION_SCHEMA.COLUMNS et INFORMATION_SCHEMA.COLUMN_FIELD_PATHS. |
| Copie de table | La copie de tables entre régions est désactivée pour les tables qui disposent de fonctionnalités de sécurité au niveau des colonnes, y compris celles qui comportent des tags de gouvernance des données. |
| Fonctionnalité temporelle | L'accès aux données historiques des tables est régi par les règles d'accès et les tags associés aux tables. |
Configurer un projet de règle de données par défaut
Lorsque vous accédez à des colonnes protégées par des tags de gouvernance des données, BigQuery n'évalue par défaut que les règles de données du projet dans lequel se trouve la table. Les règles relatives aux données définies dans d'autres projets ne s'appliquent pas, sauf si un administrateur configure un projet de règles relatives aux données par défaut au niveau de l'organisation.
Si un projet de règles de données par défaut est configuré pour votre organisation, BigQuery évalue à la fois les règles de données du projet de la table et celles du projet de règles de données par défaut lorsqu'il détermine l'accès aux colonnes.
Si un utilisateur est soumis à des règles de données conflictuelles à la fois dans le projet de la table et dans le projet de règles de données par défaut, les règles de données du projet de la table prévalent.
Pour définir ou afficher l'option default_data_policy_projects au niveau de l'organisation à l'aide des vues LDD ou INFORMATION_SCHEMA, consultez Paramètres de gestion des données dans la documentation sur la configuration par défaut.
Limites des tags de gouvernance des données
- Les tables BigQuery Omni ne sont pas compatibles avec les tags de gouvernance des données sur les colonnes.
- Vous pouvez utiliser la console Cloud de Confiance by S3NS pour afficher les tags de gouvernance des données sur les colonnes, mais pas pour les associer ni les dissocier.
- Vous pouvez associer un tag par colonne et jusqu'à 1 000 tags uniques par tableau.
- Si vous interrogez une colonne taguée à l'aide de l'API BigQuery Storage Read, des appels
tabledata.listou des tables génériques, vous recevrez un message d'erreur "Accès refusé", sauf si une règle de données vous y autorise. - Pour les champs
STRUCT, vous ne pouvez appliquer des tags de gouvernance des données qu'aux champs feuille. - Vous pouvez supprimer les valeurs de tag associées aux colonnes. Si vous supprimez une valeur de tag, la liaison de tag persiste dans la colonne, mais comme la valeur de tag n'existe plus, vous risquez de perdre l'accès à la colonne.
Résoudre les problèmes liés aux tags de gouvernance des données
Cette section explique comment résoudre les problèmes courants liés au contrôle de l'accès aux colonnes avec des tags de gouvernance des données.
Noms de balises mal formatés
Lorsque vous créez des tags, vous définissez un nom court (par exemple, ssn). Toutefois, lorsque vous associez des tags à des colonnes de votre schéma ou que vous les utilisez dans des conditions, la clé de tag doit utiliser le format avec espace de noms (PROJECT_ID/TAG_KEY ou ORGANIZATION_ID/TAG_KEY), tandis que la valeur de tag utilise toujours le nom court. Si vous ne fournissez que le nom court de la clé de tag, une erreur Invalid tagKey ou Invalid
tagValue se produit.
Application des règles multiprojets
Par défaut, seules les règles relatives aux données du projet de la table sont évaluées. Les règles des autres projets ne s'appliquent pas, sauf si un projet de règles de données par défaut est configuré au niveau de l'organisation. Pour en savoir plus sur la configuration et l'évaluation des règles multiprojets, consultez Configurer un projet de règles de données par défaut.
Étapes suivantes
- Pour en savoir plus sur les tags dans Cloud de Confiance by S3NS, consultez la page Présentation des tags.
- Pour en savoir plus sur l'utilisation des tags, consultez la page Créer et gérer des tags.
- En savoir plus sur l'application de règles aux colonnes
- Pour en savoir plus sur le contrôle des accès aux ressources BigQuery avec des conditions IAM, consultez la page Contrôler les accès avec des conditions IAM.