Modifications apportées aux contrôles d'accès au niveau de l'ensemble de données

Si vous choisissez d'appliquer la configuration enable_fine_grained_dataset_acls_option pour les contrôles d'accès au niveau de l'ensemble de données, l'autorisation bigquery.datasets.getIamPolicy IAM (Identity and Access Management) est requise pour afficher les contrôles d'accès d'un ensemble de données et interroger la vue INFORMATION_SCHEMA.OBJECT_PRIVILEGES. L'bigquery.datasets.setIamPolicy autorisation est requise pour mettre à jour les contrôles d'accès d'un ensemble de données ou pour créer un ensemble de données avec des contrôles d'accès à l' API.

Si vous ne choisissez pas d'appliquer la configuration, les contrôles d'accès au niveau de l'ensemble de données restent inchangés.

Choisir d'appliquer la configuration

Vous pouvez choisir d'appliquer les modifications apportées aux autorisations. Dans ce cas, l'autorisation bigquery.datasets.getIamPolicy est nécessaire pour obtenir les contrôles d'accès d'un ensemble de données, et l'autorisation bigquery.datasets.setIamPolicy est nécessaire pour mettre à jour les contrôles d'accès d'un ensemble de données ou pour créer un ensemble de données avec des contrôles d'accès à l'aide de l'API.

Pour choisir d'appliquer la configuration, définissez le paramètre de configuration enable_fine_grained_dataset_acls_option sur TRUE au niveau de l'organisation ou du projet. Si vous souhaitez revenir en arrière après avoir choisi d'appliquer la configuration, définissez le paramètre de configuration enable_fine_grained_dataset_acls_option sur FALSE au niveau de l'organisation ou du projet. Pour savoir comment activer les paramètres de configuration, consultez Gérer les paramètres de configuration .

Exemples de paramètres de configuration

Les exemples suivants montrent comment définir et supprimer le paramètre de configuration enable_fine_grained_dataset_acls_option.

Configurer les paramètres de l'organisation

Pour configurer les paramètres de l'organisation, utilisez l' ALTER ORGANIZATION SET OPTIONS instruction LDD. L'exemple suivant définit enable_fine_grained_dataset_acls_option sur TRUE au niveau de l'organisation :

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

Remplacez REGION par la région associée à votre organisation, par exemple us ou europe-west6.

L'exemple suivant efface le paramètre enable_fine_grained_dataset_acls_option au niveau de l'organisation :

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

Configurer les paramètres du projet

Pour configurer les paramètres du projet, utilisez l'instruction LDD ALTER PROJECT SET OPTIONS. L'instruction LDD ALTER PROJECT SET OPTIONS accepte éventuellement la variable project_id. Si project_id n'est pas spécifié, il s'agit par défaut du projet en cours dans lequel la requête est exécutée.

L'exemple suivant définit enable_fine_grained_dataset_acls_option sur TRUE.

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

Remplacez PROJECT_ID par l'ID du projet.

L'exemple suivant efface le paramètre enable_fine_grained_dataset_acls_option au niveau du projet :

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

Modifications apportées aux rôles personnalisés

Si vous choisissez d'appliquer les modifications apportées aux autorisations, tous les rôles personnalisés qui accordent les autorisations bigquery.datasets.get, bigquery.datasets.create ou bigquery.datasets.update et qui n'accordent pas également les autorisations bigquery.datasets.getIamPolicy ou bigquery.datasets.setIamPolicy sont concernés.

Tous les rôles personnalisés qui n'incluent que les autorisations bigquery.datasets.get, bigquery.datasets.update, ou bigquery.datasets.create doivent être mis à jour pour inclure les autorisations bigquery.datasets.getIamPolicy ou bigquery.datasets.setIamPolicy, si vous souhaitez conserver les fonctionnalités existantes des rôles personnalisés. Si vos rôles personnalisés n'ont besoin d'afficher ou de mettre à jour que les métadonnées d'un ensemble de données, utilisez les nouveaux paramètres dataset_view et update_mode.

Les rôles prédéfinis BigQuery ne sont pas concernés par cette modification. Tous les rôles prédéfinis qui accordent l'autorisation bigquery.datasets.get accordent également l'autorisation bigquery.datasets.getIamPolicy. Tous les rôles prédéfinis qui accordent l'autorisation bigquery.datasets.update accordent également l'autorisation bigquery.datasets.setIamPolicy.

Modifications apportées aux commandes de l'outil de ligne de commande bq

Lorsque vous choisissez d'appliquer la configuration de manière anticipée, les commandes d'outil bq suivantes sont concernées.

bq show

Vous pouvez exécuter la bq show commande avec les options suivantes :

