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.get est 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.
- Pour Google Cloud Console, consultez la section Contrôle des accès via Google Cloud Console.
- Pour les méthodes IAM, consultez la section Contrôle des accès via l'API.
- Pour gcloud CLI, consultez la section Contrôle des accès via l'outil gcloud.
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
- Apprenez-en plus sur IAM.
- Accorder des rôles IAM