Présentation d'IAM

Identity and Access Management (IAM) vous permet de contrôler l'accès des utilisateurs et des groupes aux les ressources Spanner au niveau du projet, l'instance Spanner Niveaux de base de données Spanner. Par exemple, vous pouvez accorder à un utilisateur le contrôle total d'une base de données déterminée dans une instance spécifique de votre projet, mais sans l'autoriser à créer, modifier ou supprimer des instances dans ce projet. L'utilisation du contrôle des accès avec IAM vous permet d'accorder une autorisation à un utilisateur ou à un groupe sans avoir à modifier une à une les autorisations associées aux instances ou aux bases de données Spanner.

Ce document met l'accent sur les autorisations IAM pertinentes pour Spanner et les rôles IAM qui accordent ces autorisations. Pour obtenir une description détaillée des services IAM et de leurs fonctionnalités, consultez le guide du développeur sur Identity and Access Management, en particulier la section sur la gestion des stratégies IAM.

Autorisations

Les autorisations permettent aux utilisateurs d'effectuer des actions spécifiques sur Spanner ressources. Par exemple, l'autorisation spanner.databases.read permet à un utilisateur lire dans une base de données à l'aide de l'API de lecture de Spanner, tandis que spanner.databases.select permet à un utilisateur d'exécuter une instruction SQL SELECT sur un base de données. Vous n'accordez pas directement d'autorisations aux utilisateurs, mais vous leur attribuez des rôles prédéfinis ou des rôles personnalisés auxquels sont associées une ou plusieurs autorisations.

Les tableaux suivants répertorient les autorisations IAM associées à Spanner.

Configurations d'instance

Les autorisations suivantes s'appliquent aux configurations d'instance Spanner. Pour en savoir plus, consultez la documentation de référence sur la configuration des instances pour REST et RPC API.

Nom de l'autorisation relative aux configurations d'instance Description
spanner.instanceConfigs.create Créez une configuration d'instance personnalisée.
spanner.instanceConfigs.delete Supprimez une configuration d'instance personnalisée.
spanner.instanceConfigs.get Obtenir une configuration d'instance
spanner.instanceConfigs.list Répertorier l'ensemble des configurations d'instance
spanner.instanceConfigs.update Mettez à jour la configuration d'une instance personnalisée.

Opérations de configuration d'instance

Les autorisations suivantes s'appliquent aux opérations de configuration des instances Spanner. Pour en savoir plus, consultez les références d'instance pour les API REST et RPC.

Nom de l'autorisation d'opération de configuration d'instance Description
spanner.instanceConfigOperations.list Répertoriez les opérations de configuration d'instance.
spanner.instanceConfigOperations.get Obtenir une opération de configuration d'instance spécifique
spanner.instanceConfigOperations.cancel Annuler une opération de configuration d'instance
spanner.instanceConfigOperations.delete Supprimer une opération de configuration d'instance

Instances

Les autorisations suivantes s'appliquent aux instances Spanner. Pour en savoir plus, consultez les références d'instance pour les API REST et RPC.

Nom de l'autorisation de l'instance Description
spanner.instances.create Créer une instance
spanner.instances.list Répertorier les instances
spanner.instances.get Obtenir la configuration d'une instance spécifique
spanner.instances.getIamPolicy Obtenir la stratégie IAM d'une instance
spanner.instances.update Mettre à jour une instance
spanner.instances.setIamPolicy Définir la stratégie IAM d'une instance
spanner.instances.delete Supprimer une instance

Opérations d'instance :

Les autorisations suivantes s'appliquent aux opérations sur les instances Spanner. Pour en savoir plus, consultez les références d'instance pour les API REST et RPC.

Nom de l'autorisation relative aux opérations sur les instances Description
spanner.instanceOperations.list Répertorier les opérations sur les instances
spanner.instanceOperations.get Obtenir une opération sur une instance
spanner.instanceOperations.cancel Annuler une opération sur une instance
spanner.instanceOperations.delete Supprimer une opération sur une instance

Partitions

Les autorisations suivantes s'appliquent aux partitions Spanner. Pour plus consultez les références de partition pour REST. et RPC API.

