Gestión de Identidades y Accesos (IAM)

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 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
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.

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