Google Cloud ofrece Gestión de Identidades y Accesos (IAM), que te permite dar un acceso más granular a recursos específicos y evitar el acceso no deseado a otros recursos. Google Cloud En esta página se describen los roles de IAM de Firestore en el modo de Datastore. Para obtener una descripción detallada de IAM, consulta la documentación de IAM.
IAM te permite adoptar el principio de seguridad de mínimos accesos, de forma que solo concedas el acceso necesario a tus recursos.
La gestión de identidades y accesos te permite controlar quién (usuarios) tiene qué (roles) permiso para acceder a qué recursos mediante la configuración de políticas de gestión de identidades y accesos. Las políticas de IAM conceden uno o varios roles específicos a un usuario, lo que le otorga determinados permisos. Por ejemplo, puedes asignar el rol datastore.indexAdmin
a un usuario para que pueda crear, modificar, eliminar, enumerar o ver índices.
Permisos y funciones
En esta sección se resumen los permisos y los roles que admite Firestore en el modo de Datastore.
Permisos
En la siguiente tabla se enumeran los permisos que admite Firestore en el modo Datastore.
Nombre del permiso de la base | Descripción | |
---|---|---|
datastore.databases.export |
Exportar entidades de una base de datos. | |
datastore.databases.bulkDelete |
Elimina entidades de una base de datos en bloque. | |
datastore.databases.get |
Inicia o revierte una transacción. Confirma con mutaciones vacías. |
|
datastore.databases.import |
Importar entidades a una base de datos. | |
datastore.databases.getMetadata |
Leer metadatos de una base de datos. | |
datastore.databases.list |
Muestra las bases de datos de un proyecto. | |
datastore.databases.create |
Crear una base de datos. | |
datastore.databases.update |
Actualizar una base de datos. | |
datastore.databases.delete |
Eliminar una base de datos. | |
datastore.databases.clone |
Clona una base de datos.
Si tu solicitud
Si quiere verificar si los enlaces de etiquetas se han configurado correctamente enumerándolos, necesitará los siguientes permisos adicionales:
|
|
datastore.databases.createTagBinding |
Crea un enlace de etiquetas para una base de datos. | |
datastore.databases.deleteTagBinding |
Elimina un enlace de etiqueta de una base de datos. | |
datastore.databases.listTagBindings |
Lista todos los enlaces de etiquetas de una base de datos. | |
datastore.databases.listEffectiveTagBindings |
Lista los enlaces de etiquetas eficaces de una base de datos. | |
Nombre del permiso de la entidad | Descripción | |
datastore.entities.allocateIds |
Asigna IDs a las claves con una ruta de clave incompleta. | |
datastore.entities.create |
Crea una entidad. | |
datastore.entities.delete |
Eliminar una entidad. | |
datastore.entities.get |
Leer una entidad. | |
datastore.entities.list |
Lista las claves de las entidades de un proyecto. ( datastore.entities.get es necesario 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 |
Eliminar un índice. | |
datastore.indexes.get |
Lee los metadatos de un índice. | |
datastore.indexes.list |
Permiso para mostrar los índices de un proyecto. | |
datastore.indexes.update |
Actualizar un índice. | |
Nombre del permiso del espacio de nombres | Descripción | |
datastore.namespaces.get |
Recupera los metadatos de un espacio de nombres. | |
datastore.namespaces.list |
Muestra los espacios de nombres de un proyecto. | |
Nombre del permiso de operación | Descripción | |
datastore.operations.cancel |
Cancela una operación de larga duración. | |
datastore.operations.delete |
Elimina una operación de larga duración. | |
datastore.operations.get |
Obtiene el estado más reciente de una operación de larga duración. | |
datastore.operations.list |
Lista las operaciones de larga duración. | |
Nombre del permiso del proyecto | Descripción | |
resourcemanager.projects.get |
Explora los recursos del proyecto. | |
resourcemanager.projects.list |
Lista de proyectos propios. | |
Nombre del permiso de estadísticas | Descripción | |
datastore.statistics.get |
Recupera las entidades de estadísticas. | |
datastore.statistics.list |
Lista las claves de las entidades de estadísticas. ( datastore.statistics.get es necesario para acceder a los datos de la entidad de estadísticas). |
|
Nombre del permiso de App Engine | Descripción | |
appengine.applications.get |
Acceso de solo lectura a toda la configuración y los ajustes de las aplicaciones de App Engine. | |
Nombre del permiso de ubicación | Descripción | |
datastore.locations.get |
Obtener detalles sobre la ubicación de una base de datos. Es necesario para crear una base de datos. | |
datastore.locations.list |
Lista de ubicaciones de bases de datos disponibles. Es necesario para crear una base de datos. | |
Nombre del permiso de Key Visualizer | Descripción | |
datastore.keyVisualizerScans.get |
Obtener detalles sobre los análisis de Key Visualizer. | |
datastore.keyVisualizerScans.list |
Lista 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 una programación de copias de seguridad. | |
datastore.backupSchedules.list |
Muestra las frecuencias de copia de seguridad disponibles. | |
datastore.backupSchedules.create |
Crea una programación de copias de seguridad. | |
datastore.backupSchedules.update |
Actualizar una programación de copias de seguridad. | |
datastore.backupSchedules.delete |
Eliminar una programación de copias de seguridad. | |
Nombre del permiso de copia de seguridad | Descripción | |
datastore.backups.get |
Obtener detalles sobre una copia de seguridad. | |
datastore.backups.list |
Lista de copias de seguridad disponibles. | |
datastore.backups.delete |
Eliminar una copia de seguridad. | |
datastore.backups.restoreDatabase |
Restaurar una base de datos a partir de una copia de seguridad. | |
Nombre del permiso de estadísticas | Descripción | |
datastore.insights.get |
Obtener estadísticas de un recurso |
Funciones predefinidas
Con IAM, todos los métodos de la API Datastore requieren que la cuenta que hace la solicitud a la API tenga los permisos adecuados para usar el recurso. Los permisos se conceden configurando políticas que asignan roles a un usuario, un grupo o una cuenta de servicio. Además de los roles básicos Propietario, Editor y Lector, puedes asignar roles de Firestore en modo Datastore a los usuarios de tu proyecto.
En la siguiente tabla se enumeran los roles de gestión de identidades y accesos de Firestore en modo Datastore. Puedes asignar varios roles a un usuario, un grupo o una cuenta de servicio.
Rol | Permisos | Descripción |
---|---|---|
roles/datastore.owner |
appengine.applications.get datastore.* resourcemanager.projects.get resourcemanager.projects.list |
Acceso completo a la instancia de base de datos. Para obtener acceso de administrador de Datastore, asigna el rol appengine.appAdmin al 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 en modo Datastore. Está diseñado para desarrolladores 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 datastore.insights.get |
Acceso de lectura a todos los recursos de bases de datos en 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 completo para administrar importaciones y exportaciones. |
roles/datastore.bulkAdmin |
resourcemanager.projects.get resourcemanager.projects.list datastore.databases.getMetadata datastore.databases.bulkDelete datastore.operations.cancel datastore.operations.get datastore.operations.list |
Acceso completo para gestionar operaciones masivas. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.get datastore.operations.list 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 |
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 de una base de datos en el 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 de 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 del modo Datastore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Acceso completo a las copias de seguridad de 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 |
Posibilidad de restaurar una copia de seguridad del modo Datastore en una base de datos nueva. Este rol también permite crear bases de datos, no necesariamente restaurando una copia de seguridad. |
roles/datastore.cloneAdmin |
datastore.databases.clone datastore.databases.list datastore.databases.create datastore.databases.getMetadata datastore.operations.list datastore.operations.get |
Posibilidad de clonar una base de datos en modo Datastore en una nueva base de datos. Este rol también permite crear bases de datos, no necesariamente clonándolas. |
roles/datastore.statisticsViewer |
resourcemanager.projects.get resourcemanager.projects.list datastore.databases.getMetadata datastore.insights.get datastore.keyVisualizerScans.get datastore.keyVisualizerScans.list datastore.statistics.list datastore.statistics.get |
Acceso de lectura a las estadísticas y los análisis de Key Visualizer. |
Roles personalizados
Si los roles predefinidos no se ajustan a los requisitos de tu empresa, puedes definir tus propios roles personalizados con los permisos que especifiques:
Roles necesarios para crear y gestionar etiquetas
Si se representa alguna etiqueta en las acciones de creación o restauración, se requieren algunos roles. Consulta Crear y gestionar etiquetas para obtener más información sobre cómo crear pares clave-valor de etiquetas antes de asociarlos a los recursos de la base de datos.
Se requieren los permisos que se indican a continuación.
Ver etiquetas
datastore.databases.listTagBindings
datastore.databases.listEffectiveTags
Gestionar etiquetas en recursos
Se requiere el siguiente permiso para el recurso de base de datos al que vas a adjuntar el valor de la etiqueta.
datastore.databases.createTagBinding
Permisos necesarios para los métodos de la API
En la siguiente tabla se detallan los permisos que debe tener el solicitante para llamar a cada método:
Método | Permisos obligatorios |
---|---|
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 o actualización |
datastore.entities.create datastore.entities.update |
commit para obtener una actualización |
datastore.entities.update |
commit para eliminar |
datastore.entities.delete |
commit para una búsqueda |
datastore.entities.get Para obtener información sobre los metadatos o las estadísticas, consulta Permisos necesarios para los metadatos y las estadísticas. |
commit de una consulta |
datastore.entities.list datastore.entities.get (si la consulta no es una consulta de solo claves)Para consultas relacionadas con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
lookup |
datastore.entities.get Para obtener información sobre los metadatos o las estadísticas, consulta Permisos necesarios para los metadatos y las estadísticas. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (si la consulta no es una consulta de solo claves)Para consultas relacionadas con metadatos o estadísticas, consulta Permisos necesarios para metadatos y estadísticas. |
runQuery con una consulta independiente del tipo |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Permisos necesarios para metadatos y estadísticas
En la siguiente tabla se enumeran los permisos que debe tener el llamante para invocar métodos en Metadata y Statistics.
Método | Permisos obligatorios |
---|---|
lookup de entidades con nombres de tipo que coincidan con __Stat_*__ |
datastore.statistics.get |
runQuery usando tipos con nombres que coincidan con __Stat_*__ |
datastore.statistics.get datastore.statistics.list |
runQuery usando el tipo __namespace__ |
datastore.namespaces.get datastore.namespaces.list |
Roles necesarios para crear una instancia de base de datos en el modo Datastore
Para crear una instancia de base de datos en modo Datastore, necesitas el rol Propietario o el rol Propietario de Datastore.
Las bases de datos en modo Datastore requieren una aplicación de App Engine activa.
Si el proyecto no tiene ninguna aplicación, Firestore en el modo de Datastore creará una por ti. En ese caso, necesitas el permiso appengine.applications.create
del rol Propietario o de un rol personalizado de gestión de identidades y accesos que contenga el permiso.
Latencia de cambio de rol
Firestore en el modo de Datastore almacena en caché los permisos de IAM durante 5 minutos, por lo que los cambios en los roles tardarán hasta 5 minutos en aplicarse.
Gestionar la gestión de identidades y accesos
Puedes obtener y definir políticas de IAM con la Google Cloud consola, los métodos de IAM o la CLI de Google Cloud.
- Para la consola de Google Cloud , consulta Control de acceso con la consola de Google Cloud .
- Para obtener información sobre los métodos de gestión de identidades y accesos, consulta el artículo Control de acceso mediante la API.
- Para obtener información sobre la CLI de gcloud, consulta Control de acceso con la herramienta gcloud.
Configurar permisos de acceso condicional
Puedes usar condiciones de gestión de identidades y accesos para definir y aplicar el control de acceso condicional.
Por ejemplo, la siguiente condición asigna a un principal el rol datastore.user
hasta una fecha especificada:
{
"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')"
}
}
Para saber cómo definir condiciones de gestión de identidades y accesos para el acceso temporal, consulta Configurar el acceso temporal.
Para saber cómo configurar condiciones de gestión de identidades y accesos para acceder a una o varias bases de datos, consulta el artículo Configurar condiciones de acceso a bases de datos.
Siguientes pasos
- Obtén más información sobre la gestión de identidades y accesos.
- Asigna roles de gestión de identidades y accesos.