Reglas de seguridad básicas en Firestore
Clase 20 de 32 • Curso de Firebase 5 para Web
Contenido del curso
Consola Web de Administración
Autenticación de Usuarios
- 6

Servicios de autenticación de Firebase
06:30 min - 7

Crear usuarios con Firebase Authentication
13:12 min - 8

Autenticación de Usuarios con Firebase: Registro y Verificación de Email
15:02 min - 9

Autenticación con Google usando Firebase en aplicaciones web
06:22 min - 10

Login con Facebook en Firebase
09:47 min - 11

Gestión de Autenticación de Usuarios con Firebase
11:42 min - 12

Gestión de usuarios en consola Firebase
05:05 min - 13

Importar y exportar usuarios de Firebase
04:17 min
Gestión de la Base de Datos
- 14

Firestore vs Realtime Database: por qué migrar
08:36 min - 15
Comparación entre Realtime Database y Firestore de Firebase
02:11 min - 16

Habilitar Firestore en Firebase Console
09:53 min - 17

Cómo insertar datos en Firestore con validación
10:53 min - 18

Consultas en Tiempo Real con Firestore para Aplicaciones Web
15:01 min - 19

Operaciones avanzadas de Firestore
13:12 min - 20

Reglas de seguridad básicas en Firestore
Viendo ahora - 21

Creación y gestión de índices en Firestore para optimizar consultas
07:13 min
Almacenamiento de archivos
Hosting
Notificaciones Push
Conclusiones
Configurar reglas de seguridad en Firestore define quién puede leer, escribir, actualizar y borrar datos. Aquí se muestra cómo proteger una colección post con autenticación por UID, habilitar lectura pública tipo listado, y limitar actualización/borrado solo al autor validando UID y email. Además, se explica cómo usar la trazabilidad y el simulador para verificar cambios con confianza.
¿Cómo asegurar Firestore con reglas de autenticación?
Para evitar una base de datos “abierta” donde cualquiera con credenciales escriba, la primera medida es exigir autenticación. La regla base restringe todas las operaciones si no existe un usuario autenticado con UID.
- Problema inicial: la pestaña Reglas muestra advertencia porque está “totalmente abierto”.
- Objetivo: permitir leer, escribir, actualizar y borrar solo a usuarios autenticados.
- Clave: usar el campo de sesión autenticada con request.auth.uid distinto de null.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /post/{document} {
// Solo usuarios autenticados pueden leer y escribir.
allow read, write, update, delete: if request.auth.uid != null;
}
}
}
¿Qué implica aplicar y publicar reglas?
- Al “Publicar”, Firestore guarda la trazabilidad de las reglas para revertir o comparar cambios.
- Con el usuario autenticado: se pueden ver e insertar posts.
- Tras hacer sign out: las lecturas quedan bloqueadas al no cumplir la condición de autenticación.
¿Qué lecturas deben ser públicas en un blog con Firestore?
Un blog suele requerir que los visitantes puedan ver la lista de posts sin iniciar sesión. Para ello, se habilita el listado público y se mantiene el resto de operaciones bajo autenticación.
- Ajuste: quitar la restricción de lectura total y permitir “listar datos” de post.
- Regla práctica: habilitar list público con
if true. - Resultado: usuarios no autenticados pueden consultar los posts, mientras crear/actualizar/borrar sigue protegido.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /post/{document} {
// Lista pública de posts.
allow list: if true;
// Resto de operaciones protegidas por autenticación.
allow get, create, update, delete: if request.auth.uid != null;
}
}
}
¿Cómo se probó el flujo de acceso?
- Crear un post autenticado: funciona, se visualiza y se inserta sin problema.
- Hacer sign out y actualizar: ya no se ven los posts hasta ajustar reglas.
- Habilitar list público y recargar: los posts vuelven a ser visibles sin login.
¿Cómo limitar actualización y borrado por UID y email?
Para que solo el autor modifique o elimine su post, se comparan dos atributos: el UID del usuario autenticado y el email del token con los campos del documento existente.
- Condición 1:
request.auth.uid == resource.data.uid. - Condición 2:
request.auth.token.email == resource.data.email. - Beneficio: asegura que solo el creador, autenticado y con el mismo email, edite o borre.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /post/{uid} {
// Solo el autor puede actualizar o borrar su propio post.
allow update, delete: if request.auth.uid != null
&& request.auth.uid == resource.data.uid
&& request.auth.token.email == resource.data.email;
}
}
}
¿Qué herramientas ayudan a validar cambios?
- Trazabilidad: permite ver historial, comparar con la versión más reciente y restaurar reglas anteriores.
- Simulador: ejecuta pruebas de acceso sin necesidad de la aplicación, útil para validar escenarios de lectura y escritura.
¿Tienes dudas sobre estas reglas o quieres compartir variaciones para otros casos de uso? Deja tu comentario y conversemos.