--dataset_view={METADATA|ACL|FULL}
Spécifie comment appliquer les autorisations lorsque vous affichez les contrôles d'accès ou les métadonnées d'un ensemble de données. Utilisez l'une des valeurs suivantes :
  • METADATA : affiche uniquement les métadonnées de l'ensemble de données. Cette valeur nécessite l'autorisation bigquery.datasets.get.
  • ACL : affiche uniquement les contrôles d'accès de l'ensemble de données. Cette valeur nécessite l'autorisation bigquery.datasets.getIamPolicy.
  • FULL : affiche à la fois les métadonnées et les contrôles d'accès de l'ensemble de données. Cette valeur nécessite l'autorisation bigquery.datasets.get et bigquery.datasets.getIamPolicy autorisations.

bq update

Vous pouvez exécuter la bq update commande avec les options suivantes :

--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}
Spécifie comment appliquer les autorisations lorsque vous mettez à jour les contrôles d'accès ou les métadonnées d'un ensemble de données. Utilisez l'une des valeurs suivantes :
  • UPDATE_METADATA : met à jour uniquement les métadonnées de l'ensemble de données. Cette valeur nécessite l'autorisation bigquery.datasets.update.
  • UPDATE_ACL : met à jour uniquement les contrôles d'accès de l'ensemble de données. Cette valeur nécessite l'autorisation bigquery.datasets.setIamPolicy.
  • UPDATE_FULL : met à jour à la fois les métadonnées et les contrôles d'accès de l'ensemble de données. Cette valeur nécessite les autorisations bigquery.datasets.update et bigquery.datasets.setIamPolicy.

Modifications apportées aux instructions de langage de contrôle de données (DCL)

Lorsque vous choisissez d'appliquer la configuration de manière anticipée, les autorisations suivantes sont requises pour exécuter GRANT et REVOKE instructions sur des ensembles de données à l'aide du langage de contrôle de données (DCL) :

  • bigquery.datasets.setIamPolicy

Modifications apportées aux requêtes de vue INFORMATION_SCHEMA

Lorsque vous choisissez d'appliquer la configuration de manière anticipée, l'bigquery.datasets.getIamPolicy autorisation est requise pour interroger la INFORMATION_SCHEMA.OBJECT_PRIVILEGES vue.

Modifications apportées aux méthodes d'API

Après avoir choisi d'appliquer la configuration de manière anticipée, les méthodes d'ensemble de données de l'API REST v2 suivantes sont concernées.

Méthode datasets.get

La méthode datasets.get comporte un paramètre de requête supplémentaire nommé dataset_view.

Ce paramètre vous permet de mieux contrôler les informations renvoyées par la méthode datasets.get. Au lieu de toujours renvoyer à la fois les contrôles d'accès et les métadonnées, le paramètre dataset_view vous permet de spécifier si vous souhaitez renvoyer uniquement les métadonnées, uniquement les contrôles d'accès ou les deux.

Le champ access de la ressource d'ensemble de données contient les contrôles d'accès de l'ensemble de données. Les autres champs tels que friendlyName, description et labels représentent les métadonnées de l'ensemble de données.

Le tableau suivant présente l'autorisation requise et la réponse de l'API pour les différentes valeurs acceptées par le paramètre dataset_view :

Valeur du paramètre Autorisations requises Réponse de l'API
DATASET_VIEW_UNSPECIFIED (ou vide)
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
Valeur par défaut. Renvoie les métadonnées et les contrôles d'accès de l'ensemble de données.
METADATA
  • bigquery.datasets.get
Renvoie les métadonnées de l'ensemble de données.
ACL
  • bigquery.datasets.getIamPolicy
Renvoie les contrôles d'accès, les champs obligatoires et les champs de la ressource d'ensemble de données qui sont en sortie uniquement.
FULL
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
Renvoie les métadonnées et les contrôles d'accès de l'ensemble de données.

Si vous ne choisissez pas d'appliquer la configuration de manière anticipée ou si vous revenez en arrière après avoir choisi de l'appliquer, vous pouvez utiliser le paramètre dataset_view avec les valeurs METADATA ou ACL. Les valeurs FULL et DATASET_VIEW_UNSPECIFIED (ou vide) reprennent le comportement précédent. L'autorisation bigquery.datasets.get vous permet d'obtenir à la fois les métadonnées et les contrôles d'accès.

Exemple

L'exemple suivant envoie une requête GET avec le paramètre dataset_view défini sur METADATA :

GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1

Remplacez les éléments suivants :

  • YOUR_PROJECT : nom de votre projet
  • YOUR_DATASET : nom de l'ensemble de données
  • YOUR_API_KEY : votre clé API

