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

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.
Effectuer un commit avec des mutations vides.
datastore.databases.import Importe des entités vers une base de données.
datastore.databases.getMetadata Lit les métadonnées depuis une base de données.
datastore.databases.list Répertorier les bases de données d'un projet
datastore.databases.create Créer une base de données
datastore.databases.update Mettre à jour une base de données
datastore.databases.delete Supprimez une base de données.
datastore.databases.createTagBinding Créez une liaison de tag pour une base de données.
datastore.databases.deleteTagBinding Supprimez une liaison de tag pour une base de données.
datastore.databases.listTagBindings Répertorier toutes les liaisons de tags pour une base de données.
datastore.databases.listEffectiveTagBindings Répertorier les liaisons de tags effectives pour 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.
Nom de l'autorisation relative aux emplacements Description
datastore.locations.get Obtenir des détails sur un emplacement de base de données. Obligatoire pour créer une base de données.
datastore.locations.list Liste les emplacements de base de données disponibles. Obligatoire pour créer une base de données.
Nom de l'autorisation Key Visualizer Description
datastore.keyVisualizerScans.get Obtenez des informations sur les analyses Key Visualizer.
datastore.keyVisualizerScans.list Répertorier les analyses Key Visualizer disponibles.
Nom de l'autorisation de programmation de sauvegarde Description
datastore.backupSchedules.get Obtenir des informations sur une planification de sauvegarde
datastore.backupSchedules.list Répertoriez les planifications de sauvegarde disponibles.
datastore.backupSchedules.create Créez un planning de sauvegarde.
datastore.backupSchedules.update Mettre à jour un planning de sauvegarde
datastore.backupSchedules.delete Supprimez une planification de sauvegarde.
Nom de l'autorisation de sauvegarde Description
datastore.backups.get Obtenir des informations sur une sauvegarde
datastore.backups.list Répertoriez les sauvegardes disponibles.
datastore.backups.delete Supprimer une sauvegarde
datastore.backups.restoreDatabase Restaurer une base de données à partir d'une sauvegarde.

Rôles prédéfinis

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 primitifs, Propriétaire, Éditeur et Lecteur, vous pouvez attribuer les rôles Firestore en mode Datastore suivants 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 appengine.applications.get
datastore.*
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet à l'instance de base de données.
Pour un accès administrateur Datastore, accordez le rôle appengine.appAdmin au principal.
roles/datastore.user appengine.applications.get
datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
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.databases.getMetadata
datastore.databases.list
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.getMetadata
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.databases.getMetadata
datastore.indexes.*
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet pour gérer les définitions des index.
roles/datastore.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
Accès complet aux analyses Key Visualizer.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Accès en lecture aux planifications de sauvegardes dans une base de données en mode Datastore.
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Accès complet aux planifications de sauvegardes dans une base de données en mode Datastore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Accès en lecture aux informations de sauvegarde dans un emplacement en mode Datastore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Accès complet aux sauvegardes dans un emplacement en mode Datastore.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Possibilité de restaurer une sauvegarde en mode Datastore dans une nouvelle base de données. Ce rôle permet également de créer des bases de données, et pas nécessairement en les restaurant à partir d'une sauvegarde.

Rôles personnalisés

Si les rôles prédéfinis ne répondent pas aux besoins de votre entreprise, vous pouvez définir vos propres rôles personnalisés et leur accorder les autorisations de votre choix.

Autorisations requises pour les méthodes API

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 avec des mutations vides 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.
runQuery avec une requête sans genre ; datastore.entities.get
datastore.entities.list
datastore.statistics.get
datastore.statistics.list

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 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 la console Google Cloud, des méthodes IAM ou de la Google Cloud CLI.

Configurer les autorisations d'accès conditionnel

Vous pouvez utiliser les conditions IAM pour définir et appliquer contrôle des accès conditionnel.

Par exemple, la condition suivante attribue le rôle datastore.user à un principal jusqu'à une date spécifiée:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

Pour savoir comment définir des conditions IAM pour un accès temporaire, consultez la section Configurer un accès temporaire.

Pour savoir comment configurer des conditions IAM pour l'accès à une ou plusieurs bases de données, consultez la page Configurer des conditions d'accès aux bases de données.

Étape suivante