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