Google Cloud ofrece la función de administración de identidades y accesos (IAM), que te permite brindar acceso más detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. En esta página, se describen las funciones de IAM para Firestore en modo Datastore. Para ver una descripción detallada de IAM, lee la documentación de IAM.
IAM te permite adoptar el principio de seguridad de menor privilegio, de manera que solo otorgas el acceso necesario a tus recursos.
IAM te permite controlar las funciones de los usuarios y los permisos para los recursos mediante la configuración de políticas de IAM. Las políticas de IAM asignan funciones específicas a un usuario, lo que le otorga ciertos permisos. Por ejemplo, puedes otorgar la función datastore.indexAdmin
a un usuario, de modo que pueda crear, modificar, borrar, enumerar o ver índices.
Permisos y funciones
En esta sección, se resumen los permisos y las funciones que admite Firestore en modo Datastore.
Permisos
En la siguiente tabla, se enumeran los permisos que admite Firestore en modo Datastore.
Nombre del permiso de la base de datos | Descripción | |
---|---|---|
datastore.databases.export |
Exporta entidades de una base de datos. | |
datastore.databases.get |
Inicia o revierte una transacción. Confirma con mutaciones vacías. |
|
datastore.databases.import |
Importa entidades a una base de datos. | |
datastore.databases.getMetadata |
Lee metadatos de una base de datos. | |
datastore.databases.list |
Enumera las bases de datos de un proyecto. | |
datastore.databases.create |
Crea una base de datos. | |
datastore.databases.update |
Actualiza una base de datos. | |
datastore.databases.delete |
Borra una base de datos. | |
datastore.databases.createTagBinding |
Crea una vinculación de etiquetas para una base de datos. | |
datastore.databases.deleteTagBinding |
Borrar una vinculación de etiqueta para una base de datos | |
datastore.databases.listTagBindings |
Enumera todas las vinculaciones de etiquetas de una base de datos. | |
datastore.databases.listEffectiveTagBindings |
Enumera las vinculaciones de etiquetas efectivas para una base de datos. | |
Nombre del permiso de la entidad | Descripción | |
datastore.entities.allocateIds |
Asigna los ID para las claves con una ruta de clave incompleta. | |
datastore.entities.create |
Crea una entidad. | |
datastore.entities.delete |
Borra una entidad. | |
datastore.entities.get |
Lee una entidad. | |
datastore.entities.list |
Enumera las claves de las entidades de un proyecto. ( datastore.entities.get es obligatorio para acceder a los datos de la entidad). |
|
datastore.entities.update |
Actualiza una entidad. | |
Nombre del permiso de índice | Descripción | |
datastore.indexes.create |
Crea un índice. | |
datastore.indexes.delete |
Borra un índice. | |
datastore.indexes.get |
Lee metadatos de un índice. | |
datastore.indexes.list |
Muestra los índices de un proyecto. | |
datastore.indexes.update |
Actualiza un índice. | |
Nombre del permiso del espacio de nombres | Descripción | |
datastore.namespaces.get |
Recupera metadatos de un espacio de nombres. | |
datastore.namespaces.list |
Muestra los espacios de nombres de un proyecto. | |
Nombre del permiso de la operación | Descripción | |
datastore.operations.cancel |
Cancela una operación de larga duración. | |
datastore.operations.delete |
Borra una operación de larga duración. | |
datastore.operations.get |
Obtiene el último estado de una operación de larga duración. | |
datastore.operations.list |
Muestra las operaciones de larga duración. | |
Nombre del permiso de proyecto | Descripción | |
resourcemanager.projects.get |
Busca recursos en el proyecto. | |
resourcemanager.projects.list |
Muestra los proyectos propios. | |
Nombre del permiso de las estadísticas | Descripción | |
datastore.statistics.get |
Recupera las entidades de las estadísticas. | |
datastore.statistics.list |
Enumera las claves de las entidades de las estadísticas. ( datastore.statistics.get es obligatorio para acceder a los datos de las entidades de las estadísticas). |
|
Nombre del permiso de App Engine | Descripción | |
appengine.applications.get |
Acceso de solo lectura a toda la configuración de las aplicaciones de App Engine. | |
Nombre del permiso de ubicación | Descripción | |
datastore.locations.get |
Obtén detalles sobre la ubicación de una base de datos. Obligatorio para crear una nueva base de datos. | |
datastore.locations.list |
Enumera las ubicaciones de las bases de datos disponibles. Obligatorio para crear una nueva base de datos. | |
Nombre del permiso de Key Visualizer | Descripción | |
datastore.keyVisualizerScans.get |
Obtén detalles sobre los análisis de Key Visualizer. | |
datastore.keyVisualizerScans.list |
Enumera los análisis de Key Visualizer disponibles. | |
Nombre del permiso de programación de copias de seguridad | Descripción | |
datastore.backupSchedules.get |
Obtener detalles sobre el programa de una copia de seguridad | |
datastore.backupSchedules.list |
Muestra una lista de los programas de copias de seguridad disponibles. | |
datastore.backupSchedules.create |
Crear un programa de copia de seguridad | |
datastore.backupSchedules.update |
Actualizar un programa de copia de seguridad | |
datastore.backupSchedules.delete |
Borra una programación de copia de seguridad. | |
Nombre del permiso de la copia de seguridad | Descripción | |
datastore.backups.get |
Obtén detalles sobre una copia de seguridad. | |
datastore.backups.list |
Enumera las copias de seguridad disponibles. | |
datastore.backups.delete |
Borra una copia de seguridad. | |
datastore.backups.restoreDatabase |
Restablece una base de datos a partir de una copia de seguridad. |
Funciones predefinidas
Con la IAM, cada método de la API de Datastore requiere que la cuenta que realiza la solicitud a la API tenga los permisos adecuados para usar el recurso. Para otorgar los permisos, se configuran políticas que asignan funciones a un usuario, un grupo o una cuenta de servicio. Además de las funciones básicas, Propietario, Editor y Visualizador, puedes otorgar funciones de Firestore en modo Datastore a los usuarios de tu proyecto.
En la siguiente tabla se enumeran las funciones de IAM de Firestore en modo Datastore. Puedes asignar varias funciones a un usuario, un grupo o una cuenta de servicio.
Función | Permisos | Descripción |
---|---|---|
roles/datastore.owner |
appengine.applications.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
Tiene acceso completo a la instancia de la base de datos. Para obtener acceso de administrador de Datastore, otorga el rol appengine.appAdmin a la 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 |
Acceso de lectura y escritura a los datos de una base de datos del modo Datastore. Pensado para programadores de aplicaciones y cuentas de servicio. |
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 |
Acceso de lectura a todos los recursos de la base de datos del modo 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 |
Acceso total para administrar importaciones y exportaciones |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* resourcemanager.projects.get resourcemanager.projects.list |
Acceso completo para administrar definiciones de índices |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadata datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list resourcemanager.projects.get resourcemanager.projects.list |
Tiene acceso completo a los análisis de Key Visualizer. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Acceso de lectura a las programaciones de copias de seguridad en una base de datos del modo 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 |
Acceso completo a las programaciones de copias de seguridad en una base de datos en modo Datastore. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Acceso de lectura a la información de las copias de seguridad en una ubicación en modo Datastore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Acceso completo a las copias de seguridad en una ubicación del modo 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 |
Capacidad para restablecer una copia de seguridad del modo Datastore en una base de datos nueva. Este rol también permite crear bases de datos nuevas, no necesariamente a través del restablecimiento desde una copia de seguridad. |
Funciones personalizadas
Si las funciones predefinidas no responden a tus requisitos comerciales, puedes definir tus propias funciones personalizadas con los permisos que especifiques:
Permisos obligatorios para los métodos de API
En la siguiente tabla, se enumeran los permisos que debe tener el emisor para llamar a cada método:
Método | Permisos necesarios |
---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
commit con mutaciones vacías |
datastore.databases.get |
commit para una inserción |
datastore.entities.create |
commit para una inserción y actualización simultáneas |
datastore.entities.create datastore.entities.update |
commit para una actualización |
datastore.entities.update |
commit para una eliminación |
datastore.entities.delete |
commit para una búsqueda |
datastore.entities.get Si quieres realizar una búsqueda relacionada con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
commit para una consulta |
datastore.entities.list datastore.entities.get (si la consulta no es una consulta de solo claves)Para una consulta relacionada con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
lookup |
datastore.entities.get Si quieres realizar una búsqueda relacionada con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (si la consulta no es una consulta de solo claves)Para una consulta relacionada con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
runQuery con una consulta sin categoría |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Permisos necesarios para metadatos y estadísticas
En la siguiente tabla, se muestran los permisos que debe tener el emisor para llamar a los métodos en Metadatos y Estadísticas.
Método | Permisos necesarios |
---|---|
lookup de entidades con nombres de tipos que coincidan con __Stat_*__ |
datastore.statistics.get |
runQuery que utiliza tipos con nombres que coinciden con __Stat_*__ |
datastore.statistics.get datastore.statistics.list |
runQuery que utiliza el tipo __namespace__ |
datastore.namespaces.get datastore.namespaces.list |
Funciones necesarias para crear una instancia de base de datos del modo Datastore
Para crear una nueva instancia de base de datos de modo Datastore, necesitas la función de propietario o la función de propietario de Datastore.
Las bases de datos del modo Datastore requieren una aplicación de App Engine activa.
Si el proyecto no tiene una aplicación, Firestore en modo Datastore creará una por ti. En ese caso, necesitas el permiso appengine.applications.create
de la función de propietario o de una función personalizada de IAM que contenga el permiso.
Latencia del cambio de función
Firestore en modo Datastore almacena en caché los permisos de IAM durante 5 minutos, por lo que el cambio de función tomará hasta 5 minutos en aplicarse.
Administra IAM
Puedes obtener y configurar políticas de IAM con la consola de Google Cloud, los métodos de IAM o Google Cloud CLI.
- Para obtener información sobre la consola de Google Cloud, consulta Control de acceso a través de la consola de Google Cloud.
- Para los métodos de IAM, consulta Control de acceso a través de la API.
- Para la CLI de gcloud, consulta Control de acceso a través de la herramienta de gcloud.
Configura permisos de acceso condicional
Puedes usar las condiciones de IAM para lo siguiente: definir y aplicar el control de acceso condicional.
Por ejemplo, la siguiente condición le asigna a una principal la datastore.user
hasta una fecha específica:
{
"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')"
}
}
Si quieres obtener información para definir condiciones de IAM para el acceso temporal, consulta Configura el acceso temporal.
Si quieres aprender a configurar las Condiciones de IAM para acceder a uno o más bases de datos, consulta Configura las condiciones de acceso a la base de datos.
¿Qué sigue?
- Obtén más información sobre IAM.
- Asigna funciones de IAM.