Nom de l'autorisation de l'instance Description
spanner.instancePartitions.create Créez une partition.
spanner.instancePartitions.get Obtenir la configuration d'une partition spécifique.
spanner.instancePartitions.list Lister les partitions
spanner.instancePartitions.update Mettre à jour une partition.
spanner.instancePartitions.delete Supprimer une partition.

Opérations de partitionnement

Les autorisations suivantes s'appliquent aux opérations de partition Spanner. Pour en savoir plus, consultez les références sur la partitionnement des instances pour les API REST et RPC.

Nom de l'autorisation pour les opérations de partition d'instance Description
spanner.instancePartitionOperations.list Lister les opérations de partition.
spanner.instancePartitionOperations.get Obtenir une opération de partition spécifique
spanner.instancePartitionOperations.cancel Annuler une opération de partition.
spanner.instancePartitionOperations.delete Supprimer une opération de partition.

Bases de données

Les autorisations suivantes s'appliquent aux bases de données Spanner. Pour plus consultez la documentation de référence sur les bases de données pour REST. et RPC API.

Nom de l'autorisation pour la base de données Description
spanner.databases.beginPartitionedDmlTransaction

Exécuter une instruction LMD (langage de manipulation de données)

spanner.databases.create Créer une base de données
spanner.databases.createBackup Créer une sauvegarde à partir de la base de données. Nécessite également spanner.backups.create pour créer la ressource de sauvegarde.
spanner.databases.list Répertorier les bases de données
spanner.databases.update

Mettre à jour les métadonnées d'une base de données

spanner.databases.updateDdl Mettre à jour le schéma d'une base de données
spanner.databases.get Obtenir les métadonnées d'une base de données
spanner.databases.getDdl Obtenir le schéma d'une base de données
spanner.databases.getIamPolicy Obtenir la stratégie IAM d'une base de données
spanner.databases.setIamPolicy Définir la stratégie IAM d'une base de données
spanner.databases.beginReadOnlyTransaction Commencer une transaction en lecture seule sur une base de données Spanner
spanner.databases.beginOrRollbackReadWriteTransaction Commencer ou annuler une transaction en lecture/écriture sur une base de données Spanner
spanner.databases.read Lire dans une base de données à l'aide de l'API de lecture
spanner.databases.select Exécuter une instruction SQL "SELECT" sur une base de données
spanner.databases.write Écrire dans une base de données
spanner.databases.drop Supprimer une base de données
spanner.databases.useRoleBasedAccess Utilisez un contrôle précis des accès.
spanner.databases.useDataBoost Utilisez les ressources de calcul de Spanner Data Boost pour traiter des requêtes partitionnées.

Rôles de base de données

Les autorisations suivantes s'appliquent aux rôles de base de données Spanner. Pour en savoir plus, consultez les documentations de référence des bases de données pour REST. et RPC API.

Nom de l'autorisation de rôle de base de données Description
spanner.databaseRoles.list Lister les rôles de base de données
spanner.databaseRoles.use Utilisez un rôle de base de données spécifié.

Opérations de base de données

Les autorisations suivantes s'appliquent aux opérations de base de données Spanner. Pour en savoir plus, consultez les documentations de référence des bases de données pour REST. et RPC API.

Nom de l'autorisation relative aux opérations de base de données Description
spanner.databaseOperations.list Répertorier les opérations de base de données et les restaurer
spanner.databaseOperations.get Obtenir une opération de base de données
spanner.databaseOperations.cancel Annuler une opération de base de données

Sauvegardes

Les autorisations suivantes s'appliquent aux sauvegardes Spanner. Pour plus consultez la documentation de référence sur les sauvegardes pour REST. et RPC API.

Nom de l'autorisation de sauvegarde Description
spanner.backups.create Créer une sauvegarde (nécessite également spanner.databases.createBackup sur la base de données source)
spanner.backups.get Obtenir une sauvegarde
spanner.backups.update Mettre à jour une sauvegarde
spanner.backups.delete Supprimer une sauvegarde
spanner.backups.list Répertorier des sauvegardes
spanner.backups.restoreDatabase Restaurer la base de données à partir d'une sauvegarde. Nécessite également spanner.databases.create pour créer la base de données restaurée sur l'instance cible.
spanner.backups.getIamPolicy Obtenir la stratégie IAM d'une sauvegarde
spanner.backups.setIamPolicy Définir la stratégie IAM d'une sauvegarde

Opérations de sauvegarde

