Contrôler l'accès aux ressources avec IAM
Ce document explique comment afficher la stratégie d'accès actuelle d'une ressource, comment accorder l'accès à une ressource et comment révoquer l'accès à une ressource.
Dans ce document, nous partons du principe que vous connaissez le système de gestion de l'authentification et des accès (IAM pour Identity and Access Management) dans Google Cloud.
Rôles requis
Pour obtenir les autorisations nécessaires pour modifier les stratégies IAM associées aux ressources, demandez à votre administrateur de vous accorder le rôle IAM Propriétaire de données BigQuery (roles/bigquery.dataOwner
) sur le projet.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Ce rôle prédéfini contient les autorisations requises pour modifier les stratégies IAM des ressources. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
- Pour obtenir la stratégie d'accès d'un ensemble de données :
bigquery.datasets.get
- Pour définir la stratégie d'accès d'un ensemble de données :
bigquery.datasets.update
-
Pour obtenir la stratégie d'accès d'un ensemble de données (la console Google Cloud uniquement), procédez comme suit :
bigquery.datasets.getIamPolicy
-
Pour définir la règle d'accès d'un ensemble de données (console uniquement), procédez comme suit :
bigquery.datasets.setIamPolicy
- Pour obtenir la stratégie d'une table ou d'une vue :
bigquery.tables.getIamPolicy
- Pour définir la stratégie d'une table ou d'une vue :
bigquery.tables.setIamPolicy
-
Pour créer l'outil
bq
ou des tâches SQL BigQuery (facultatif), procédez comme suit :bigquery.jobs.create
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Afficher la stratégie d'accès d'une ressource
Les sections suivantes expliquent comment afficher les stratégies d'accès de différentes ressources.
Afficher la stratégie d'accès d'un ensemble de données
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et sélectionnez un ensemble de données.
Cliquez sur > Autorisations.
PartageLes règles d'accès aux ensembles de données s'affichent dans le volet Autorisations d'ensemble de données.
bq
Pour obtenir une stratégie existante et l'exporter dans un fichier local au format JSON, utilisez la commande bq show
dans Cloud Shell :
bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de votre ensemble de données.
- PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
API
Pour appliquer des contrôles d'accès lors de la création de l'ensemble de données, appelez datasets.insert
avec un élément dataset resource
défini.
Pour mettre à jour vos contrôles d'accès, appelez la méthode datasets.patch
et utilisez la propriété access
de la ressource Dataset
.
Comme la méthode datasets.update
remplace la ressource d'ensemble de données dans son intégralité, il est préférable d'utiliser la méthode datasets.patch
pour mettre à jour les contrôles d'accès.
Afficher la stratégie d'accès d'une table ou d'une vue
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et sélectionnez une table ou une vue.
Cliquez sur
Partager.Les stratégies d'accès aux tables ou aux vues s'affichent dans le volet Partager.
bq
Pour obtenir une règle d'accès existante et l'exporter dans un fichier local au format JSON, utilisez la commande bq get-iam-policy
dans Cloud Shell :
bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de votre ensemble de données.
- RESOURCE : nom de la table ou de la vue dont vous souhaitez afficher la stratégie.
- PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
API
Pour récupérer la stratégie actuelle, appelez la méthode tables.getIamPolicy
.
Accorder l'accès à une ressource
Dans les sections suivantes, nous allons voir comment accorder l'accès à différentes ressources.
Accorder l'accès à un ensemble de données
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et sélectionnez un ensemble de données à partager.
Cliquez sur > Autorisations.
PartageCliquez sur
Ajouter un compte principal.Dans le champ Nouveaux comptes principaux, saisissez un compte principal.
Dans la liste Sélectionner un rôle, sélectionnez un rôle prédéfini ou personnalisé.
Cliquez sur Enregistrer.
Pour revenir aux informations sur l'ensemble de données, cliquez sur Fermer.
SQL
Pour autoriser les comptes principaux à accéder aux ensembles de données, utilisez l'instruction LDC GRANT
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
GRANT ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Remplacez les éléments suivants :
ROLE_LIST
: rôle ou liste de rôles (séparés par des virgules) que vous souhaitez attribuer.RESOURCE_TYPE
: type de ressource auquel le rôle est appliqué.Les valeurs acceptées incluent
SCHEMA
(équivalent à l'ensemble de données),TABLE
,VIEW
etEXTERNAL TABLE
.RESOURCE_NAME
: nom de la ressource sur laquelle vous souhaitez accorder l'autorisationUSER_LIST
: liste d'utilisateurs (séparés par une virgule) auxquels le rôle est attribué.Pour obtenir la liste des formats valides, consultez la page
user_list
.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.
bq
Pour écrire les informations existantes sur l'ensemble de données (y compris les contrôles d'accès) dans un fichier JSON, utilisez la commande
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de votre ensemble de données.
- PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
Apportez vos modifications à la section
access
du fichier JSON. Vous pouvez ajouter l'une des entréesspecialGroup
:projectOwners
,projectWriters
,projectReaders
etallAuthenticatedUsers
. Vous pouvez également ajouter l'un des éléments suivants :userByEmail
,groupByEmail
etdomain
.Par exemple, la section
access
du fichier JSON d'un ensemble de données ressemblerait à ceci :{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Une fois vos modifications terminées, exécutez la commande
bq update
et incluez le fichier JSON à l'aide de l'option--source
. Si l'ensemble de données se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant :PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Pour vérifier les modifications apportées aux contrôles d'accès, saisissez à nouveau la commande
bq show
sans écrire les informations dans un fichier :bq show --format=prettyjson PROJECT_ID:DATASET
API
Pour appliquer des contrôles d'accès lors de la création d'un ensemble de données, appelez la méthode datasets.insert
en spécifiant une ressource d'ensemble de données.
Pour mettre à jour vos contrôles d'accès, appelez la méthode datasets.patch
et utilisez la propriété access
de la ressource Dataset
.
Comme la méthode datasets.update
remplace la ressource d'ensemble de données dans son intégralité, il est préférable d'utiliser la méthode datasets.patch
.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Définissez la propriétédataset.access_entries
avec les contrôles d'accès pour un ensemble de données. Appelez ensuite la fonction client.update_dataset()
pour mettre à jour la propriété.
Autoriser l'accès à une table ou à une vue
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le volet Explorateur, développez votre projet et sélectionnez une table ou une vue à partager.
Cliquez sur
Partager.Cliquez sur
Ajouter un compte principal.Dans le champ Nouveaux comptes principaux, saisissez un compte principal.
Dans la liste Sélectionner un rôle, sélectionnez un rôle prédéfini ou personnalisé.
Cliquez sur Enregistrer.
Pour revenir aux détails de la table ou de la vue, cliquez sur Fermer.
SQL
Pour accorder aux comptes principaux l'accès aux tables ou aux vues, utilisez l'instruction LCD GRANT
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
GRANT ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Remplacez les éléments suivants :
ROLE_LIST
: rôle ou liste de rôles (séparés par des virgules) que vous souhaitez attribuer.RESOURCE_TYPE
: type de ressource auquel le rôle est appliqué.Les valeurs acceptées incluent
SCHEMA
(équivalent à l'ensemble de données),TABLE
,VIEW
etEXTERNAL TABLE
.RESOURCE_NAME
: nom de la ressource sur laquelle vous souhaitez accorder l'autorisationUSER_LIST
: liste d'utilisateurs (séparés par une virgule) auxquels le rôle est attribué.Pour obtenir la liste des formats valides, consultez la page
user_list
.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.
bq
Pour écrire les informations existantes dans la table ou la vue (y compris les contrôles d'accès) dans un fichier JSON, utilisez la commande
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de l'ensemble de données contenant la table ou la vue que vous souhaitez mettre à jour.
- TABLE_OR_VIEW : nom de la ressource à mettre à jour.
- PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
Apportez vos modifications à la section
access
du fichier JSON. Vous pouvez ajouter l'une des entréesspecialGroup
:projectOwners
,projectWriters
,projectReaders
etallAuthenticatedUsers
. Vous pouvez également ajouter l'un des éléments suivants :userByEmail
,groupByEmail
etdomain
. Par exemple, la sectionaccess
du fichier JSON d'une table ou d'une vue ressemblerait à ceci :{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Exécutez la commande
set-iam-policy
pour mettre à jour la stratégie :bq set-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Pour vérifier les modifications apportées aux contrôles d'accès, saisissez à nouveau la commande
bq get-iam-policy
sans écrire les informations dans un fichier :bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
API
- Pour récupérer la stratégie actuelle, appelez la méthode
tables.getIamPolicy
. Modifiez la stratégie pour ajouter des membres et/ou des liaisons. Pour connaître le format requis pour la stratégie, consultez la page de référence Stratégie.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Révoquer l'accès à une ressource
Dans les sections suivantes, nous allons voir comment révoquer l'accès à différentes ressources.
Révoquer l'accès à un ensemble de données
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le panneau Explorateur, développez votre projet et sélectionnez un ensemble de données.
Dans le panneau des détails, cliquez sur Partage > Autorisations.
Dans la boîte de dialogue Autorisations pour les ensembles de données, développez le compte principal dont vous souhaitez révoquer l'accès.
Cliquez sur
Supprimer le compte principal.Dans la boîte de dialogue Supprimer le rôle pour le compte principal ?, cliquez sur Supprimer.
Pour revenir aux détails de l'ensemble de données, cliquez sur Fermer.
SQL
Pour supprimer l'accès aux ensembles de données des comptes principaux, utilisez l'instruction LCD REVOKE
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
REVOKE ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Remplacez les éléments suivants :
ROLE_LIST
: rôle ou liste de rôles (séparés par une virgule) que vous souhaitez révoquer.RESOURCE_TYPE
: type de ressource à partir duquel le rôle est révoquéLes valeurs acceptées incluent
SCHEMA
(équivalent à l'ensemble de données),TABLE
,VIEW
etEXTERNAL TABLE
.RESOURCE_NAME
: nom de la ressource sur laquelle vous souhaitez révoquer l'autorisation.USER_LIST
: liste des utilisateurs (séparés par une virgule) dont les rôles seront révoqués.Pour obtenir la liste des formats valides, consultez la page
user_list
.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.
bq
Pour écrire les informations existantes sur l'ensemble de données (y compris les contrôles d'accès) dans un fichier JSON, utilisez la commande
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de votre ensemble de données.
- PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
Apportez vos modifications à la section
access
du fichier JSON. Vous pouvez supprimer n'importe quelle entréespecialGroup
:projectOwners
,projectWriters
,projectReaders
etallAuthenticatedUsers
. Vous pouvez également supprimer l'un des éléments suivants :userByEmail
,groupByEmail
etdomain
.Par exemple, la section
access
du fichier JSON d'un ensemble de données ressemblerait à ceci :{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Une fois vos modifications terminées, exécutez la commande
bq update
et incluez le fichier JSON à l'aide de l'option--source
. Si l'ensemble de données se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant :PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Pour vérifier les modifications apportées aux contrôles d'accès, saisissez à nouveau la commande
show
sans écrire les informations dans un fichier :bq show --format=prettyjson PROJECT_ID:DATASET
API
Appelez datasets.patch
et utilisez la propriété access
de la ressource Dataset
pour mettre à jour les contrôles d'accès.
Comme la méthode datasets.update
remplace la ressource d'ensemble de données dans son intégralité, il est préférable d'utiliser la méthode datasets.patch
.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Définissez la propriétédataset.access_entries
avec les contrôles d'accès pour un ensemble de données. Appelez ensuite la fonction client.update_dataset()
pour mettre à jour la propriété.
Révoquer l'accès à une table ou à une vue
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le panneau Explorateur, développez votre projet et sélectionnez une table ou une vue.
Dans le panneau des détails, cliquez sur Partager.
Dans la boîte de dialogue Partager, développez le compte principal dont vous souhaitez révoquer l'accès.
Cliquez sur
Supprimer.Dans la boîte de dialogue Supprimer le rôle pour le compte principal ?, cliquez sur Supprimer.
Pour revenir aux détails de la table ou de la vue, cliquez sur Fermer.
SQL
Pour supprimer l'accès aux tables ou aux vues des comptes principaux, utilisez l'instruction LCD REVOKE
:
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
REVOKE ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Remplacez les éléments suivants :
ROLE_LIST
: rôle ou liste de rôles (séparés par une virgule) que vous souhaitez révoquer.RESOURCE_TYPE
: type de ressource à partir duquel le rôle est révoquéLes valeurs acceptées incluent
SCHEMA
(équivalent à l'ensemble de données),TABLE
,VIEW
etEXTERNAL TABLE
.RESOURCE_NAME
: nom de la ressource sur laquelle vous souhaitez révoquer l'autorisation.USER_LIST
: liste des utilisateurs (séparés par une virgule) dont les rôles seront révoqués.Pour obtenir la liste des formats valides, consultez la page
user_list
.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.
bq
Pour écrire les informations existantes dans la table ou la vue (y compris les contrôles d'accès) dans un fichier JSON, utilisez la commande
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Remplacez les éléments suivants :
- PROJECT_ID : ID de votre projet.
- DATASET : nom de l'ensemble de données contenant la table ou la vue que vous souhaitez mettre à jour.
- TABLE_OR_VIEW : nom de la ressource à mettre à jour.
PATH_TO_FILE : chemin d'accès au fichier JSON sur votre ordinateur local.
Apportez vos modifications à la section
access
du fichier JSON. Vous pouvez supprimer n'importe quelle entréespecialGroup
:projectOwners
,projectWriters
,projectReaders
etallAuthenticatedUsers
. Vous pouvez également supprimer l'un des éléments suivants :userByEmail
,groupByEmail
etdomain
. Par exemple, la sectionaccess
du fichier JSON d'une table ou d'une vue ressemblerait à ceci :{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Exécutez la commande
bq set-iam-policy
pour mettre à jour la stratégie :bq set-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Pour vérifier les modifications apportées aux contrôles d'accès, saisissez à nouveau la commande
get-iam-policy
sans écrire les informations dans un fichier :bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
API
- Pour récupérer la stratégie actuelle, appelez la méthode
tables.getIamPolicy
. Modifiez la stratégie pour supprimer des membres et/ou des liaisons. Pour connaître le format requis pour la stratégie, consultez la page de référence Stratégie.
Appelez
tables.setIamPolicy
pour écrire la stratégie mise à jour. Attention : Les liaisons vides sans membre ne sont pas autorisées et entraînent une erreur.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.