Inicio » Guía: Error de Firebase al denegar la lectura de la base de datos (Reglas de seguridad)
Web y Código

Guía: Error de Firebase al denegar la lectura de la base de datos (Reglas de seguridad)

✨ Respuesta Rápida

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

Causa
Modo de Prueba Expirado
Solución
Actualizar la fecha de expiración o configurar reglas de producción
Causa
Usuario no autenticado (request.auth == null)
Solución
Obligar inicio de sesión o permitir lectura pública (allow read: if true;)
Causa
Reglas ausentes o por defecto
Solución
Escribir reglas específicas para la colección que intentas consultar

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:

JAVASCRIPT
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.