Comienza a usar las reglas de seguridad de Cloud Firestore

Con Cloud Firestore Security Rules, 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 crear sistemas de acceso basados en usuarios y roles que mantengan seguros los datos de los usuarios, debes usar Firebase Autenticación con Cloud Firestore Security Rules.

Reglas de seguridad versión 2

A partir de mayo de 2019, la versión 2 de las reglas de seguridad de Cloud Firestore ya está disponible. 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 Cloud Firestore Security Rules 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 Cloud Firestore Security Rules consisten en sentencias de match, que identifican documentos en tu 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 Cloud Firestore web o para dispositivos móviles se comparan con tus reglas de seguridad antes de poder leer o escribir datos. Si las reglas rechazan el acceso a alguna de las rutas de los documentos especificados, la solicitud completa resulta errónea.

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

Cloud Firestore proporciona un simulador de reglas que puedes usar para probar tu conjunto de reglas. Para acceder al simulador, ve a la pestaña Reglas en la sección Cloud Firestore de 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 actualmente.

Implementa reglas

A fin de poder usar Cloud Firestore desde la app para dispositivos móviles, deberás implementar reglas de seguridad. Puedes implementar reglas en Firebase console, con Firebase CLI o con la API de REST de administración de Cloud Firestore.

Las actualizaciones de Cloud Firestore Security Rules 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, abre la pestaña Reglas en la sección Cloud Firestore de Firebase console.

Escribe las reglas en el editor en línea y haz clic en Publicar.

Usa Firebase CLI

También puedes implementar reglas con Firebase CLI. Esta interfaz te permite mantener las reglas bajo control de versión con el código de la aplicación y, además, implementar 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

Mejora la seguridad de Cloud Storage

Tus apps se beneficiarán de las sólidas funciones de bases de datos de Cloud Firestore y las funciones de almacenamiento y administración de archivos de Cloud Storage. Si se usan juntos, estos productos también refuerzan la seguridad de la app, ya que Cloud Firestore puede capturar los requisitos de autorización que pueden usar las reglas de seguridad de Firebase para ambos productos. Para obtener más información, consulta la guía de Cloud Storage.

Próximos pasos