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. En utilisant le contrôle des accès avec IAM vous permet d'accorder une autorisation à un utilisateur ou à un groupe de devoir modifier chaque autorisation pour les instances Spanner ou les bases de données individuellement.
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 d'IAM et de ses fonctionnalités, consultez la 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 à l'instance Spanner de configuration. 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éer 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 |
Mettre à jour une configuration d'instance personnalisée |
Opérations de configuration d'instance
Les autorisations suivantes s'appliquent à la configuration des instances Spanner opérations. Pour en savoir plus, consultez les documentations de référence des instances REST et RPC API.
Nom de l'autorisation pour les opérations 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 plus consultez la documentation de référence sur les instances pour REST et RPC API.
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 documentations de référence des instances REST et RPC API.
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 de partition d'instance pour les API REST et RPC.
Nom de l'autorisation pour les opérations de partition d'instance | Description |
---|---|
spanner.instancePartitionOperations.list |
Répertorier 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 les documentations de référence des 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 une transaction en lecture/écriture sur une base de données Spanner ou effectuer un rollback |
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 des accès précis. |
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 du 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. |
Sessions
Les autorisations suivantes s'appliquent aux sessions Spanner. Pour plus consultez les documentations de référence des bases de données pour 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 présente le contrôle des accès avec les rôles IAM prédéfinis, y compris 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 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 accepte les rôles de base suivants, vous devez dans la mesure du possible, utilisez 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 à vos aux exigences métier, vous pouvez définir vos propres rôles avec des autorisations que vous spécifiez.
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 différentes autorisations à 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 le dans la console Google Cloud, vous déterminez le workflow de cette tâche et vous compilez les autorisations pour ce workflow. Par exemple, pour afficher les données d'une vous devez suivre ces étapes 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 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 |
|
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 |
|
Gestion des stratégies IAM de Spanner
Vous pouvez obtenir, définir et tester des stratégies IAM à l'aide des API REST ou RPC sur 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 appliquer des rôles IAM pour 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, sur Internet.