Sécurité pour les bibliothèques clientes de serveur

Lorsque vous utilisez les bibliothèques clientes de serveur pour Cloud Firestore, vous pouvez gérer l'accès à vos ressources à l'aide d'Identity and Access Management (IAM). IAM permet de contrôler plus finement l'accès à des ressources Google Cloud Platform spécifiques et d'empêcher tout accès indésirable à d'autres ressources. Les autorisations et les rôles IAM pour Cloud Firestore sont présentés ci-dessous. Pour une description détaillée de Cloud IAM, veuillez consulter la documentation IAM.

IAM vous permet d'appliquer le principe de sécurité de moindre privilège, c'est-à-dire de n'accorder l'accès qu'aux ressources nécessaires.

En définissant des stratégies IAM, vous pouvez contrôler qui (utilisateur) dispose de quelle autorisation (rôle) et sur quelles ressources. Les stratégies IAM attribuent un ou plusieurs rôles à un utilisateur, ce qui lui confère 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

Dans cette section, vous trouverez un récapitulatif des autorisations et des rôles pris en charge par Cloud Firestore.

Autorisations requises

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour effectuer chaque action :

Méthode Autorisations requises
projects.databases.documents
batchGet datastore.entities.get
beginTransaction datastore.databases.get
Modification ou transformation commit avec la précondition exists valant false datastore.entities.create
Modification ou transformation commit avec la précondition exists valant true datastore.entities.update
Modification ou transformation commit sans précondition datastore.entities.create
datastore.entities.update
Suppression de commit datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runQuery datastore.entities.get
datastore.entities.list
Modification ou transformation de write avec la précondition exists valant false datastore.entities.create
Modification ou transformation de write avec la précondition exists valant true datastore.entities.update
Modification ou transformation de write sans précondition datastore.entities.create
datastore.entities.update
Suppression de write datastore.entities.delete
projects.databases.indexes
create datastore.indexes.create
delete datastore.indexes.delete
get datastore.indexes.get
list datastore.indexes.list

Rôles

Avec IAM, chaque méthode d'API dans Cloud Firestore nécessite que le compte qui effectue la requête API dispose des autorisations appropriées pour utiliser la ressource. Ces autorisations sont gérées par des stratégies qui attribuent des rôles à un utilisateur, un groupe ou un compte de service. Vous pouvez attribuer des rôles Cloud Firestore aux utilisateurs de votre projet en plus des rôles primitifs, propriétaire, éditeur et lecteur.

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

Rôle Autorisations Description
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Accès complet à Cloud Firestore.
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list

resourcemanager.projects.get
resourcemanager.projects.list
Accès en lecture et en écriture aux données d'une base de données Cloud Firestore. 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 Cloud Firestore.
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 prises en charge par Cloud Firestore.

Nom de l'autorisation pour la base de données Description
datastore.databases.get Lancer une transaction ou effectuer un rollback.
Lire les métadonnées d'une base de données.
Nom de l'autorisation pour l'entité Description
datastore.entities.create Créer un document
datastore.entities.delete Supprimer un document
datastore.entities.get Lire un document
datastore.entities.list Répertorier les noms des documents d'un projet.
(Pour accéder aux données du document, datastore.entities.get est requis.)
datastore.entities.update Modifier un document
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 Modifier un index.
Nom de l'autorisation pour le projet Description
resourcemanager.projects.get Parcourt les ressources du projet.
resourcemanager.projects.list Répertorier les projets dont on est propriétaire.

Latence de modification d'un rôle

Cloud Firestore 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 Cloud Firestore

Vous pouvez obtenir et définir des stratégies IAM à l'aide de la console Google Cloud, de l'API IAM ou de l'outil de ligne de commande gcloud. Pour en savoir plus, veuillez consulter la section Attribuer, modifier et révoquer les accès des membres du projet.

Étape suivante