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
  • Autorisation bigquery.tables.createTagBinding sur la table ou la vue
  • Autorisation resourcemanager.tagValueBindings.create sur la valeur de tag
  • Autorisation bigquery.tables.create pour associer un tag lors de la création d'une table ou d'une vue
  • Autorisation bigquery.tables.update pour associer un tag lors de la mise à jour d'une table ou d'une vue
  • Autorisation bigquery.tables.createTagBinding sur la table ou la vue
  • Autorisation resourcemanager.tagValueBindings.create sur la valeur de tag
Supprimer un tag d'une table ou d'une vue
  • Autorisation bigquery.tables.deleteTagBinding sur la table ou la vue
  • Autorisation resourcemanager.tagValueBindings.delete sur la valeur de tag
  • Autorisation bigquery.tables.update pour supprimer un tag lors de la mise à jour d'une table ou d'une vue
  • Autorisation bigquery.tables.deleteTagBinding sur la table ou la vue
  • Autorisation resourcemanager.tagValueBindings.delete sur la valeur de tag
Associer un tag à un ensemble de données
  • Autorisation bigquery.datasets.createTagBinding sur l'ensemble de données
  • Autorisation resourcemanager.tagValueBindings.create sur la valeur de tag
  • Autorisation bigquery.datasets.create pour associer un tag lors de la création d'un ensemble de données
  • Autorisation bigquery.datasets.update pour associer un tag lors de la mise à jour d'un ensemble de données
  • Autorisation bigquery.datasets.createTagBinding sur l'ensemble de données
  • Autorisation resourcemanager.tagValueBindings.create sur la valeur de tag
Supprimer un tag d'un ensemble de données
  • Autorisation bigquery.datasets.deleteTagBinding sur l'ensemble de données
  • Autorisation resourcemanager.tagValueBindings.delete sur la valeur de tag
  • Autorisation bigquery.datasets.update pour supprimer un tag lors de la mise à jour d'un ensemble de données
  • Autorisation bigquery.datasets.deleteTagBinding sur l'ensemble de données
  • Autorisation resourcemanager.tagValueBindings.delete sur la valeur de tag

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.list au niveau du parent de la clé de tag et de l'autorisation resourcemanager.tagKeys.get pour 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.list au niveau du parent de la valeur de tag et de l'autorisation resourcemanager.tagValues.get pour 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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

    Si le volet de gauche ne s'affiche pas, cliquez sur Développer le volet de gauche pour l'ouvrir.

  3. Dans le panneau Explorateur, sélectionnez le projet dans lequel vous souhaitez créer votre ensemble de données.

  4. Cliquez sur Afficher les actions > Créer un ensemble de données.

  5. Saisissez les informations concernant votre nouvel ensemble de données. Pour en savoir plus, consultez Créer des ensembles de données.

  6. Développez la section Tags.

    1. Pour appliquer un tag existant, procédez comme suit :

      1. 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.

      2. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    2. Pour saisir manuellement un tag, procédez comme suit :

      1. 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.

      2. Si vous créez un tag pour votre projet ou votre organisation, saisissez PROJECT_ID ou ORGANIZATION_ID dans la boîte de dialogue, puis cliquez sur Enregistrer.

      3. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    3. Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.

  7. Cliquez sur Créer un ensemble de données.

SQL

Utilisez l'instruction CREATE SCHEMA.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 :


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env2"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department2"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # Attach tags to the dataset
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Pour appliquer votre configuration Terraform dans un projet Cloud de Confiance , suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. 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).

  1. 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 exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. 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

  1. 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.

  2. 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).

  3. 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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.

  4. Dans le panneau Informations sur l'ensemble de données, cliquez sur  Modifier les détails.

  5. Développez la section Tags.

    1. Pour appliquer un tag existant, procédez comme suit :

      1. 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.

      2. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    2. Pour saisir manuellement un tag, procédez comme suit :

      1. 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.

      2. Si vous créez un tag pour votre projet ou votre organisation, saisissez PROJECT_ID ou ORGANIZATION_ID dans la boîte de dialogue, puis cliquez sur Enregistrer.

      3. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    3. Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.

  6. 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.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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é.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 que tagValues/4567890123 ou 1234567/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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. 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/4567890123 ou 1234567/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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.

  4. Dans le panneau Informations sur l'ensemble de données, cliquez sur  Modifier les détails.

  5. Dans la section Tags, cliquez sur Supprimer l'élément à côté du tag que vous souhaitez supprimer.

  6. 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=[].

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 que tagValues/4567890123 ou 1234567/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.

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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.

  4. Dans la section Informations sur l'ensemble de données, cliquez sur  Créer une table.

  5. Saisissez les informations concernant votre nouvelle table. Pour en savoir plus, consultez Créer et utiliser des tables.

  6. Développez la section Tags.

    1. Pour appliquer un tag existant, procédez comme suit :

      1. 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.

      2. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    2. Pour saisir manuellement un tag, procédez comme suit :

      1. 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.

      2. Si vous créez un tag pour votre projet ou votre organisation, saisissez PROJECT_ID ou ORGANIZATION_ID dans la boîte de dialogue, puis cliquez sur Enregistrer.

      3. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    3. Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.

  7. Cliquez sur Créer une table.

SQL

Utilisez l'instruction CREATE TABLE.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 :

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 :


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env3"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department3"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "MyDataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days
}

