Gestión de identidades y accesos (IAM)

Gestiona el acceso a tus recursos con la gestión de identidades y accesos (IAM). IAM te permite conceder un acceso más granular a recursos Google Cloud específicos e impide el acceso no deseado a otros recursos. En esta página se describen los permisos y roles de gestión de identidades y accesos de Firestore. 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, por lo que solo concedes el acceso necesario a tus recursos.

Gestión de identidades y accesos te permite controlar quién (usuario) tiene qué (rol) permiso para qué recursos configurando políticas de gestión de identidades y accesos. Las políticas de gestión de identidades y accesos conceden uno o varios roles a un usuario, lo que le otorga determinados permisos. Por ejemplo, puedes asignar el rol datastore.indexAdmin a un usuario, lo que le permite crear, modificar, eliminar, enumerar o ver índices.

Permisos y roles

En esta sección se resumen los permisos y los roles que admite Firestore.

Permisos obligatorios para los métodos de API

En la siguiente tabla se indican los permisos que debe tener el llamante para realizar cada acción:

Método Permisos obligatorios
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

Los mismos permisos que requería 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 upsert)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (solo para sustituir o actualizar)
datastore.entities.create (solo para insertar o actualizar)
datastore.entities.delete (solo para eliminar)
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
restore datastore.backups.restoreDatabase
clone datastore.databases.clone Clona una base de datos.

Si tu solicitud clone contiene un valor tags, se requieren los siguientes permisos adicionales:

  • datastore.databases.createTagBinding

Si quiere verificar si los enlaces de etiquetas se han configurado correctamente enumerándolos, necesitará los siguientes permisos adicionales:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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 IAM, todos los métodos de la API de Firestore requieren que la cuenta que realiza 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 primitivos propietario, editor y lector, puedes asignar roles de Firestore a los usuarios de tu proyecto.

En la siguiente tabla se indican los roles de IAM de Firestore. 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 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
Acceso de lectura y escritura a los datos de una base de datos de Firestore. 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
Acceso de lectura a todos los recursos de 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
Acceso de lectura a las programaciones de copias de seguridad de una base de datos de 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
Acceso completo a las programaciones de copias de seguridad de una base de datos de Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Acceso de lectura a la información de las copias de seguridad de una ubicación de Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Acceso completo a las copias de seguridad de una ubicación de 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
Posibilidad de restaurar una copia de seguridad de Firestore 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 de Firestore en una nueva. 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/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Acceso de lectura a las credenciales de usuario en una base de datos de 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
Acceso completo a las credenciales de usuario en una base de datos de Firestore.

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

En la siguiente tabla se enumeran los permisos que admite Firestore.

Nombre del permiso de la base Descripción
datastore.databases.get Iniciar o restaurar una transacción.
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.
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.create Crea un documento.
datastore.entities.delete Elimina un documento.
datastore.entities.get Leer un documento.
datastore.entities.list Lista los nombres de los documentos de un proyecto.
(Se necesita datastore.entities.get 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 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 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 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
Nombre del permiso de credenciales de usuario Descripción
datastore.userCreds.get Obtener detalles sobre las credenciales de usuario.
datastore.userCreds.list Lista de credenciales de usuario disponibles.
datastore.userCreds.create Crea credenciales de usuario.
datastore.userCreds.update Habilitar o inhabilitar las credenciales de usuario, o restablecer la contraseña de un usuario.
datastore.userCreds.delete Elimina las credenciales del usuario.

Latencia de cambio de rol

Firestore almacena en caché los permisos de gestión de identidades y accesos durante 5 minutos, por lo que los cambios en los roles tardan hasta 5 minutos en aplicarse.

Gestionar la gestión de identidades y accesos de Firestore

Puedes obtener y definir políticas de gestión de identidades y accesos mediante la Google Cloud consola, la API de gestión de identidades y accesos o la herramienta de línea de comandos gcloud. Consulta más información en el artículo sobre cómo conceder, cambiar y revocar el acceso de los miembros del proyecto.

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