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 |
---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( 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:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader with DataBoost( 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. |
|
Cloud Spanner Database Role User( 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`. |
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( 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. |
|
Cloud Spanner Restore Admin( 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:
|
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the 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:
|
|
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
|
Insérer, mettre à jour ou supprimer des données |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Créer une sauvegarde |
spanner.backups.create
|
Restaurer une base de données |
spanner.databases.create
|
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" |
|
Afficher la liste présente dans l'onglet "Autorisations" de la page "Instances" |
|
Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Instances" |
|
Sélectionner une instance dans la liste des instances pour afficher la page "Détails de l'instance" |
|
Créer une instance |
|
Supprimer une instance |
|
Modifier une instance |
|
Créer une partition |
|
Supprimer une partition |
|
Modifier une partition |
|
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" |
|
Afficher la liste des bases de données présente sur la page "Détails de l'instance" |
|
Afficher la liste présente dans l'onglet "Autorisations" de la page "Détails de la base de données" |
|
Ajouter des comptes principaux dans l'onglet "Autorisations" de la page "Détails de la base de données" |
|
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" |
|
Créer une base de données |
|
Supprimer une base de données |
|
Créer une table Mettre à jour le schéma d'une table |
|
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 |
|
Modifier des données dans une table |
|
Afficher la page "Sauvegarde/Restauration" |
|
Afficher la liste des opérations de sauvegarde |
|
Afficher la liste des opérations de restauration |
|
Créer une sauvegarde |
|
Restaurer une base de données à partir d'une sauvegarde |
|
Mettre à jour une sauvegarde |
|
Supprimer une sauvegarde |
|
Créer une programmation de sauvegarde |
|
Mettre à jour un planning de sauvegarde |
|
Supprimer une planification de sauvegarde |
|
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
- Obtenez plus d'informations sur Identity and Access Management.
- Découvrez comment attribuer des rôles IAM pour une instance ou une base de données Spanner ou pour un projet Google Cloud.
- Découvrez comment contrôler l'accès aux ressources Google Cloud, y compris Spanner, depuis Internet.