Rôles et autorisations IAM BigQuery
Ce document fournit des informations sur les rôles et les autorisations Identity and Access Management (IAM) pour BigQuery. IAM vous permet d'accorder un accès précis à des ressources BigQuery spécifiques et d'empêcher l'accès à d'autres ressources. IAM vous permet d'appliquer le principe de sécurité du moindre privilège, qui stipule que personne ne devrait avoir plus d'autorisations que le strict nécessaire.
Si un compte principal (un utilisateur, un groupe ou un compte de service) appelle une API Google Cloud, il doit disposer des autorisations IAM appropriées pour utiliser la ressource. Pour accorder à un compte principal les autorisations requises, vous lui attribuez un rôle IAM.
Ce document explique comment utiliser les rôles IAM prédéfinis et personnalisés pour permettre aux comptes principaux d'accéder aux ressources BigQuery.
Pour vous familiariser avec la gestion des accès dans Google Cloud en général, consultez la page Présentation d'IAM.
Types de rôles IAM
Un rôle est un ensemble d'autorisations. Vous pouvez utiliser les types de rôles suivants dans IAM pour fournir l'accès aux ressources BigQuery :
- Les rôles prédéfinis sont gérés par Google Cloud et sont compatibles avec des cas d'utilisation courants et des modèles de contrôle des accès.
- Les rôles personnalisés fournissent un accès en fonction d'une liste d'autorisations spécifiée par l'utilisateur.
Pour déterminer si une ou plusieurs autorisations sont incluses dans un rôle, vous pouvez appliquer l'une des méthodes suivantes :
- La documentation de référence sur les recherches d'autorisations IAM
- La commande
gcloud iam roles describe
- La méthode
roles.get()
dans l'API IAM
Lorsque vous attribuez plusieurs types de rôles à un utilisateur, les autorisations accordées correspondent à une combinaison des autorisations de chaque rôle.
Pour en savoir plus sur l'utilisation d'IAM pour accéder aux ressources, consultez la page Accorder, modifier et révoquer les accès à des ressources dans la documentation spécifique à IAM.
Pour en savoir plus sur la création de rôles personnalisés, consultez la page Créer et gérer les rôles personnalisés dans la documentation spécifique à IAM.
Rôles IAM dans BigQuery
Les autorisations ne sont pas attribuées directement aux utilisateurs, aux groupes ou aux comptes de service. À la place, des utilisateurs, des groupes ou des comptes de service ont accès à un ou plusieurs rôles prédéfinis ou personnalisés qui leur permettent d'effectuer des actions sur les ressources.
Vous pouvez accorder l'accès aux niveaux de ressources BigQuery suivants :
- Organisation ou projet Google Cloud
- Niveau de l'ensemble de données
- Niveau de la table ou de la vue
Rôles appliqués au niveau de l'organisation ou du projet Google Cloud
Lorsque vous attribuez des rôles au niveau de l'organisation et du projet, vous fournissez des autorisations pour exécuter des tâches BigQuery ou pour accéder à toutes les ressources BigQuery d'un projet.
Rôles appliqués au niveau de l'ensemble de données
Vous pouvez également attribuer des rôles au niveau de l'ensemble de données pour ne fournir l'accès qu'à un ensemble de données spécifique, sans fournir un accès complet aux ressources du projet. Dans la hiérarchie des ressources IAM, les ensembles de données BigQuery sont des ressources enfants de projets. Pour en savoir plus sur l'attribution de rôles au niveau de l'ensemble de données, consultez la page Contrôler l'accès aux ensembles de données.
Rôles appliqués à des ressources individuelles au sein des ensembles de données
Vous pouvez attribuer des rôles individuellement à certains types de ressources dans des ensembles de données, sans fournir un accès complet aux ressources de l'ensemble de données.
Les rôles peuvent être appliqués à des ressources individuelles des types suivants :
- Tables
- Vues
Les rôles ne peuvent pas être appliqués à des ressources individuelles des types suivants :
- Routines
- modèles
Pour en savoir plus sur l'attribution de rôles au niveau de la table ou de la vue, consultez la page Contrôler l'accès aux tables ou aux vues.
Rôles IAM prédéfinis dans BigQuery
Le tableau suivant répertorie les rôles IAM prédéfinis dans BigQuery, ainsi que la liste de toutes les autorisations incluses dans chaque rôle. Notez que chaque autorisation est applicable à un type de ressource particulier.
Role | Permissions |
---|---|
BigQuery Admin( Provides permissions to manage all resources within the project. Can manage all data within the project, and can cancel jobs from other users running within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Connection Admin(
|
|
BigQuery Connection User(
|
|
BigQuery Data Editor( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Owner( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to list all of the resources in the dataset (such as tables, views, snapshots, models, and routines) and to read their data and metadata with applicable APIs and in queries. When applied at the project or organization level, this role can also enumerate all datasets in the project. Additional roles, however, are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Filtered Data Viewer( Access to view filtered table data defined by a row access policy |
|
BigQuery Job User( Provides permissions to run jobs, including queries, within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Metadata Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role provides permissions to:
Additional roles are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Read Session User( Provides the ability to create and use read sessions. Lowest-level resources where you can grant this role:
|
|
BigQuery Resource Admin( Administers BigQuery workloads, including slot assignments, commitments, and reservations. |
|
BigQuery Resource Editor( Manages BigQuery workloads, but is unable to create or modify slot commitments. |
|
BigQuery Resource Viewer( Can view BigQuery workloads, but cannot create or modify slot reservations or commitments. |
|
BigQuery Studio Admin( Combination role of BigQuery Admin, Dataform Admin, and Notebook Runtime Admin. |
|
BigQuery Studio User( Combination role of BigQuery Job User, BigQuery Read Session User, Dataform Code Creator, and Notebook Runtime User. |
|
BigQuery User( When applied to a dataset, this role provides the ability to read the dataset's metadata and list tables in the dataset. When applied to a project, this role also provides the ability to run jobs, including queries,
within the project. A principal with this role can enumerate their own jobs, cancel their own jobs, and
enumerate datasets within a project. Additionally, allows the creation of new datasets within the
project; the creator is granted the BigQuery Data Owner role ( Lowest-level resources where you can grant this role:
|
|
BigQuery Data Policy Admin( Role for managing Data Policies in BigQuery |
|
Masked Reader( Masked read access to sub-resources tagged by the policy tag associated with a data policy, for example, BigQuery columns |
|
Raw Data Reader Beta( Raw read access to sub-resources associated with a data policy, for example, BigQuery columns |
|
BigQuery Data Policy Viewer( Role for viewing Data Policies in BigQuery |
|
Rôles IAM personnalisés pour BigQuery
Pour créer un rôle IAM personnalisé pour BigQuery, suivez les étapes décrites pour les rôles personnalisés IAM à l'aide des autorisations BigQuery.
Rôles de base BigQuery
Pour en savoir plus sur les rôles de base pour BigQuery, consultez la page Rôles de base et autorisations BigQuery.
Autorisations BigQuery
Le tableau suivant décrit les autorisations disponibles dans BigQuery. Ceux-ci sont inclus dans les rôles prédéfinis et peuvent être utilisés dans les définitions de rôles personnalisés.
Autorisation | Description |
---|---|
bigquery.bireservations.get |
Consulter les réservations BI Engine. |
bigquery.bireservations.update |
Mettre à jour les réservations BI Engine. |
bigquery.capacityCommitments.create |
Créer des engagements de capacité dans le projet |
bigquery.capacityCommitments.delete |
Supprimer un engagement de capacité. |
bigquery.capacityCommitments.get |
Récupérer les informations sur un engagement de capacité |
bigquery.capacityCommitments.list |
Répertorier tous les engagements de capacité dans un projet |
bigquery.capacityCommitments.update |
Mettre à jour tous les engagements de capacité dans un projet. |
bigquery.config.update |
Créer une configuration. |
bigquery.config.get |
Obtenir des détails sur une configuration. |
bigquery.connections.create |
Créer des connexions dans un projet |
bigquery.connections.delete |
Supprimer une connexion |
bigquery.connections.get |
Obtenir des métadonnées de connexion. Les identifiants sont exclus. |
bigquery.connections.list |
Répertorier les connexions d'un projet |
bigquery.connections.update |
Mettre à jour une connexion et ses identifiants |
bigquery.connections.updateTag |
Mettre à jour les tags d'une connexion |
bigquery.connections.use |
Utiliser une configuration de connexion pour se connecter à une source de données distante |
bigquery.connections.delegate |
Déléguer la connexion pour créer des tables externes autorisées et des fonctions distantes |
bigquery.dataPolicies.create |
Créer des règles de données |
bigquery.dataPolicies.delete |
Supprimer les stratégies de données |
bigquery.dataPolicies.get |
Obtenir les métadonnées des stratégies de données |
bigquery.dataPolicies.getIamPolicy |
Lire les autorisations IAM d'une stratégie de données |
bigquery.dataPolicies.list |
Répertorier les stratégies de données dans un projet |
bigquery.dataPolicies.maskedGet |
Afficher les données masquées d'une colonne à laquelle un tag avec stratégie est associé. |
bigquery.dataPolicies.setIamPolicy |
Définir les autorisations IAM d'une stratégie de données |
bigquery.dataPolicies.update |
Mettre à jour les métadonnées d'une stratégie de données |
bigquery.datasets.create |
Créer des ensembles de données vides |
bigquery.datasets.createTagBinding |
Créer des liaisons de tags de ressource sur un ensemble de données |
bigquery.datasets.delete |
Supprimer un ensemble de données |
bigquery.datasets.deleteTagBinding |
Supprimer des liaisons de tags de ressource sur un ensemble de données |
bigquery.datasets.get |
Obtenir des métadonnées et des autorisations sur un ensemble de données
L'affichage des autorisations dans la console Google Cloud nécessite également l'autorisation bigquery.datasets.getIamPolicy . |
bigquery.datasets.getIamPolicy |
Requis par la console Google Cloud pour permettre à l'utilisateur d'obtenir les autorisations IAM d'un ensemble de données. Ne s'ouvre pas. La capacité à effectuer l'opération d'obtention des autorisations est régulée par l'autorisation bigquery.datasets.get . |
bigquery.datasets.link |
Créer un ensemble de données associé. |
bigquery.datasets.listTagBindings |
Répertorier les liaisons de tags de ressource sur un ensemble de données. |
bigquery.datasets.setIamPolicy |
Requis par la console Google Cloud pour permettre à l'utilisateur de définir les autorisations IAM d'un ensemble de données. Ne s'ouvre pas. La capacité à effectuer l'opération de définition des autorisations est régulée par l'autorisation bigquery.datasets.update . |
bigquery.datasets.update |
Mettre à jour les métadonnées et les autorisations d'un ensemble de données
L'octroi d'autorisations dans la console Google Cloud nécessite également l'autorisation bigquery.datasets.setIamPolicy . |
bigquery.datasets.updateTag |
Mettre à jour les tags Data Catalog pour un ensemble de données. |
bigquery.jobs.create |
Exécuter des tâches, y compris des requêtes, dans le projet |
bigquery.jobs.get |
Obtenir les données et les métadonnées de n'importe quelle tâche.1 |
bigquery.jobs.list |
Répertorier toutes les tâches et récupérer les métadonnées de n'importe quelle tâche envoyée par un utilisateur Les informations et les métadonnées des tâches envoyées par d'autres utilisateurs sont masquées. |
bigquery.jobs.listAll |
Répertorier toutes les tâches et récupérer les métadonnées de n'importe quelle tâche envoyée par un utilisateur |
bigquery.jobs.listExecutionMetadata |
Répertorier toutes les métadonnées d'exécution de la tâche (sans informations sensibles) sur les tâches envoyées par un utilisateur Elle ne peut être appliquée qu'au niveau de l'organisation et est utilisée par l'interface administrateur. |
bigquery.jobs.delete |
Supprimez les métadonnées d'une tâche. |
bigquery.jobs.update |
Annuler n'importe quelle tâche.1 |
bigquery.models.create |
Créer des modèles de machine learning |
bigquery.models.delete |
Supprimer des modèles de machine learning. |
bigquery.models.getData |
Obtenir des données de modèle de machine learning. Pour obtenir des métadonnées de modèle, vous avez besoin de bigquery.models.getMetadata . |
bigquery.models.getMetadata |
Obtenir des métadonnées de modèles de machine learning. Pour obtenir des données de modèle, vous avez besoin de bigquery.models.getData . |
bigquery.models.list |
Répertorier les modèles de machine learning et les métadonnées des modèles. |
bigquery.models.updateData |
Mettre à jour les données de modèle de machine learning. Pour mettre à jour les métadonnées de modèle, vous avez besoin de bigquery.models.updateMetadata . |
bigquery.models.updateMetadata |
Mettre à jour les métadonnées du modèle de machine learning. Pour mettre à jour les données de modèle, vous avez besoin de bigquery.models.updateData . |
bigquery.models.export |
Exporter des modèles de machine learning. |
bigquery.models.updateTag |
Mettre à jour les tags Data Catalog d'un modèle. |
bigquery.readsessions.create |
Créer une session de lecture via l'API Storage Read. |
bigquery.readsessions.getData |
Lire des données d'une session de lecture via l'API Storage Read. |
bigquery.readsessions.update |
Mettre à jour une session de lecture via l'API Storage Read. |
bigquery.reservations.create |
Créer une réservation d'emplacement dans un projet d'administration. |
bigquery.reservations.delete |
Supprimer une réservation d'emplacement. |
bigquery.reservations.get |
Récupérer les informations sur une réservation d'emplacement. |
bigquery.reservations.list |
Répertorier toutes les réservations d'emplacements dans un projet d'administration. |
bigquery.reservations.update |
Mettre à jour les propriétés d'une réservation d'emplacement. |
bigquery.reservationAssignments.create |
Créer une attribution de réservation.
Cette autorisation est requise pour le projet propriétaire et la ressource affectée. |
bigquery.reservationAssignments.delete |
Supprimer une attribution de réservation.
Cette autorisation est requise pour le projet propriétaire et la ressource affectée. |
bigquery.reservationAssignments.list |
Répertorier toutes les attributions de réservation dans un projet. |
bigquery.reservationAssignments.search |
Rechercher une attribution de réservation pour un projet, un dossier ou une organisation donnée. |
bigquery.rowAccessPolicies.create |
Créer une règle d'accès au niveau des lignes dans une table. |
bigquery.rowAccessPolicies.delete |
Supprimer une règle d'accès au niveau des lignes d'une table. |
bigquery.rowAccessPolicies.getFilteredData |
Récupère les données d'une table que vous souhaitez afficher uniquement aux comptes principaux de la liste des bénéficiaires d'une règle d'accès au niveau des lignes. Nous vous recommandons d'accorder cette autorisation uniquement sur une ressource de stratégie d'accès au niveau des lignes. |
bigquery.rowAccessPolicies.list |
Répertorier toutes les règles d'accès au niveau des lignes d'une table. |
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions |
Accéder aux données de l'historique d'une table qui dispose ou a déjà eu des règles d'accès au niveau des lignes. |
bigquery.rowAccessPolicies.getIamPolicy |
Obtenir les autorisations IAM d'une règle d'accès aux lignes. |
bigquery.rowAccessPolicies.setIamPolicy |
Définir les autorisations IAM de la règle d'accès aux lignes. |
bigquery.rowAccessPolicies.update |
Recréer une règle d'accès au niveau des lignes. |
bigquery.routines.create |
Créer des routines (fonctions et procédures stockées) |
bigquery.routines.delete |
Supprimer des routines |
bigquery.routines.get |
Obtenir des définitions et des métadonnées de routine |
bigquery.routines.list |
Répertorier des routines et leurs métadonnées |
bigquery.routines.update |
Mettre à jour des définitions et des métadonnées de routine |
bigquery.routines.updateTag |
Mettre à jour les tags Data Catalog pour une routine. |
bigquery.savedqueries.create |
Créer des requêtes enregistrées |
bigquery.savedqueries.delete |
Supprimer les requêtes enregistrées. |
bigquery.savedqueries.get |
Obtenir les métadonnées des requêtes enregistrées. |
bigquery.savedqueries.list |
Répertorier les requêtes enregistrées. |
bigquery.savedqueries.update |
Mettre à jour les requêtes enregistrées. |
bigquery.tables.create |
Créer des tables |
bigquery.tables.createIndex |
Créer des index de recherche sur des tables. |
bigquery.tables.createSnapshot
|
Créer des instantanés de table. |
bigquery.tables.createTagBinding
|
Créer des liaisons de tags de ressource sur une table |
bigquery.tables.delete |
Supprimer des tables |
bigquery.tables.deleteIndex |
Supprimer des index de recherche sur des tables. |
bigquery.tables.deleteSnapshot
|
Supprimer des instantanés de table. |
bigquery.tables.deleteTagBinding
|
Supprimer des liaisons de tags de ressource sur une table. |
bigquery.tables.export |
Exporter les données d'une table de BigQuery |
bigquery.tables.get |
Obtenir les métadonnées d'une table. Pour obtenir des données d'une table, vous avez besoin de bigquery.tables.getData . |
bigquery.tables.getData |
Obtenir les données d'une table. Cette autorisation est requise pour interroger les données d'une table. Pour obtenir les métadonnées d'une table, vous avez besoin de bigquery.tables.get . |
bigquery.tables.getIamPolicy |
Lire la stratégie IAM d'une table |
bigquery.tables.list |
Répertorier des tables et leurs métadonnées |
bigquery.tables.replicateData |
Répliquer les données d'une table Cette autorisation est requise pour créer des réplications de vues matérialisées. |
bigquery.tables.restoreSnapshot
|
Restaurer des instantanés de table. |
bigquery.tables.setCategory |
Définir des tags avec stratégie dans le schéma de table |
bigquery.tables.setIamPolicy |
Modifier la stratégie IAM d'une table |
bigquery.tables.update |
Mettre à jour les métadonnées d'une table. |
bigquery.tables.updateData |
Mettre à jour les données d'une table. |
bigquery.tables.updateTag |
Mettre à jour les tags Data Catalog d'une table. |
bigquery.transfers.get |
Obtenir des métadonnées de transfert |
bigquery.transfers.update |
Créer, mettre à jour et supprimer des transferts |
1 Pour chaque tâche que vous créez, vous disposez automatiquement de l'équivalent des autorisations bigquery.jobs.get
et bigquery.jobs.update
pour cette tâche.
Autorisations pour les tâches BigQuery ML
Le tableau suivant décrit les autorisations nécessaires pour les tâches BigQuery ML courantes.
Permission | Description |
---|---|
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData |
Créez un modèle à l'aide de l'instruction CREATE MODEL |
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData bigquery.models.updateMetadata |
Remplacez un modèle existant à l'aide de l'instruction CREATE OR REPLACE MODEL |
bigquery.models.delete |
Supprimez le modèle à l'aide de l'API models.delete |
bigquery.jobs.create bigquery.models.delete |
Supprimez le modèle à l'aide de l'instruction DROP MODEL |
bigquery.models.getMetadata |
Obtenez les métadonnées d'un modèle à l'aide de l'API models.get |
bigquery.models.list |
Répertoriez les modèles et les métadonnées sur les modèles à l'aide de l'API models.list |
bigquery.models.updateMetadata |
Mettre à jour les métadonnées de modèle à l'aide de l'API models.delete Si vous définissez ou mettez à jour un délai d'expiration différent de zéro pour le modèle, l'autorisation bigquery.models.delete est également nécessaire. |
bigquery.jobs.create bigquery.models.getData
|
Effectuez des évaluations, des prédictions, des modèles et des inspections de caractéristiques à l'aide de fonctions telles que ML.EVALUATE , ML.PREDICT , ML.TRAINING_INFO et ML.WEIGHTS . |
bigquery.jobs.create bigquery.models.export
|
Exporter un modèle |
bigquery.models.updateTag |
Mettre à jour les tags Data Catalog d'un modèle. |
Étapes suivantes
- Pour en savoir plus sur l'attribution de rôles au niveau de l'ensemble de données, consultez la page Contrôler l'accès aux ensembles de données.
- Pour en savoir plus sur l'attribution de rôles au niveau de la table ou de la vue, consultez la page Contrôler l'accès aux tables ou aux vues.