Guía: Error de Firebase al denegar la lectura de la base de datos (Reglas de seguridad)
El error Firebase Error: [code=permission-denied] ocurre cuando tu aplicación frontend (web o móvil) intenta leer, escribir o actualizar datos en Cloud Firestore o Realtime Database, pero el servidor de Firebase rechaza la solicitud porque las Reglas de Seguridad (Security Rules) del proyecto no otorgan los permisos necesarios.
El error Firebase Error: [code=permission-denied] ocurre cuando tu aplicación frontend (web o móvil) intenta leer, escribir o actualizar datos en Cloud Firestore o Realtime Database, pero el servidor de Firebase rechaza la solicitud porque las Reglas de Seguridad (Security Rules) del proyecto no otorgan los permisos necesarios.
Este fallo es sumamente común al pasar un proyecto de la etapa de desarrollo local a producción, o cuando expira el periodo de gracia del "Modo de prueba" (que suele durar 30 días).
El Diagnóstico Rápido
request.auth == null)allow read: if true;)La Solución Paso a Paso
Identificar el entorno de base de datos Entra a tu consola de Firebase, selecciona tu proyecto y dirígete al apartado de Cloud Firestore o Realtime Database en el menú izquierdo, luego haz clic en la pestaña Rules (Reglas).
Configurar reglas seguras (Para Firestore)
Si tu base de datos estaba en modo de prueba, verás una regla que bloqueaba el acceso tras una fecha específica. Jamás uses reglas que permitan la lectura y escritura pública global (allow read, write: if true;) en producción, ya que cualquiera podría borrar tu base de datos.
Implementa una estructura condicional que exija que el usuario esté autenticado para poder modificar datos:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Permitir a cualquier usuario leer contenido público
match /public_content/{document} {
allow read: if true;
allow write: if request.auth != null;
}
// Restringir colecciones privadas de usuarios
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Publicar cambios Haz clic en el botón Publish (Publicar) en la consola de Firebase. Los cambios en las reglas toman entre 1 y 2 minutos en propagarse globalmente. Reinicia tu aplicación cliente y los errores de permisos desaparecerán.
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Simulador de Reglas: Utiliza el simulador de reglas (Rules Playground) integrado en la consola de Firebase antes de lanzar cambios a producción.
- Monitoreo: Monitorea la pestaña de "Usage" (Uso) para detectar picos anormales de lecturas denegadas, lo cual podría indicar un bug en tu código cliente o un intento de acceso no autorizado.