Identity and Access Management (IAM)

Google Cloud propose Cloud Identity and Access Management (Cloud IAM), qui vous permet de définir de manière plus précise l'accès à des ressources spécifiques de Google Cloud et d'empêcher tout accès indésirable à d'autres ressources. Cette page décrit les rôles IAM compatibles avec Firestore en mode Datastore. Pour obtenir une description détaillée d'IAM, consultez la documentation IAM.

IAM vous permet d'adopter le principe de sécurité du moindre privilège afin de n'accorder que l'accès nécessaire à vos ressources.

Grâce à Cloud IAM, vous pouvez contrôler qui (utilisateurs) dispose de quelles autorisations d'accès (rôles) à quelles ressources en définissant des stratégies IAM. Ces stratégies permettent d'attribuer un ou plusieurs rôles spécifiques à un utilisateur afin de lui accorder certaines autorisations. Par exemple, vous pouvez attribuer le rôle datastore.indexAdmin à un utilisateur, ce qui lui permet de créer, modifier, supprimer, répertorier ou afficher des index.

Autorisations et rôles

Cette section présente un récapitulatif des autorisations et des rôles disponibles pour Firestore en mode Datastore.

Autorisations requises

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler chaque méthode :

Méthode Autorisations requises
allocateIds datastore.entities.allocateIds
beginTransaction datastore.databases.get
commit pour une insertion datastore.entities.create
commit pour une opération upsert datastore.entities.create
datastore.entities.update
commit pour une mise à jour datastore.entities.update
commit pour une suppression datastore.entities.delete
commit pour une recherche datastore.entities.get

