Administra el acceso a tus recursos con Identity and Access Management (IAM). IAM te permite otorgar 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 los roles y los permisos de IAM para Cloud Firestore. 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 otorgues el acceso necesario a tus recursos.
IAM te permite configurar políticas para controlar quién (usuario) tiene qué (función) permiso para qué recursos.
Las políticas de IAM asignan una o más funciones a un usuario, lo que le otorga ciertos permisos. Por ejemplo, puedes asignar la función datastore.indexAdmin
a un usuario, lo que le permite crear, modificar, borrar, mostrar o ver índices.
Permisos y funciones
En esta sección, se resumen los permisos y los roles que admite Cloud Firestore.
Permisos obligatorios para los métodos de API
La siguiente tabla muestra los permisos que debe tener el emisor para ejecutar cada acción:
Método | Permisos necesarios | |
---|---|---|
projects.databases.MongoDBCompatible |
||
ListDatabases |
datastore.databases.getMetadata |
|
ListIndexes |
datastore.indexes.list |
|
Find |
datastore.entities.get datastore.entities.list |
|
Aggregate |
datastore.entities.get datastore.entities.list |
|
GetMore |
Son los mismos permisos que se requerían para la llamada que creó el cursor. |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.get datastore.entities.list |
|
CommitTransaction |
datastore.databases.get |
|
AbortTransaction |
datastore.databases.get |
|
EndSessions |
datastore.databases.get |
|
KillCursors |
datastore.databases.get |
|
Insert |
datastore.entities.create |
|
Update |
datastore.entities.get datastore.entities.list datastore.entities.update datastore.entities.create (solo para actualizar o insertar) |
|
FindAndModify |
datastore.entities.get datastore.entities.list datastore.entities.update (solo para reemplazar o actualizar)datastore.entities.create (solo para actualizar o insertar)datastore.entities.delete (solo para borrar) |
|
CreateCollection |
datastore.entities.create |
|
projects.databases.indexes |
||
create |
datastore.indexes.create |
|
delete |
datastore.indexes.delete |
|
get |
datastore.indexes.get |
|
list |
datastore.indexes.list |
|
projects.databases |
||
create |
datastore.databases.create |
|
delete |
datastore.databases.delete |
|
get |
datastore.databases.getMetadata |
|
list |
datastore.databases.list |
|
patch |
datastore.databases.update |
|
restablecer | datastore.backups.restoreDatabase |
|
clone |
datastore.databases.clone |
Clona una base de datos.
Si tu solicitud de
Si deseas verificar si las vinculaciones de etiquetas se establecieron correctamente enumerándolas, se requieren los siguientes permisos adicionales:
|
projects.locations |
||
get |
datastore.locations.get |
|
list |
datastore.locations.list |
|
projects.databases.backupschedules |
||
get |
datastore.backupSchedules.get |
|
list |
datastore.backupSchedules.list |
|
create |
datastore.backupSchedules.create |
|
update |
datastore.backupSchedules.update |
|
delete |
datastore.backupSchedules.delete |
|
projects.locations.backups |
||
get |
datastore.backups.get |
|
list |
datastore.backups.list |
|
delete |
datastore.backups.delete |
|
projects.databases.usercreds |
||
get |
datastore.userCreds.get |
|
list |
datastore.userCreds.list |
|
create |
datastore.userCreds.create |
|
enable |
datastore.userCreds.update |
|
disable |
datastore.userCreds.update |
|
resetPassword |
datastore.userCreds.update |
|
delete |
datastore.userCreds.delete |
Funciones predefinidas
Con la IAM, cada método de API en Cloud Firestore exige que la cuenta que envía la solicitud a la API tenga los permisos apropiados 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 primitivas, propietario, editor y visualizador, puedes asignar roles de Cloud Firestore a los usuarios de tu proyecto.
En la siguiente tabla, se enumeran los roles de IAM de Cloud Firestore. 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 total a Cloud Firestore. |
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 |
Tiene acceso de lectura/escritura a los datos de una base de datos de Cloud Firestore. 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 |
Tiene acceso de lectura a todos los recursos de Cloud Firestore. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.list datastore.operations.get resourcemanager.projects.get resourcemanager.projects.list |
Acceso completo para administrar definiciones de índices. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.get datastore.backupSchedules.list |
Tiene acceso de lectura a las programaciones de copias de seguridad en una base de datos de Cloud Firestore. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.get datastore.backupSchedules.list datastore.backupSchedules.create datastore.backupSchedules.update datastore.backupSchedules.delete datastore.databases.list datastore.databases.getMetadata |
Tiene acceso completo a las programaciones de copias de seguridad en una base de datos de Cloud Firestore. |
roles/datastore.backupsViewer |
datastore.backups.get datastore.backups.list |
Tiene acceso de lectura a la información de copias de seguridad en una ubicación de Cloud Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Tiene acceso completo a las copias de seguridad en una ubicación de Cloud Firestore. |
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 |
Tiene capacidad de restablecer una copia de seguridad de Cloud Firestore en una base de datos nueva. Este rol también permite crear bases de datos nuevas, no necesariamente restableciéndolas a partir de 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 |
Tiene capacidad de clonar una base de datos de Cloud Firestore en una base de datos nueva. Este rol también permite crear bases de datos nuevas, 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 |
Tiene acceso de lectura a los análisis de Observaciones, Estadísticas y Key Visualizer. |
roles/datastore.userCredsViewer |
datastore.userCreds.get datastore.userCreds.list |
Tiene acceso de lectura a las credenciales de usuario en una base de datos de Cloud Firestore. |
roles/datastore.userCredsAdmin |
datastore.userCreds.get datastore.userCreds.list datastore.userCreds.create datastore.userCreds.update datastore.userCreds.delete datastore.databases.list datastore.databases.getMetadata |
Tiene acceso completo a las credenciales del usuario en una base de datos de Cloud Firestore. |
Funciones personalizadas
Si las funciones predefinidas no responden a tus requisitos comerciales, puedes definir tus propias funciones personalizadas con los permisos que especifiques:
Roles obligatorios para crear y administrar etiquetas
Si alguna etiqueta está representada en las acciones de creación o restablecimiento, se requieren algunos roles. Consulta Crea y administra etiquetas para obtener más detalles sobre cómo crear pares clave-valor de etiquetas antes de asociarlos a los recursos de la base de datos.
Se requieren los siguientes permisos.
Visualiza etiquetas
datastore.databases.listTagBindings
datastore.databases.listEffectiveTags
Administra etiquetas en los recursos
Se requiere el siguiente permiso para el recurso de base de datos al que adjuntas el valor de la etiqueta.
datastore.databases.createTagBinding
Permisos
En la siguiente tabla, se enumeran los permisos que admite Cloud Firestore.
Nombre del permiso de la base de datos | Descripción | |
---|---|---|
datastore.databases.get |
Inicia o revierte una transacción. | |
datastore.databases.getMetadata |
Lee metadatos de una base de datos. | |
datastore.databases.list |
Enumera las bases de datos de un proyecto. | |
datastore.databases.create |
Crear una base de datos. | |
datastore.databases.update |
Actualiza una base de datos. | |
datastore.databases.delete |
Borra una base de datos. | |
datastore.databases.clone |
Clona una base de datos. | |
datastore.databases.createTagBinding |
Crea una vinculación de etiquetas para una base de datos. | |
datastore.databases.deleteTagBinding |
Borra una vinculación de etiqueta para una base de datos. | |
datastore.databases.listTagBindings |
Enumera todas las vinculaciones de etiquetas para una base de datos. | |
datastore.databases.listEffectiveTagBindings |
Enumera las vinculaciones de etiquetas eficaces para una base de datos. | |
Nombre del permiso de la entidad | Descripción | |
datastore.entities.create |
Crea un documento. | |
datastore.entities.delete |
Borra un documento. | |
datastore.entities.get |
Lee un documento. | |
datastore.entities.list |
Enumera los nombres de los documentos de un proyecto. ( datastore.entities.get es obligatorio para acceder a los datos del documento). |
|
datastore.entities.update |
Actualiza un documento. | |
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 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 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 la programación de copias de seguridad | Descripción | |
datastore.backupSchedules.get |
Obtiene detalles sobre una programación de copias de seguridad. | |
datastore.backupSchedules.list |
Enumera las programaciones de copias de seguridad disponibles. | |
datastore.backupSchedules.create |
Crea una programación de copia de seguridad. | |
datastore.backupSchedules.update |
Actualiza una programación 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 |
Obtiene 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. | |
Nombre del permiso de estadísticas | Descripción | |
datastore.insights.get |
Obtén estadísticas sobre un recurso. | |
Nombre del permiso de las credenciales del usuario | Descripción | |
datastore.userCreds.get |
Obtén detalles sobre las credenciales del usuario. | |
datastore.userCreds.list |
Enumera las credenciales de usuario disponibles. | |
datastore.userCreds.create |
Crea credenciales de usuario. | |
datastore.userCreds.update |
Habilita o inhabilita las credenciales de usuario, o restablece la contraseña de un usuario. | |
datastore.userCreds.delete |
Borra las credenciales del usuario. |
Latencia del cambio de funciones
Cloud Firestore almacena los permisos de IAM en caché durante 5 minutos, por lo que tarda hasta 5 minutos en que un cambio de rol se aplique.
Administra Cloud Firestore IAM
Puedes obtener y configurar políticas de IAM con la consola de Google Cloud,
la API de IAM o la herramienta
de línea de comandos gcloud
. Consulta cómo otorgar, cambiar y revocar el acceso de los miembros del proyecto para ver detalles.
Configura permisos de acceso condicional
Puedes usar las condiciones de IAM para definir y aplicar el control de acceso condicional.
Por ejemplo, la siguiente condición asigna a una 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')"
}
}
Si quieres obtener información para definir condiciones de IAM para el acceso temporal, consulta Configura el acceso temporal.
Si quieres obtener información para configurar condiciones de IAM para el acceso a una o más bases de datos, consulta Cómo configurar condiciones de acceso a la base de datos.
¿Qué sigue?
- Obtén más información sobre IAM.
- Asigna funciones de IAM.
- Obtén más información sobre la autenticación.