Primeros pasos con las reglas de seguridad
Con las reglas de seguridad de Firestore, puedes centrarte en crear una experiencia de usuario excelente sin tener que gestionar la infraestructura ni escribir código de autenticación y autorización del lado del servidor.
Las reglas de seguridad proporcionan control de acceso y validación de datos en un formato sencillo pero expresivo. Para crear sistemas de acceso basados en usuarios y roles que protejan los datos de tus usuarios, debes usar Firebase Authentication con reglas de seguridad de Firestore.
Versión 2 de las reglas de seguridad
Desde mayo del 2019, ya está disponible la versión 2 de las reglas de seguridad de Firestore. La versión 2 de las reglas cambia el comportamiento de las comodines recursivos {name=**}
. Debes usar la versión 2 si tienes previsto usar consultas de grupos de colecciones. Para habilitar la versión 2, debe añadir rules_version = '2';
como primera línea en sus reglas de seguridad:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Reglas de escritura
Escribirás y gestionarás reglas de seguridad de Firestore adaptadas al modelo de datos que crees para la base de datos predeterminada y para cada base de datos adicional de tu proyecto.
Todas las reglas de seguridad de Firestore constan de match
instrucciones, que identifican documentos en tu base de datos, y de allow
expresiones, 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 de bases de datos de una biblioteca de cliente web o para dispositivos móviles de Firestore se evalúan en función de tus reglas de seguridad antes de leer o escribir datos. Si las reglas deniegan el acceso a alguna de las rutas de documentos especificadas, se producirá un error en toda la solicitud.
A continuación, se muestran algunos ejemplos de conjuntos de reglas básicos. Aunque estas reglas son válidas, no se recomiendan para aplicaciones de producción:
Se requiere autenticación
// 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 todos
// 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 todas
// 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 coincide con cualquier documento de toda la base de datos. Consulta la guía sobre cómo estructurar las reglas de seguridad para saber cómo hacer coincidir rutas de datos específicas y trabajar con datos jerárquicos.
Probar reglas
Firestore proporciona un simulador de reglas que puedes usar para probar tu conjunto de reglas. Puedes acceder al simulador desde la pestaña Reglas de la sección Firestore de la consola de Firebase.
El simulador de reglas te permite simular lecturas, escrituras y eliminaciones autenticadas y no autenticadas. Cuando simulas una solicitud autenticada, puedes crear y previsualizar tokens de autenticación de varios proveedores. Las solicitudes simuladas se ejecutan en el conjunto de reglas de tu editor, no en el conjunto de reglas que tienes desplegado.
Desplegar reglas
Para poder empezar a usar Firestore desde tu aplicación móvil, debes implementar reglas de seguridad. Puedes implementar reglas en la consola de Firebase, con la CLI de Firebase o con la API REST de gestión de Firestore.
Las actualizaciones de las reglas de seguridad de Firestore pueden tardar hasta un minuto en afectar a las nuevas consultas y a los nuevos listeners. Sin embargo, los cambios pueden tardar hasta 10 minutos en propagarse por completo y afectar a los oyentes activos.
Usar la consola de Firebase
Para configurar y desplegar tu primer conjunto de reglas en la base de datos predeterminada de tu proyecto, abre la pestaña Reglas en la sección Firestore de la consola de Firebase.
Escribe las reglas en el editor online y haz clic en Publicar.
Usar la CLI de Firebase
También puedes desplegar reglas con la CLI de Firebase. La CLI te permite mantener tus reglas bajo control de versiones con el código de tu aplicación e implementar reglas como parte de tu proceso de implementación.
// 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
Pasos siguientes
- Consulta cómo estructurar las reglas de seguridad.
- Escribe condiciones de reglas de seguridad personalizadas.
- Consulta la referencia de reglas de seguridad.