Pour une recherche liée aux métadonnées ou aux statistiques, consultez la section Autorisations requises pour les métadonnées et les statistiques.
commit pour une requête datastore.entities.list
datastore.entities.get (si la requête n'est pas de type keys-only)

Pour une requête liée aux métadonnées ou aux statistiques, reportez-vous à la section Autorisations requises pour les métadonnées et les statistiques.
lookup datastore.entities.get

Pour une recherche liée aux métadonnées ou aux statistiques, consultez la section Autorisations requises pour les métadonnées et les statistiques.
rollback datastore.databases.get
runQuery datastore.entities.list
datastore.entities.get (si la requête n'est pas de type keys-only)

Pour une requête liée aux métadonnées ou aux statistiques, reportez-vous à la section Autorisations requises pour les métadonnées et les statistiques.

Autorisations requises pour les métadonnées et les statistiques

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler des méthodes sur les métadonnées et les statistiques.

Méthode Autorisations requises
Recherche lookup d'entités dont le nom de genre correspond à __ Stat _*__ datastore.statistics.get
Requêtes runQuery utilisant des genres dont les noms correspondent à __ Stat _*__ datastore.statistics.get
datastore.statistics.list
Requêtes runQuery utilisant le genre __ namespace __ datastore.namespaces.get
datastore.namespaces.list

Rôles

Avec IAM, chaque méthode d'API dans Datastore nécessite que le compte qui effectue la requête API dispose des autorisations appropriées pour utiliser la ressource. Ces autorisations sont attribuées en définissant des stratégies qui accordent des rôles à un utilisateur, un groupe ou un compte de service. En plus des rôles de base (Propriétaire, Éditeur et Lecteur), vous pouvez attribuer les rôles Cloud Firestore en mode Datastore aux utilisateurs de votre projet.

Le tableau suivant répertorie les rôles IAM compatibles avec Cloud Firestore en mode Datastore. Vous pouvez attribuer plusieurs rôles à un utilisateur, un groupe ou un compte de service.

Rôle Autorisations Description
roles/datastore.owner
avec
roles/appengine.appAdmin
appengine.applications.get
datastore.databases.*
datastore.entities.*
datastore.indexes.*
datastore.namespaces.*
datastore.operations.*
datastore.statistics.*
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet à l'instance de base de données.
roles/datastore.owner
sans
roles/appengine.appAdmin
appengine.applications.get
datastore.databases.*
datastore.entities.*
datastore.indexes.*
datastore.namespaces.*
datastore.operations.*
datastore.statistics.*
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet à l'instance de base de données, en restreignant les opérations suivantes pour les utilisateurs, les groupes ou les comptes de service :
roles/datastore.user appengine.applications.get
datastore.databases.get
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
Accès en lecture/écriture aux données d'une base de données en mode Datastore. Destiné aux développeurs d'applications et aux comptes de service.
roles/datastore.viewer appengine.applications.get
datastore.databases.get
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
Accès en lecture à toutes les ressources d'une base de données en mode Datastore.
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet pour gérer les importations et les exportations.
roles/datastore.indexAdmin appengine.applications.get
datastore.indexes.*
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet pour gérer les définitions des index.

Autorisations

Le tableau suivant répertorie les autorisations compatibles avec Firestore en mode Datastore.

Nom de l'autorisation pour la base de données Description
datastore.databases.export Exporte des entités depuis une base de données.
datastore.databases.get Lancer une transaction ou effectuer un rollback.
Lire les métadonnées d'une base de données.
datastore.databases.import Importe des entités vers une base de données.
Nom de l'autorisation pour l'entité Description
datastore.entities.allocateIds Attribue des ID aux clés avec un chemin d'accès de clé incomplet.
datastore.entities.create Crée une entité.
datastore.entities.delete Supprime une entité.
datastore.entities.get Lit une entité.
datastore.entities.list Répertorier les clés des entités dans un projet.
(Pour accéder aux données des entités, datastore.entities.get est requis.)
datastore.entities.update Met à jour une entité.
Nom de l'autorisation pour l'index Description
datastore.indexes.create Créer un index.
datastore.indexes.delete Supprimer un index.
datastore.indexes.get Lire les métadonnées d'un index.
datastore.indexes.list Répertorier les index dans un projet.
datastore.indexes.update Met à jour un index.
Nom de l'autorisation pour l'espace de noms Description
datastore.namespaces.get Récupère les métadonnées depuis un espace de noms.
datastore.namespaces.list Répertorie les espaces de noms dans un projet.
Nom de l'autorisation pour l'opération Description
datastore.operations.cancel Annule une opération de longue durée.
datastore.operations.delete Supprime une opération de longue durée.
datastore.operations.get Récupère le dernier état d'une opération de longue durée.
datastore.operations.list Répertorie les opérations de longue durée.
Nom de l'autorisation pour le projet Description
resourcemanager.projects.get Parcourt les ressources du projet.
resourcemanager.projects.list Répertorie les projets dont vous êtes propriétaire.
Nom de l'autorisation pour les statistiques Description
datastore.statistics.get Récupère des entités statistiques.
datastore.statistics.list Répertorier les clés des statistiques d'entités.
(Pour accéder aux données des entités, datastore.statistics.getest requis.)
Nom de l'autorisation pour App Engine Description
appengine.applications.get Accès en lecture seule à tous les paramètres et à la configuration de l'application App Engine.

Rôles requis pour créer une instance de base de données en mode Datastore

Pour créer une instance de base de données en mode Datastore, vous devez disposer du rôle Propriétaire ou du rôle Propriétaire Datastore.

Les bases de données en mode Datastore requièrent une application App Engine active. Si le projet ne possède pas d'application, Firestore en mode Datastore en crée une automatiquement. Dans ce cas, vous devez disposer de l'autorisation appengine.applications.create du rôle Propriétaire ou d'un rôle personnalisé IAM la comprenant.

Latence de modification d'un rôle

Firestore en mode Datastore met en cache les autorisations IAM pendant cinq minutes. La modification d'un rôle est appliquée dans ce même laps de temps.

Gérer IAM

Vous pouvez obtenir et définir des stratégies IAM à l'aide de Google Cloud Console, des méthodes IAM ou de l'outil de ligne de commande gcloud.

Étapes suivantes