Comience con las reglas de seguridad de Cloud Firestore

Con las reglas de seguridad de Cloud Firestore, puede concentrarse en crear una excelente experiencia de usuario sin tener que administrar la infraestructura o escribir códigos de autorización y autenticación del lado del servidor.

Las reglas de seguridad brindan control de acceso y validación de datos en un formato simple pero expresivo. Para crear sistemas de acceso basados ​​en usuarios y roles que mantengan seguros los datos de sus usuarios, debe usar Firebase Authentication con las reglas de seguridad de Cloud Firestore.

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. La versión 2 de las reglas cambia el comportamiento de los comodines recursivos {name=**} . Debe utilizar la versión 2 si planea utilizar consultas de grupos de recopilación . Debes optar por la versión 2 creando rules_version = '2'; la primera línea en sus reglas de seguridad:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Reglas de escritura

Escribirá y administrará reglas de seguridad de Cloud Firestore adaptadas al modelo de datos que cree para la base de datos predeterminada y cada base de datos adicional de su proyecto.

Todas las reglas de seguridad de Cloud Firestore constan de declaraciones match , que identifican documentos en su base de datos y 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>;
    }
  }
}

Cada solicitud de base de datos de una biblioteca de cliente web/móvil de Cloud Firestore se evalúa según sus reglas de seguridad antes de leer o escribir cualquier dato. Si las reglas niegan el acceso a cualquiera de las rutas de documentos especificadas, toda la solicitud falla.

A continuación se muestran algunos ejemplos de conjuntos de reglas básicas. Si bien 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;
    }
  }
}

Negar 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=**} utilizada en los ejemplos anteriores coincide con cualquier documento en toda la base de datos. Continúe con la guía para estructurar reglas de seguridad para aprender cómo hacer coincidir rutas de datos específicas y trabajar con datos jerárquicos.

Reglas de prueba

Cloud Firestore proporciona un simulador de reglas que puedes usar para probar tu conjunto de reglas. Puede acceder al simulador desde la pestaña Reglas en la sección Cloud Firestore de Firebase console.

El simulador de reglas le permite simular lecturas, escrituras y eliminaciones autenticadas y no autenticadas. Cuando simula una solicitud autenticada, puede crear y obtener una vista previa de tokens de autenticación de varios proveedores. Las solicitudes simuladas se ejecutan según el conjunto de reglas de su editor, no según el conjunto de reglas implementado actualmente.

Implementación de reglas

Antes de poder comenzar a usar Cloud Firestore desde su aplicación móvil, deberá implementar reglas de seguridad. Puedes implementar reglas en Firebase console, usando Firebase CLI o con la API REST de administración de Cloud Firestore.

Las actualizaciones de las reglas de seguridad de Cloud Firestore pueden tardar hasta un minuto en afectar las nuevas consultas y oyentes. Sin embargo, pueden pasar hasta 10 minutos para propagar completamente los cambios y afectar a los oyentes activos.

Usa la consola de Firebase

Para configurar e implementar su primer conjunto de reglas, para la base de datos predeterminada de su proyecto, abra la pestaña Reglas en la sección Cloud Firestore de Firebase console.

Escriba sus reglas en el editor en línea y luego haga clic en Publicar .

Utilice la CLI de Firebase

También puedes implementar reglas usando Firebase CLI . El uso de la CLI le permite mantener sus reglas bajo control de versiones con el código de su aplicación e implementar reglas como parte de su 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

Mejore la seguridad para el almacenamiento en la nube

Sus aplicaciones se beneficiarán de las sólidas funciones de base de datos de Cloud Firestore y de las funciones de administración y almacenamiento de archivos de Cloud Storage. Usados ​​juntos, estos productos también refuerzan la seguridad de las aplicaciones, ya que Cloud Firestore puede capturar los requisitos de autorización que pueden utilizar las reglas de seguridad de Firebase para ambos productos. Para obtener más información, consulte la guía de Almacenamiento en la nube .

Próximos pasos