Les autorisations suivantes s'appliquent aux opérations de sauvegarde Spanner. Pour Pour en savoir plus, consultez les documentations de référence sur les bases de données pour REST. et RPC.

Nom de l'autorisation de l'opération de sauvegarde Description
spanner.backupOperations.list Répertorier les opérations de sauvegarde.
spanner.backupOperations.get Obtenir une opération de sauvegarde spécifique.
spanner.backupOperations.cancel Annuler une opération de sauvegarde.

Planifications de sauvegarde

Les autorisations suivantes s'appliquent aux planifications de sauvegarde Spanner. Pour Pour en savoir plus, consultez les documentations de référence des bases de données sur l'API REST. et RPC.

Nom de l'autorisation de programmation de sauvegarde Description
spanner.backupSchedules.create Créez un planning de sauvegarde. (nécessite également spanner.databases.createBackup sur la base de données source)
spanner.backupSchedules.get Obtenez un planning de sauvegarde.
spanner.backupSchedules.update Mettre à jour un planning de sauvegarde
spanner.backupSchedules.delete Supprimez un planning de sauvegarde.
spanner.backupSchedules.list Lister les programmations de sauvegarde

Sessions

Les autorisations suivantes s'appliquent aux sessions Spanner. Pour en savoir plus, consultez les références de base de données pour les API REST et RPC.

Nom de l'autorisation relative aux sessions Description
spanner.sessions.create Créer une session
spanner.sessions.get Obtenir une session
spanner.sessions.delete Supprimer une session
spanner.sessions.list Répertorier les sessions

Rôles prédéfinis

Un rôle prédéfini correspond à un ensemble contenant une ou plusieurs autorisations. Par exemple, le rôle prédéfini roles/spanner.databaseUser contient les autorisations spanner.databases.read et spanner.databases.write. Il y a deux types de rôles prédéfinis pour Spanner:

  • Rôles de personne : ces rôles sont attribués à des utilisateurs ou à des groupes afin de leur permettre d'effectuer des actions sur les ressources de votre projet.
  • Rôles de machine : ces rôles sont attribués à des comptes de service, et permettent aux machines exécutées sous ces comptes de service d'effectuer des actions sur les ressources de votre projet.

Le tableau suivant répertorie le contrôle des accès avec des rôles IAM prédéfinis, avec la liste des autorisations associées à chaque rôle :

Role Permissions

(roles/spanner.admin)

Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:

  • Grant and revoke permissions to other principals for all Spanner resources in the project.
  • Allocate and delete chargeable Spanner resources.
  • Issue get/list/modify operations on Cloud Spanner resources.
  • Read from and write to all Cloud Spanner databases in the project.
  • Fetch project metadata.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backupSchedules.create
  • spanner.backupSchedules.delete
  • spanner.backupSchedules.get
  • spanner.backupSchedules.getIamPolicy
  • spanner.backupSchedules.list
  • spanner.backupSchedules.setIamPolicy
  • spanner.backupSchedules.update
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databaseRoles.list
  • spanner.databaseRoles.use
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.changequorum
  • spanner.databases.create
  • spanner.databases.createBackup
  • spanner.databases.drop
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.getIamPolicy
  • spanner.databases.list
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.setIamPolicy
  • spanner.databases.update
  • spanner.databases.updateDdl
  • spanner.databases.updateTag
  • spanner.databases.useDataBoost
  • spanner.databases.useRoleBasedAccess
  • spanner.databases.write
  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list
  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update
  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list
  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list
  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update
  • spanner.instances.create
  • spanner.instances.createTagBinding
  • spanner.instances.delete
  • spanner.instances.deleteTagBinding
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.instances.listEffectiveTags
  • spanner.instances.listTagBindings
  • spanner.instances.setIamPolicy
  • spanner.instances.update
  • spanner.instances.updateTag
  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.backupAdmin)

A principal with this role can:

  • Create, view, update, and delete backups.
  • View and manage a backup's allow policy.

This role cannot restore a database from a backup.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backupSchedules.update

spanner.backups.copy

spanner.backups.create

spanner.backups.delete

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.backups.setIamPolicy

spanner.backups.update

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupWriter)

This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backups.copy

spanner.backups.create

spanner.backups.get

spanner.backups.list

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instances.get

