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 individuellement chaque instance ou autorisation de base de données Spanner.
Ce document porte 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 de réaliser des actions spécifiques sur les ressources Spanner. Par exemple, l'autorisation spanner.databases.read
permet à un utilisateur de lire des données dans une base de données à l'aide de l'API de lecture de Spanner, tandis que spanner.databases.select
lui permet d'exécuter une instruction SQL "select" dans 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'instances Spanner. Pour en savoir plus, consultez la documentation de référence sur la configuration d'instance pour les API REST et RPC.
Nom de l'autorisation relative aux configurations d'instance | Description |
---|---|
spanner.instanceConfigs.create |
Créer une configuration d'instance personnalisée |
spanner.instanceConfigs.delete |
Supprimer 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 |
Mettre à jour une configuration d'instance personnalisée |
Opérations de configuration d'instance
Les autorisations suivantes s'appliquent aux opérations de configuration de l'instance Spanner. Pour en savoir plus, consultez la documentation de référence sur les instances pour les API REST et RPC.
Nom de l'autorisation pour l'opération de configuration de l'instance | Description |
---|---|
spanner.instanceConfigOperations.list |
Lister 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 la documentation de référence sur les instances 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 la documentation de référence sur les instances 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 |
Bases de données
Les autorisations suivantes s'appliquent aux bases de données Spanner. Pour en savoir plus, consultez la documentation de référence de la base de données pour les API REST et RPC.
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 effectuer un rollback d'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 |
Mettez en place un contrôle précis des accès. |
spanner.databases.useDataBoost |
Utilisez les ressources de calcul de Spanner Data Boost pour traiter les 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 la documentation de référence sur les bases de données pour les API REST et RPC.
Nom de l'autorisation associée au 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 la documentation de référence sur les bases 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.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 en savoir plus, consultez la documentation de référence sur les sauvegardes 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.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 en savoir plus, consultez la documentation de référence de la base de données pour les API 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. |
Sessions
Les autorisations suivantes s'appliquent aux sessions Spanner. Pour en savoir plus, consultez la documentation de référence de la 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 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 présente le contrôle des accès avec les rôles prédéfinis IAM, ainsi que les 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 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, nous vous conseillons, dans la mesure du possible, d'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 à toutes vos ressources Google Cloud. En revanche, les rôles prédéfinis de Spanner incluent des autorisations ultraprécises 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 différentes à 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 une tâche donnée dans la console Google Cloud, vous devez déterminer le workflow correspondant et compiler les autorisations correspondantes. Par exemple, pour afficher les données d'une table, procédez comme suit dans la console Google Cloud:
Step | 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 dans 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 |
|
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 |
|
Gestion des stratégies IAM Spanner
Vous pouvez obtenir, définir et tester des stratégies IAM à l'aide des API REST ou RPC sur les instances, la base de données et les ressources 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 appliquer des rôles IAM pour une instance ou une base de données Spanner ou un projet Google Cloud.
- Découvrez comment contrôler l'accès aux ressources Google Cloud, y compris Spanner, depuis Internet.