Ajouter des tags aux tables, aux vues et aux ensembles de données
Ce document explique comment utiliser des tags pour appliquer des stratégies Identity and Access Management (IAM) de manière conditionnelle aux tables, vues et ensembles de données BigQuery.
Un tag est une paire clé-valeur que vous pouvez associer directement à une table, une vue ou un ensemble de données, ou dont une table, une vue ou un ensemble de données peut hériter d'autres ressourcesGoogle Cloud . Vous pouvez appliquer des règles de manière conditionnelle selon qu'une ressource possède un tag spécifique. Par exemple, vous pouvez accorder de manière conditionnelle le rôle "Lecteur de données BigQuery" à un compte principal sur n'importe quel ensemble de données doté du tag environment:dev
.
Pour en savoir plus sur l'utilisation des tags dans la hiérarchie des ressources Google Cloud, 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.
Avant de commencer
Vous devez attribuer des rôles IAM qui donnent aux utilisateurs les autorisations nécessaires pour effectuer chaque tâche de ce document. Vous devez également créer des clés et des valeurs de tag à associer aux ressources.
Autorisations requises
Pour utiliser des tags dans BigQuery, vous devez disposer des autorisations suivantes :
- Pour associer un tag à une table ou à une vue, vous devez disposer de l'autorisation IAM
bigquery.tables.createTagBinding
sur la table ou la vue, et de l'autorisationresourcemanager.tagValueBindings.create
au niveau du projet sur la valeur de tag que vous souhaitez associer. - Pour associer un tag à un ensemble de données, vous devez disposer de l'autorisation IAM
bigquery.datasets.createTagBinding
sur l'ensemble de données et de l'autorisationresourcemanager.tagValueBindings.create
au niveau du projet sur la valeur de tag que vous souhaitez associer. - Pour supprimer un tag d'une table ou d'une vue, vous devez disposer de l'autorisation IAM
bigquery.tables.deleteTagBinding
sur la table ou la vue, et de l'autorisationresourcemanager.tagValueBindings.delete
au niveau du projet sur la valeur de tag que vous souhaitez supprimer. - Pour supprimer un tag d'un ensemble de données, vous devez disposer de l'autorisation IAM
bigquery.datasets.deleteTagBinding
sur l'ensemble de données et de l'autorisationresourcemanager.tagValueBindings.delete
au niveau du projet sur la valeur de tag que vous souhaitez supprimer. - Pour lister les clés de tag associées à une organisation ou à un projet parent dans le panneau Modifier les détails d'une table, d'une vue ou d'un ensemble de données, vous devez disposer de l'autorisation
resourcemanager.tagKeys.list
au niveau du parent de la clé de tag et de l'autorisationresourcemanager.tagKeys.get
pour chaque clé de tag. - Pour lister les valeurs de tag des clés associées à une organisation ou à un projet parent dans le panneau Modifier les détails d'une table, d'une vue ou d'un ensemble de données, vous devez disposer de l'autorisation
resourcemanager.tagValues.list
au niveau du parent de la valeur de tag et de l'autorisationresourcemanager.tagValues.get
pour chaque valeur de tag.
Si vous utilisez des tags avec l'API Cloud Resource Manager ou gcloud, vous avez également 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
.
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 sont incluses dans le rôle Utilisateur de tags (roles/resourcemanager.tagUser
).
Vous pouvez également utiliser des tags pour refuser l'accès aux tables, vues et ensembles de données BigQuery de manière conditionnelle avec des stratégies IAM (bêta). Pour en savoir plus, consultez la section Stratégies de refus.
Créer des clés et des valeurs de tags
Avant de pouvoir associer un tag, vous devez d'abord créer un tag et configurer sa valeur. Pour créer des clés et des valeurs de tag, consultez les sections Créer un tag et Ajouter des valeurs de tag.
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 Google Cloud, accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet, 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.
Dans la section Tags, sélectionnez les tags que vous souhaitez ajouter à la nouvelle table.
Cliquez sur Créer la table.
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 table que vous créez.
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 Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud 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.tf
que 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
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, 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 Google Cloud, accédez à la page BigQuery.
Dans le volet Explorer, développez votre projet et votre ensemble de données, puis sélectionnez une table.
Dans l'onglet Détails, cliquez sur
Modifier les détails.Dans la section Tags, sélectionnez les tags que vous souhaitez ajouter à la table.
Cliquez sur Enregistrer.
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=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Remplacez les éléments suivants :
TAGVALUE_NAME
: ID permanent ou nom de l'espace de noms de la valeur du tag à associer, tel quetagValues/4567890123
ou1234567/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 Google Cloud, accédez à la page BigQuery.
Dans le volet Explorer, développez votre projet et votre ensemble de données, 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
Terraform
Utilisez la commande terraform state show
pour lister les attributs du tableau, 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 une association de tag d'une table en supprimant la liaison de tag. Pour supprimer un tag, vous devez d'abord le dissocier.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Dans le volet Explorer, développez votre projet et votre ensemble de données, puis sélectionnez une table.
Dans l'onglet Détails, cliquez sur
Modifier les détails.Dans la section Tags, supprimez les tags que vous souhaitez dissocier de la table.
Cliquez sur Enregistrer.
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 une association de tag d'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=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Remplacez les éléments suivants :
TAGVALUE_NAME
: ID permanent ou nom de l'espace de noms de la valeur du tag à supprimer, tel quetagValues/4567890123
ou1234567/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
.
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 Google Cloud, accédez à la page BigQuery.
Dans le panneau Explorateur, sélectionnez le projet dans lequel vous souhaitez créer votre ensemble de données.
Cliquez sur > Créer un ensemble de données.
Afficher les actionsDans le menu Balises, cliquez sur Sélectionner le champ d'application.
Sélectionnez le champ d'application de vos tags.
Sélectionnez et ajoutez les tags que vous souhaitez ajouter à l'ensemble de données.
Cliquez sur Créer l'ensemble de données.
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 que vous créez.
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 Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud 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.tf
que 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
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, 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 Google Cloud, accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et 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, sélectionnez les tags que vous souhaitez ajouter à l'ensemble de données.
Cliquez sur Enregistrer.
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=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Remplacez les éléments suivants :
TAGVALUE_NAME
: ID permanent ou nom de l'espace de noms de la valeur du tag à associer, tel quetagValues/4567890123
ou1234567/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. Elles ne renvoient aucun tag hérité des ressources parentes.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et 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
Terraform
Utilisez la commande terraform state show
pour lister les attributs du jeu 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 d'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 balises attribuées, 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. Pour supprimer un tag, vous devez d'abord le dissocier.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et 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.
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=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Remplacez les éléments suivants :
TAGVALUE_NAME
: ID permanent ou nom de l'espace de noms de la valeur du tag à dissocier, tel quetagValues/4567890123
ou1234567/my_tag_key/my_tag_value
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.
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
.
Taguer d'autres ressources semblables à des tableaux
Vous pouvez également taguer des vues BigQuery, des vues matérialisées, des clones et des instantanés.
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_type
et la valeurintern
:Dans la console Google Cloud, 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
:gcloud resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
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 Google Cloud. Les modifications des 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.
Par exemple, Data Catalog ne peut pas vérifier les conditions de tag IAM sur les ensembles de données et les tables BigQuery. Supposons qu'une stratégie IAM conditionnelle attribue à un stagiaire le rôle "Lecteur de données BigQuery" sur les ensembles de données portant le tag
employee_type=intern
. Comme il s'agit d'une condition de tag positive, le stagiaire ne peut pas afficher les ensembles de données en effectuant une recherche dans Data Catalog, même s'ils comportent le tagemployee_type=intern
. Si la condition de tag a été remplacée par une condition négative afin que le stagiaire ne puisse afficher que les ensembles de données ne portant pas le tagemployee_type=intern
, la vérification est ignorée complètement et le stagiaire a pu afficher les ensembles de données auxquels il ne pouvait pas accéder normalement dans BigQuery.
Étape suivante
- Pour en savoir plus sur les tags dans Google Cloud, 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.
- 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.