(roles/spanner.databaseAdmin)

A principal with this role can:

  • Get/list all Spanner instances in the project.
  • Create/list/drop databases in an instance.
  • Grant/revoke access to databases in the project.
  • Read from and write to all Cloud Spanner databases in the project.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.*

  • spanner.databaseRoles.list
  • spanner.databaseRoles.use

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.create

spanner.databases.drop

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.setIamPolicy

spanner.databases.update

spanner.databases.updateDdl

spanner.databases.updateTag

spanner.databases.useDataBoost

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReader)

A principal with this role can:

  • Read from the Spanner database.
  • Execute SQL queries on the database.
  • View schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReaderWithDataBoost)

Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseRoleUser)

In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.use

(roles/spanner.databaseUser)

A principal with this role can:

  • Read from and write to the Spanner database.
  • Execute SQL queries on the database, including DML and Partitioned DML.
  • View and update schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.updateDdl

spanner.databases.updateTag

spanner.databases.write

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.fineGrainedAccessUser)

Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.list

spanner.databases.useRoleBasedAccess

(roles/spanner.restoreAdmin)

A principal with this role can restore databases from backups.

If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backups.get

spanner.backups.list

spanner.backups.restoreDatabase

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.create

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.viewer)

A principal with this role can:

  • View all Spanner instances (but cannot modify instances).
  • View all Spanner databases (but cannot modify or read from databases).

For example, you can combine this role with the roles/spanner.databaseUser role to grant a user with access to a specific database, but only view access to other instances and databases.

This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databases.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

Rôles de base

Les rôles de base sont des rôles antérieurs à IAM qui sont attribués au niveau du projet. Pour en savoir plus, consultez la section Rôles de base.

Bien que Spanner soit compatible avec les rôles de base suivants, vous devez, dans la mesure du possible, utiliser l'un des rôles prédéfinis présentés précédemment. Rôles de base inclure des autorisations étendues qui s'appliquent à toutes vos ressources Google Cloud ; dans En revanche, les rôles prédéfinis de Spanner incluent autorisations qui ne s'appliquent qu'à Spanner.

Rôle de base Description
roles/viewer Permet de répertorier et d'obtenir les métadonnées des schémas et des instances. Permet également de lire dans une base de données et de l'interroger via SQL.
roles/editor Permet d'effectuer toutes les opérations autorisées par le rôle roles/viewer. Permet également de créer des instances et des bases de données, ainsi que d'écrire des données dans une base de données.
roles/owner Permet d'effectuer toutes les opérations autorisées par le rôle roles/editor. Permet également de modifier l'accès aux bases de données et aux instances.

Rôles personnalisés

Si les rôles prédéfinis pour Spanner ne répondent pas aux besoins de votre entreprise, vous pouvez définir vos propres rôles personnalisés en leur associant les autorisations de votre choix.

Avant de créer un rôle personnalisé, vous devez déterminer les tâches que vous avez besoin d'effectuer. Vous pouvez ensuite identifier les autorisations requises pour chaque tâche et ajouter celles-ci au rôle personnalisé.

Rôles personnalisés pour les tâches de compte de service

Pour la plupart des tâches, les autorisations que vous devez ajouter à votre rôle personnalisé sont évidentes. Par exemple, si vous souhaitez que votre compte de service puisse créer une base de données, ajoutez l'autorisation spanner.databases.create à votre rôle personnalisé.

Toutefois, lorsque vous lisez ou écrivez des données dans une table Spanner, vous devez ajouter plusieurs autorisations distinctes à votre rôle personnalisé. Le tableau suivant indique les autorisations requises pour la lecture et l'écriture de données.

Tâche de compte de service Autorisations requises
Lire des données spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Insérer, mettre à jour ou supprimer des données spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Créer une sauvegarde spanner.backups.create
spanner.databases.createBackup
Restaurer une base de données spanner.databases.create
spanner.backups.restoreDatabase

Rôles personnalisés pour les tâches Google Cloud Console

Pour identifier la liste des autorisations dont vous avez besoin pour effectuer une tâche donnée dans la console Google Cloud, vous devez déterminer le workflow permettant d'effectuer cette tâche, puis compiler les autorisations correspondantes. Par exemple, pour afficher les données d'une table, il vous faudrait effectuer les étapes suivantes dans la console Google Cloud :

