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
- Reglas de Seguridad de Firestore: Son expresiones que definen las condiciones bajo las cuales se puede leer o escribir en la base de datos.
- 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.
- Contexto de Autenticación: Las reglas pueden utilizar la información del usuario autenticado para tomar decisiones de acceso.
- 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:
- Crea una colección
posts
con documentos que tengan un campoauthorId
. - 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
- Introducción a la autenticación de Firebase
- Autenticación por correo electrónico y contraseña
- Autenticación de redes sociales
- Gestión de usuarios
Módulo 3: Base de datos en tiempo real de Firebase
- Introducción a la base de datos en tiempo real
- Lectura y escritura de datos
- Estructura de datos y reglas de seguridad
- Capacidades sin conexión
Módulo 4: Cloud Firestore
- Introducción a Cloud Firestore
- Modelo de datos de Firestore
- Operaciones CRUD
- Consultas avanzadas
- Reglas de seguridad
Módulo 5: Almacenamiento de Firebase
- Introducción al almacenamiento de Firebase
- Subida de archivos
- Descarga de archivos
- Metadatos de archivos y seguridad
Módulo 6: Mensajería en la nube de Firebase
- Introducción a la mensajería en la nube
- Envío de notificaciones
- Manejo de notificaciones
- Características avanzadas de mensajería
Módulo 7: Análisis de Firebase
Módulo 8: Funciones de Firebase
- Introducción a las funciones de Firebase
- Escritura de funciones
- Despliegue de funciones
- Activación de funciones
Módulo 9: Monitoreo de rendimiento de Firebase
- Introducción al monitoreo de rendimiento
- Configuración del monitoreo de rendimiento
- Análisis de datos de rendimiento
Módulo 10: Laboratorio de pruebas de Firebase
- Introducción al laboratorio de pruebas de Firebase
- Ejecución de pruebas
- Análisis de resultados de pruebas