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