Présentation d'IAM

Identity and Access Management (IAM) vous permet de contrôler l'accès des utilisateurs et des groupes aux ressources Spanner au niveau du projet, de l'instance Spanner et de la 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 porte sur les autorisations IAM pertinentes pour Spanner et sur les rôles IAM qui permettent d'octroyer 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 Gérer les stratégies IAM.

Autorisations

Les autorisations permettent aux utilisateurs de réaliser des opérations spécifiques sur les ressources Spanner. Par exemple, l'autorisation spanner.databases.read permet à un utilisateur de lire dans une base de données à l'aide de l'API de lecture de Spanner, tandis que l'autorisation spanner.databases.select lui permet d'exécuter une instruction SQL "SELECT" sur une 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 les références de configuration des instances pour les API REST et RPC.

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.cancel Annuler une opération de configuration d'instance
spanner.instanceConfigOperations.delete Supprimer une opération de configuration d'instance
spanner.instanceConfigOperations.get Obtenir une opération de configuration d'instance
spanner.instanceConfigOperations.list Répertoriez les opérations 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.delete Supprimez une instance.
spanner.instances.get Obtenir la configuration d'une instance spécifique
spanner.instances.getIamPolicy Obtenir la stratégie IAM d'une instance
spanner.instances.list Répertorier les instances
spanner.instances.setIamPolicy Définir la stratégie IAM d'une instance
spanner.instances.update Mettre à jour 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.cancel Annuler une opération sur une instance
spanner.instanceOperations.delete Supprimer une opération sur une instance
spanner.instanceOperations.get Obtenir une opération sur une instance
spanner.instanceOperations.list Répertorier les opérations sur les instances

Partitions d'instance

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

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

Opérations de partitionnement d'instance

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

Nom de l'autorisation d'opération de partitionnement d'instance Description
spanner.instancePartitionOperations.cancel Annuler une opération de partitionnement d'instance.
spanner.instancePartitionOperations.delete Supprimez une opération de partitionnement d'instance.
spanner.instancePartitionOperations.get Obtenir une opération de partitionnement d'instance spécifique
spanner.instancePartitionOperations.list Répertorier les opérations de partitionnement d'instance

Bases de données

Les autorisations suivantes s'appliquent aux bases de données 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 pour la base de données Description
spanner.databases.adapt Permet à l'API Spanner Adapter d'interagir directement avec Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Commencer ou annuler une transaction en lecture/écriture sur une base de données Spanner
spanner.databases.beginPartitionedDmlTransaction Exécuter une instruction LMD (langage de manipulation de données) partitionnée par instance. Pour en savoir plus sur les requêtes partitionnées par instance, consultez la section Lire des données en parallèle.
spanner.databases.beginReadOnlyTransaction Commencer une transaction en lecture seule sur une base de données Spanner
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.drop Supprimer 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.list Répertorier les bases de données
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.setIamPolicy Définir la stratégie IAM d'une base 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.useDataBoost Utilisez les ressources de calcul de Spanner Data Boost pour traiter les requêtes partitionnées par instance.
spanner.databases.useRoleBasedAccess Utilisez un contrôle précis des accès.
spanner.databases.write Écrire dans une base de donné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 références de base de données pour les API REST et RPC.

Nom de l'autorisation de rôle de base de données Description
spanner.databaseRoles.list Répertorier 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 références de base de données pour les API REST et RPC.

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

Sauvegardes

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

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.delete Supprimer une sauvegarde
spanner.backups.get Obtenir une sauvegarde
spanner.backups.getIamPolicy Obtenir la stratégie IAM d'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.setIamPolicy Définir la stratégie IAM d'une sauvegarde
spanner.backups.update Mettre à jour une sauvegarde

Opérations de sauvegarde

Les autorisations suivantes s'appliquent aux opérations de sauvegarde 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 de l'opération de sauvegarde Description
spanner.backupOperations.cancel Annuler une opération de sauvegarde.
spanner.backupOperations.get Obtenir une opération de sauvegarde spécifique.
spanner.backupOperations.list Répertorier les opérations de sauvegarde.

Planifications de sauvegarde

Les autorisations suivantes s'appliquent aux planifications de sauvegarde 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 de planification 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.delete Supprimez une planification de sauvegarde.
spanner.backupSchedules.get Obtenez un calendrier de sauvegarde.
spanner.backupSchedules.list Répertorier les programmations de sauvegarde.
spanner.backupSchedules.update Mettre à jour un planning 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.delete Supprimer une session
spanner.sessions.get Obtenir 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 existe 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

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

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.databases.adapt
  • spanner.databases.addSplitPoints
  • 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.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.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

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

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

spanner.databases.adapt

spanner.databases.addSplitPoints

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

(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.adapt

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

Cloud Spanner API Service Agent

aiplatform.endpoints.get

aiplatform.endpoints.list

aiplatform.endpoints.predict

aiplatform.models.get

aiplatform.models.list

(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. Les rôles de base incluent des autorisations étendues qui s'appliquent à l'ensemble de vos ressources Google Cloud . En revanche, les rôles prédéfinis de Spanner incluent des autorisations détaillées qui ne s'appliquent qu'à Spanner.

Rôle de base Description
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.
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.

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
Créer une sauvegarde spanner.backups.create
spanner.databases.createBackup
Lire des données spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Restaurer une base de données spanner.backups.restoreDatabase
spanner.databases.create
Insérer, mettre à jour ou supprimer des données spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Rôles personnalisés pour les tâches de la console Google Cloud

Pour identifier la liste des autorisations dont vous avez besoin pour effectuer une tâche donnée dans la consoleGoogle 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, procédez comme suit 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 consoleGoogle Cloud .

Autorisations Action
spanner.databases.setIamPolicy Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Détails de la base de données"
spanner.instances.setIamPolicy Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Instances"
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Créer une sauvegarde
spanner.backupSchedules.create
spanner.databases.createBackup
Créer une programmation de sauvegarde
spanner.databases.create Créer une base de données
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Créer une partition d'instance
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Créer une table
Mettre à jour le schéma d'une table
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Créer une instance
spanner.backups.delete Supprimer une sauvegarde
spanner.backupSchedules.delete Supprimer une planification de sauvegarde
spanner.databases.drop Supprimer une base de données
spanner.instancePartitions.delete Supprimer une partition d'instance
spanner.instances.delete Supprimer une instance
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modifier la partition d'une instance
spanner.instanceOperations.get
spanner.instances.update
Modifier une instance
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Modifier des données dans une table
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
Restaurer une base de données à partir d'une sauvegarde
spanner.databases.get
spanner.databases.getDdl
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.instances.get Sélectionner une instance dans la liste des instances pour afficher la page "Détails de l'instance"
spanner.backups.update Mettre à jour une sauvegarde
spanner.backupSchedules.update Modifier un planning de sauvegarde
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Afficher les données 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.backups.list
spanner.backups.get
Afficher la page "Sauvegarder/Restaurer"
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
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"
spanner.backupOperations.list Afficher la liste des opérations de sauvegarde
spanner.databases.list Afficher la liste des bases de données présente sur la page "Détails de l'instance"
resourcemanager.projects.get
spanner.instances.list
Afficher la liste des instances sur la page "Instances"
spanner.databaseOperations.list Afficher la liste des opérations de restauration
spanner.databases.getIamPolicy Afficher la liste présente dans l'onglet "Autorisations" de la page "Détails de la base de données"
spanner.instances.getIamPolicy Afficher la liste présente dans l'onglet "Autorisations" de la page "Instances"
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 de 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