Las reglas de seguridad de Firebase proporcionan una protección sólida y completamente personalizable para tus datos en Cloud Firestore, Realtime Database y Cloud Storage. Sigue los pasos de esta guía para comenzar fácilmente a definir las reglas, proteger tus datos y proteger tu app de usuarios maliciosos.
Comprende el lenguaje de las reglas de seguridad de Firebase
Antes de que comiences a escribir reglas, vale la pena que te tomes un tiempo a fin de revisar el lenguaje específico de las reglas de seguridad de Firebase para los productos de Firebase que usas. Realtime Database aprovecha una sintaxis similar a la de JavaScript y la estructura JSON para sus reglas.
Primero aprende la sintaxis básica del lenguaje de las reglas de seguridad de Firebase.
Configura la autenticación
Si aún no lo has hecho, agrega Firebase Authentication a tu app. Esta solución admite muchos métodos de autenticación comunes y se integra en las reglas de seguridad de Firebase para brindar funciones de verificación completas.
Puedes configurar información de autenticación adicional y personalizada para tu app.
Obtén más información sobre las reglas de seguridad de Firebase y Firebase Authentication.
Define tus estructuras de datos y reglas
Define datos para la seguridad
La forma en que estructures tus datos podría afectar la forma en que estructurarás e implementarás tus reglas. A medida que definas tus estructuras de datos, considera las implicaciones que pueden tener en tu estructura de reglas.
Por ejemplo, en Realtime Database es posible que quieras incluir un campo que represente un rol específico para cada usuario. Luego, tus reglas pueden leerlo y usarlo para otorgar acceso basado en funciones.
Cuando definas tus arquitecturas de datos y reglas, ten en cuenta la manera en que las reglas se transmiten en cascada o no, según el producto. Con Realtime Database las reglas funcionan de arriba abajo y las reglas más superficiales anulan las más profundas. Si una regla otorga permisos de lectura o escritura a una ruta de acceso específica, también otorga acceso a todos los nodos secundarios que se encuentran en ella. En cambio, con Cloud Firestore y Cloud Storage, las reglas se aplican solo a los niveles especificados de la jerarquía de datos, y debes escribir reglas explícitas para controlar el acceso a otros niveles.
Accede a tus reglas
Para ver tus reglas existentes, usa Firebase CLI o Firebase console. Asegúrate de editar tus reglas con el mismo método, de manera consistente, para evitar reemplazar las actualizaciones por error. Si no estás seguro de si tus reglas definidas de forma local reflejan las actualizaciones más recientes, Firebase console siempre muestra la versión implementada más recientemente de tus reglas de seguridad de Firebase.
Para acceder a tus reglas desde Firebase console, selecciona tu proyecto y, luego, haz clic en la opción Realtime Database del panel de navegación de la izquierda. Haz clic en Reglas una vez que estés en la base de datos o el bucket de almacenamiento correcto.
Para acceder a tus reglas desde Firebase CLI, dirígete al archivo de reglas anotado en el archivo firebase.json.
Escribe reglas básicas
A medida que desarrollas tu app y comprendes las reglas, te recomendamos que las implementes para abordar algunos casos de uso básicos, incluidos los siguientes:
- Solo propietario del contenido: Restringe el acceso al contenido por usuario.
- Acceso mixto: Restringe el acceso de escritura por usuario, pero permite el acceso de lectura público.
- Acceso basado en atributos: Restringe el acceso a un grupo o tipo de usuario.
Prueba tus reglas
Si estás configurando tus reglas de seguridad de Firebase en Firebase console, puedes usar la Zona de pruebas de reglas de Firebase para validar con rapidez el comportamiento. Sin embargo, te recomendamos realizar pruebas más exhaustivas con Local Emulator Suite antes de implementar los cambios en la producción.
Implementa las reglas
Usa Firebase console o Firebase CLI para implementar tus reglas en la producción. Sigue los pasos descritos en Implementa y administra las reglas de seguridad de Firebase.