Identity and Access Management (IAM)

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 Borra una vinculación de etiqueta de 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 Muestra una lista de los análisis de Key Visualizer disponibles.
Nombre del permiso de programación de copias de seguridad Descripción
datastore.backupSchedules.get Obtén detalles sobre una programación de copias de seguridad.
datastore.backupSchedules.list Muestra una lista de los programas de copias de seguridad disponibles.
datastore.backupSchedules.create Crea un programa de copias 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 Obtén detalles sobre una copia de seguridad.
datastore.backups.list Muestra una lista de 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
Acceso completo a la instancia de la base de datos.
Para obtener acceso de Administrador de Datastore, otorga 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 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 del 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 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 partir de 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.

Configura los 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 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')"
  }
}

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 Configura condiciones de acceso a la base de datos.

¿Qué sigue?