Comienza con las reglas de seguridad
Con las reglas de seguridad de Firestore, puedes enfocarte en crear una excelente experiencia del usuario sin tener que administrar la infraestructura ni escribir código de autorización y autenticación del servidor.
Las reglas de seguridad proporcionan control de acceso y validación de datos en un formato simple, pero claro y eficaz. Para compilar sistemas de acceso según la función y el usuario que mantengan protegidos los datos de los usuarios, debes usar Firebase Authentication con las reglas de seguridad de Firestore.
Reglas de seguridad versión 2
A partir de mayo de 2019, comenzó a estar disponible la versión 2 de las reglas de seguridad de Firestore. En esta versión, cambia el comportamiento de los comodines recurrentes {name=**}. Debes usar la versión 2 si deseas usar las consultas de grupos de colecciones. Para usar la versión 2, debes poner rules_version = '2';; en la primera línea de tus reglas de seguridad:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Escribe reglas
Escribirás y administrarás reglas de seguridad de Firestore que se adapten al modelo de datos que crees para la base de datos predeterminada y cada base de datos adicional del proyecto.
Todas las reglas de seguridad de Firestore consisten en declaraciones match, que identifican documentos de la base de datos, y expresiones allow, que controlan el acceso a esos documentos:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Todas las solicitudes que se envíen a la base de datos desde una biblioteca cliente de Firestore para dispositivos móviles o la Web se evalúan según las reglas de seguridad antes de leer o escribir datos. Si las reglas rechazan el acceso a alguna de las rutas de los documentos especificados, falla la solicitud completa.
A continuación, se muestran algunos ejemplos de conjuntos de reglas básicos. Estas reglas son válidas, pero no se recomiendan para las aplicaciones de producción:
Auth obligatoria
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Rechazar todo
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Permitir todo
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
La ruta {document=**} que se usa en los ejemplos anteriores corresponde a todos los documentos de la base de datos completa. Continúa con la guía para estructurar reglas de seguridad a fin de aprender a establecer correspondencias con rutas de datos específicas y trabajar con datos jerárquicos.
Cómo probar reglas
Firestore proporciona un simulador de reglas que puedes usar para probar tu conjunto de reglas. Puedes acceder al simulador en la Google Cloud consola y en el Firebase console.
El simulador de reglas te permite simular lecturas, escrituras y eliminaciones autenticadas y no autenticadas. Cuando simulas una solicitud autenticada, puedes compilar tokens de autenticación de varios proveedores y obtener una vista previa. Las solicitudes simuladas se ejecutan considerando el conjunto de reglas que has definido en el editor, no el que está implementado.
Prueba reglas en la Google Cloud consola
El simulador de reglas en la Google Cloud consola está disponible para Firestore en modo nativo en las ediciones Standard y Enterprise.
Permisos necesarios
Para probar las reglas de seguridad en la Google Cloud consola, necesitas el siguiente permiso de IAM:
firebaserules.rulesets.test
Para simular una solicitud de base de datos en la Google Cloud consola, haz lo siguiente:
- En la Google Cloud consola, ve a la página Bases de datos.
- Haz clic en el ID de la base de datos que deseas probar.
- En el menú de navegación, haz clic en Seguridad.
- Haz clic en la pestaña Simulador.
- En la lista desplegable Tipo de simulación , selecciona un tipo de operación: get, create, update o delete.
- En el campo Ubicación, ingresa la ruta del documento que deseas probar (por ejemplo,
users/user_123). - (Opcional) Para las solicitudes create y update, haz clic en Compilar documento para configurar la carga útil del documento simulado.
- (Opcional) Para simular una solicitud autenticada, activa Autenticación, selecciona un proveedor de autenticación (como google.com o Anónimo) y configura los campos de carga útil del token.
- Haz clic en Ejecutar.
El panel de evaluación muestra si se permitió o rechazó la solicitud, elementos de informe detallados para cada condición evaluada y aspectos destacados a nivel de línea en el editor de código.
Prueba reglas en Firebase console
Para probar las reglas en Firebase console, ve a la pestaña Bases de datos y almacenamiento > Firestore > Reglas. Haz clic en Zona de pruebas de reglas para abrir la configuración del simulador, selecciona las opciones de simulación y, luego, haz clic en Ejecutar.
Implementa reglas
Para poder usar Firestore desde la app para dispositivos móviles, deberás implementar reglas de seguridad. Puedes implementar reglas en Firebase console, en la Google Cloud consola, con Firebase CLI o con la API de REST de administración de Firestore.
Las actualizaciones de las reglas de seguridad de Firestore pueden tardar hasta un minuto en aplicarse a consultas y objetos de escucha nuevos. Sin embargo, la propagación completa de los cambios y su aplicación a los objetos de escucha activos puede tardar hasta 10 minutos.
Usa Firebase console
Para implementar y configurar tu primer conjunto de reglas, en la base de datos predeterminada de tu proyecto, ve a la pestaña Bases de datos y almacenamiento > Firestore > Reglas en Firebase console.
Si creas varias bases de datos para tu proyecto, puedes implementar reglas de seguridad de Firestore para cada base de datos. En Firebase console, usa el selector de base de datos para cambiar entre la base de datos predeterminada y cualquier base de datos adicional.
Escribe las reglas en el editor en línea y haz clic en Publicar.
Usa la Google Cloud consola
Puedes administrar e implementar reglas de seguridad de Firestore directamente en la Google Cloud consola. El editor de reglas está disponible para Firestore en modo nativo en las ediciones Standard y Enterprise.
Permisos necesarios
Para administrar e implementar reglas de seguridad en la Google Cloud consola, necesitas los siguientes permisos de IAM:
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(obligatorio para usar el simulador de reglas)
Para implementar reglas en la Google Cloud consola, haz lo siguiente:
- En la Google Cloud consola, ve a la página Bases de datos.
- Haz clic en el ID de la base de datos que deseas administrar.
- En el menú de navegación, haz clic en Seguridad.
- Haz clic en la pestaña Reglas de Firestore.
- En el editor de reglas, consulta tus reglas. Para editar, haz clic en Nuevo conjunto de reglas o Clonar conjunto de reglas y, luego, modifica tus reglas.
- Haz clic en Publicar para implementar los cambios.
También puedes ver conjuntos de reglas anteriores en la línea de tiempo y clonarlos o restaurarlos.
Usa Firebase CLI
También puedes implementar reglas con el Firebase CLI. El uso de CLI te permite mantener las reglas bajo control de versión con el código de la aplicación y, además, aplicar reglas como parte del proceso de implementación existente.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
Próximos pasos
- Obtén información sobre cómo estructurar reglas de seguridad.
- Escribe condiciones personalizadas para las reglas de seguridad.
- Consulta la referencia de las reglas de seguridad.