Introducción

Las reglas de seguridad de Firebase son fundamentales para proteger los datos almacenados en Cloud Firestore. Estas reglas determinan quién puede acceder a qué datos y bajo qué condiciones. En este tema, aprenderás cómo escribir y aplicar reglas de seguridad para asegurar tu base de datos de Firestore.

Conceptos Clave

  1. Reglas de Seguridad de Firestore: Son expresiones que definen las condiciones bajo las cuales se puede leer o escribir en la base de datos.
  2. Sintaxis de Reglas: Las reglas se escriben en un lenguaje específico de Firebase que permite definir condiciones basadas en la autenticación del usuario y la estructura de los datos.
  3. Contexto de Autenticación: Las reglas pueden utilizar la información del usuario autenticado para tomar decisiones de acceso.
  4. Validación de Datos: Las reglas también pueden validar los datos antes de permitir una operación de escritura.

Estructura de las Reglas de Seguridad

Las reglas de seguridad de Firestore se definen en un archivo firestore.rules. La estructura básica de una regla es la siguiente:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if <condition>;
    }
  }
}

Desglose de la Estructura

  • service cloud.firestore: Indica que las reglas son para Firestore.
  • match /databases/{database}/documents: Aplica las reglas a todos los documentos en la base de datos.
  • match /{document=}**: Aplica las reglas a todos los documentos en cualquier colección.
  • allow read, write: Define las operaciones permitidas (lectura y escritura).
  • if : Condición que debe cumplirse para permitir la operación.

Ejemplos Prácticos

Ejemplo 1: Permitir Acceso Solo a Usuarios Autenticados

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Explicación: Esta regla permite leer y escribir en cualquier documento solo si el usuario está autenticado (request.auth != null).

Ejemplo 2: Permitir Acceso Basado en Roles

service cloud.firestore {
  match /databases/{database}/documents {
    match /adminData/{document=**} {
      allow read, write: if request.auth.token.role == 'admin';
    }
  }
}

Explicación: Esta regla permite leer y escribir en documentos dentro de la colección adminData solo si el usuario tiene el rol de administrador (request.auth.token.role == 'admin').

Ejemplo 3: Validación de Datos

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow create: if request.resource.data.name is string
                    && request.resource.data.age is int;
    }
  }
}

Explicación: Esta regla permite crear documentos en la colección users solo si el campo name es una cadena de texto y el campo age es un entero.

Ejercicio Práctico

Ejercicio 1: Crear Reglas de Seguridad

Objetivo: Escribir reglas de seguridad para una colección posts donde solo el autor del post puede editarlo, pero cualquier usuario autenticado puede leerlo.

Instrucciones:

  1. Crea una colección posts con documentos que tengan un campo authorId.
  2. Escribe las reglas de seguridad en el archivo firestore.rules.

Solución:

service cloud.firestore {
  match /databases/{database}/documents {
    match /posts/{postId} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && request.auth.uid == resource.data.authorId;
    }
  }
}

Explicación:

  • allow read: if request.auth != null: Permite leer cualquier documento en la colección posts si el usuario está autenticado.
  • allow write: if request.auth != null && request.auth.uid == resource.data.authorId: Permite escribir en un documento solo si el usuario está autenticado y es el autor del post.

Conclusión

Las reglas de seguridad de Firestore son una herramienta poderosa para proteger tus datos. Al aprender a escribir y aplicar estas reglas, puedes asegurarte de que solo los usuarios autorizados puedan acceder y modificar la información en tu base de datos. En el siguiente módulo, exploraremos cómo utilizar Cloud Firestore para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) de manera segura y eficiente.

Curso de Firebase

Módulo 1: Introducción a Firebase

Módulo 2: Autenticación de Firebase

Módulo 3: Base de datos en tiempo real de Firebase

Módulo 4: Cloud Firestore

Módulo 5: Almacenamiento de Firebase

Módulo 6: Mensajería en la nube de Firebase

Módulo 7: Análisis de Firebase

Módulo 8: Funciones de Firebase

Módulo 9: Monitoreo de rendimiento de Firebase

Módulo 10: Laboratorio de pruebas de Firebase

Módulo 11: Temas avanzados de Firebase

© Copyright 2024. Todos los derechos reservados