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
Si quiere verificar si los enlaces de etiquetas se han configurado correctamente enumerándolos, necesitará 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 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
- Obtén más información sobre la gestión de identidades y accesos.
- Asigna roles de gestión de identidades y accesos.
- Más información sobre la autenticación