Méthode datasets.update

La méthode datasets.update comporte un paramètre de requête supplémentaire nommé update_mode.

Ce paramètre vous permet de mieux contrôler les champs mis à jour par la méthode datasets.update. Au lieu de toujours autoriser les mises à jour à la fois des contrôles d'accès et des métadonnées, le paramètre update_mode vous permet de spécifier si vous souhaitez mettre à jour uniquement les métadonnées, uniquement les contrôles d'accès ou les deux.

Le champ access de la ressource d'ensemble de données contient les contrôles d'accès de l'ensemble de données. Les autres champs tels que friendlyName, description et labels représentent les métadonnées de l'ensemble de données.

Le tableau suivant présente l'autorisation requise et la réponse de l'API pour les différentes valeurs acceptées par le paramètre update_mode :

Valeur du paramètre Autorisations requises Réponse de l'API
UPDATE_MODE_UNSPECIFIED (ou vide)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Valeur par défaut. Renvoie les métadonnées et les contrôles d'accès mis à jour de l'ensemble de données.
UPDATE_METADATA
  • bigquery.datasets.update
Renvoie les métadonnées mises à jour de l'ensemble de données.
UPDATE_ACL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Renvoie les contrôles d'accès mis à jour, les champs obligatoires et les champs de la ressource d'ensemble de données qui sont en sortie uniquement.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Renvoie les métadonnées et les contrôles d'accès mis à jour de l'ensemble de données.

Si vous ne choisissez pas d'appliquer la configuration de manière anticipée ou si vous revenez en arrière après avoir choisi de l'appliquer, BigQuery reprend le comportement précédent. L'autorisation bigquery.datasets.update vous permet de mettre à jour à la fois les métadonnées et les contrôles d'accès.

Exemple

L'exemple suivant envoie une requête PUT avec le paramètre update_mode défini sur METADATA :

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

Remplacez les éléments suivants :

  • YOUR_PROJECT : nom de votre projet
  • YOUR_DATASET : nom de l'ensemble de données
  • YOUR_API_KEY : nom de votre clé API

Méthode datasets.patch

La méthode datasets.patch comporte un paramètre de requête supplémentaire nommé update_mode.

Ce paramètre vous permet de mieux contrôler les champs mis à jour par la méthode datasets.patch. Au lieu de toujours autoriser les mises à jour à la fois des contrôles d'accès et des métadonnées, le paramètre update_mode vous permet de spécifier si vous souhaitez mettre à jour uniquement les métadonnées, uniquement les contrôles d'accès ou les deux.

Le champ access de la ressource d'ensemble de données contient les contrôles d'accès de l'ensemble de données. Les autres champs tels que friendlyName, description et labels représentent les métadonnées de l'ensemble de données.

Le tableau suivant présente l'autorisation requise et la réponse de l'API pour les différentes valeurs acceptées par le paramètre update_mode :

Valeur du paramètre Autorisations requises Réponse de l'API
UPDATE_MODE_UNSPECIFIED (ou vide)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Valeur par défaut. Renvoie les métadonnées et les contrôles d'accès mis à jour de l'ensemble de données.
UPDATE_METADATA
  • bigquery.datasets.update
Renvoie les métadonnées mises à jour de l'ensemble de données.
UPDATE_ACL
  • bigquery.datasets.setIamPolicy
Renvoie les contrôles d'accès mis à jour, les champs obligatoires et les champs de la ressource d'ensemble de données qui sont en sortie uniquement.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Renvoie les métadonnées et les contrôles d'accès mis à jour de l'ensemble de données.

Si vous ne choisissez pas d'appliquer la configuration de manière anticipée ou si vous revenez en arrière après avoir choisi de l'appliquer, BigQuery reprend le comportement précédent. L'autorisation bigquery.datasets.update vous permet de mettre à jour à la fois les métadonnées et les contrôles d'accès.

Exemple

L'exemple suivant envoie une requête PUT avec le paramètre update_mode défini sur METADATA :

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

Remplacez les éléments suivants :

  • YOUR_PROJECT : nom de votre projet
  • YOUR_DATASET : nom de l'ensemble de données
  • YOUR_API_KEY : nom de votre clé API

Méthode datasets.insert

Si vous choisissez d'appliquer la configuration de manière anticipée et que vous utilisez la datasets.insert méthode, pour créer un ensemble de données avec des contrôles d'accès, BigQuery vérifie que les bigquery.datasets.create et bigquery.datasets.setIamPolicy autorisations sont accordées à l'utilisateur.

Si vous utilisez l'API pour créer un ensemble de données sans contrôles d'accès, seule l'autorisation bigquery.datasets.create est requise.