Étape Autorisations
1. Accéder au projet resourcemanager.projects.get
2. Afficher la liste des instances spanner.instances.list
3. Sélectionner une instance spanner.instances.get
4. Afficher la liste des bases de données spanner.databases.list
5. Sélectionner une base de données et une table spanner.databases.getDdl
6. Afficher les données d'une table spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

Dans cet exemple, les autorisations requises sont les suivantes :

  • resourcemanager.projects.get
  • spanner.databases.getDdl
  • spanner.databases.list
  • spanner.databases.select
  • spanner.instances.get
  • spanner.instances.list
  • spanner.sessions.create
  • spanner.sessions.delete

Le tableau suivant répertorie les autorisations requises pour les actions effectuées via la console Google Cloud.

Action Autorisations
Afficher la liste des instances sur la page "Instances"

resourcemanager.projects.get
spanner.instances.list

Afficher la liste présente dans l'onglet "Autorisations" de la page "Instances"

spanner.instances.getIamPolicy

Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Instances"

spanner.instances.setIamPolicy

Sélectionner une instance dans la liste des instances pour afficher la page "Détails de l'instance"

spanner.instances.get

Créer une instance

spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create

Supprimer une instance

spanner.instances.delete

Modifier une instance

spanner.instanceOperations.get
spanner.instances.update

Créer une partition

spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create

Supprimer une partition

spanner.instancePartitions.delete

Modifier une partition

spanner.instancePartitionOperations.get
spanner.instancePartitions.update

Afficher les graphiques présents dans l'onglet "Surveillance" de la page "Détails de l'instance" ou de la page "Détails de la base de données"

monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get

Afficher la liste des bases de données présente sur la page "Détails de l'instance"

spanner.databases.list

Afficher la liste présente dans l'onglet "Autorisations" de la page "Détails de la base de données"

spanner.databases.getIamPolicy

Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Détails de la base de données"

spanner.databases.setIamPolicy

Sélectionner une base de données dans la liste et afficher son schéma sur la page "Détails de la base de données"

spanner.databases.get
spanner.databases.getDdl

Créer une base de données

spanner.databases.create

Supprimer une base de données

spanner.databases.drop

Créer une table

Mettre à jour le schéma d'une table

spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl

Afficher les données présentes dans l'onglet "Données" de la page "Détails de la base de données"

Créer et exécuter une requête

spanner.databases.select
spanner.sessions.create
spanner.sessions.delete

Modifier des données dans une table

spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete

Afficher la page "Sauvegarde/Restauration"

spanner.backups.list
spanner.backups.get

Afficher la liste des opérations de sauvegarde

spanner.backupOperations.list

Afficher la liste des opérations de restauration

spanner.databaseOperations.list

Créer une sauvegarde

spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1

Restaurer une base de données à partir d'une sauvegarde

spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create

Mettre à jour une sauvegarde

spanner.backups.update

Supprimer une sauvegarde

spanner.backups.delete

Créer une programmation de sauvegarde

spanner.backupSchedules.create

spanner.databases.createBackup

Mettre à jour un planning de sauvegarde

spanner.backupSchedules.update

Supprimer une planification de sauvegarde

spanner.backupSchedules.delete

1 Obligatoire si vous créez une sauvegarde à partir de la page Sauvegarder/Restaurer au niveau de l'instance plutôt qu'au niveau de la base de données.

Gestion des stratégies IAM Spanner

Vous pouvez obtenir, définir et tester les stratégies IAM en exécutant les API REST ou RPC sur les ressources d'instance, de base de données et de sauvegarde Spanner.

Instances

API REST API RPC
projects.instances.getIamPolicy GetIamPolicy
projects.instances.setIamPolicy SetIamPolicy
projects.instances.testIamPermissions TestIamPermissions

Bases de données

API REST API RPC
projects.instances.databases.getIamPolicy GetIamPolicy
projects.instances.databases.setIamPolicy SetIamPolicy
projects.instances.databases.testIamPermissions TestIamPermissions

Sauvegardes

API REST API RPC
projects.instances.backups.getIamPolicy GetIamPolicy
projects.instances.backups.setIamPolicy SetIamPolicy
projects.instances.backups.testIamPermissions TestIamPermissions

Étapes suivantes