# Create a table
resource "google_bigquery_table" "default" {
  dataset_id  = google_bigquery_dataset.default.dataset_id
  table_id    = "mytable"
  description = "table description"

  # Attach tags to the table
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Pour appliquer votre configuration Terraform dans un projet Cloud de Confiance , suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. 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).

  1. 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 exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. 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

  1. 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.

  2. 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).

  3. 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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.

  4. Cliquez sur Présentation > Tables, puis sélectionnez une table.

  5. Cliquez sur l'onglet Détails, puis sur Modifier les détails.

  6. Développez la section Tags.

    1. Pour appliquer un tag existant, procédez comme suit :

      1. 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.

      2. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    2. Pour saisir manuellement un tag, procédez comme suit :

      1. 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.

      2. Si vous créez un tag pour votre projet ou votre organisation, saisissez PROJECT_ID ou ORGANIZATION_ID dans la boîte de dialogue, puis cliquez sur Enregistrer.

      3. Pour Clé 1 et Valeur 1, choisissez les valeurs appropriées dans les listes.

    3. Facultatif : Pour ajouter des tags à la table, cliquez sur Ajouter un tag et suivez les étapes précédentes.

  7. Cliquez sur Enregistrer.

SQL

Utilisez l'instruction ALTER TABLE SET OPTIONS.

L'exemple suivant écrase tous les tags d'une table existante.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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é.

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 que tagValues/4567890123 ou 1234567/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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.

  4. 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/4567890123 ou 1234567/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

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

  3. Dans le volet Explorateur, développez votre projet, puis cliquez sur Ensembles de données.

  4. Cliquez sur Présentation > Tables, puis sélectionnez une table.

  5. Cliquez sur l'onglet Détails, puis sur Modifier les détails.

  6. Dans la section Tags, cliquez sur Supprimer l'élément à côté du tag que vous souhaitez supprimer.

  7. 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=[].

  1. Dans la console Cloud de Confiance , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.

  3. 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 que tagValues/4567890123 ou 1234567/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.

  1. Créez un tag avec la clé employee_type et la valeur intern :

    Exemple de création d'une clé et de valeurs de tags.

  2. Dans la console Cloud de Confiance , accédez à la page IAM.

    Accéder à IAM

  3. 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.

  4. Dans le menu Rôle, sélectionnez Lecteur de données BigQuery.

  5. Cliquez sur Ajouter une condition :

  6. Dans les champs Titre et Description, saisissez les valeurs décrivant la condition de tag IAM que vous souhaitez créer.

  7. Dans l'onglet Générateur de conditions, cliquez sur Ajouter.

  8. Dans le menu Type de condition, sélectionnez Ressource, puis Tag.

  9. Dans le menu Opérateur, sélectionnez comporte une valeur.

  10. 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).

    Exemple de condition IAM utilisant des tags

    Cette condition de tag IAM restreint l'accès du stagiaire aux ensembles de données portant le tag intern.

  11. Pour enregistrer la condition de tag, cliquez sur Enregistrer.

  12. Pour enregistrer toutes les modifications que vous avez apportées dans le volet Modifier les autorisations, cliquez sur Enregistrer.

  13. Pour associer la valeur du tag intern à l'ensemble de données anonymousData, utilisez la ligne de commande pour exécuter la commande gcloud 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

  1. Installez la Google Cloud CLI.

  2. 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.

  3. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  4. 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 :

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

  1. Exécutez la commande gcloud resource-manager tags keys create :

    gcloud resource-manager tags keys create TAG_KEY \
        --parent=projects/PROJECT_ID \
        --purpose=DATA_GOVERNANCE
    

    Remplacez 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, utilisez organizations/ORGANIZATION_ID au lieu de projects/PROJECT_ID.

API

  1. Envoyez une requête POST au point de terminaison tagKeys :

    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"}' \
      --compressed
    

    Remplacez 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, utilisez organizations/ORGANIZATION_ID au lieu de projects/PROJECT_ID.

Créer une valeur de tag

Pour ajouter une ou plusieurs valeurs à une clé de tag, procédez comme suit.

gcloud

  1. 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_ID
    
  2. Cré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_KEY
    

    Remplacez 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 votre ORGANIZATION_ID.

API

  1. 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 exemple tagKeys/4567890123.

  2. Envoyez une requête POST au point de terminaison tagValues avec 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"}' \
      --compressed
    

    Remplacez 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 votre ORGANIZATION_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 est tagKeys/4567890123, l'ID de la clé de tag est 4567890123.

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 :

Schéma du workflow de contrôle des accès au niveau des colonnes à l'aide de tags de gouvernance des données.

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 votre ORGANIZATION_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 votre ORGANIZATION_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

  1. 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_ID
    

    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 votre ORGANIZATION_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

  1. 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.json
    
  2. Modifiez 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"
      }
    ]
    
  3. 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_ID
    

    Vous pouvez également utiliser la commande bq update pour 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

  1. Récupérez la ressource de table actuelle avec la méthode tables.get.

  2. Modifiez la ressource de table pour inclure le champ dataGovernanceTagsInfo pour la colonne cible.

  3. Appelez la méthode tables.update ou tables.patch avec 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 votre ORGANIZATION_ID à la place du format dataGovernanceTag.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

  1. 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' \
        --compressed
    
  2. Envoyez une requête PATCH avec la liste mise à jour des bénéficiaires et le etag de 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 ETAG par la valeur etag renvoyée par la requête GET à l'étape précédente.

    Vous pouvez également utiliser la méthode addGrantees pour 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"
    
  3. 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.list ou 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