Tradicionalmente, la seguridad ha sido una de las partes más complejas del desarrollo de una app. En la mayoría de las aplicaciones, los desarrolladores tienen que construir y poner en funcionamiento un servidor que maneje la autenticación (determinar la identidad del usuario) y la autorización (controlar qué puede hacer cada usuario). La autenticación y la autorización son difíciles de configurar y no es sencillo hacerlo sin cometer errores, pero son aspectos absolutamente fundamentales para el éxito de tu producto.
Así como Firebase Authentication te facilita la tarea de autenticar a tus usuarios, las reglas de seguridad de Firebase para Cloud Storage te facilitan la tarea de autorizarlos y validar sus solicitudes. Las reglas de seguridad de Cloud Storage administran la complejidad por ti porque te permiten especificar permisos basados en rutas. Con muy poco código, puedes escribir reglas de autorización que restrinjan las solicitudes de Cloud Storage a un usuario determinado o limiten el tamaño de las cargas.
Firebase Realtime Database tiene una función similar denominada Reglas de seguridad de Firebase Realtime Database.
Autenticación
Saber quiénes son tus usuarios es una parte importante de la creación de una app, y Firebase Authentication te ofrece una solución de autenticación fácil de usar, segura y del lado del cliente únicamente. Las reglas de seguridad de Firebase para Cloud Storage están vinculadas directamente con Firebase Authentication
para brindarte seguridad basada en el usuario. Cuando se autentica a un usuario con Firebase Authentication,
la variable request.auth
de las reglas de seguridad de Cloud Storage se convierte en un objeto que
contiene el ID único del usuario (request.auth.uid
) y el resto de la información
del usuario en el token (request.auth.token
). Cuando no se autentica al usuario,
request.auth
es null
. Esto permite que controles en forma segura
el acceso a los datos de cada usuario. Puedes obtener más información en la sección Autenticación.
Autorización
La identificación de tus usuarios no es más que uno de los aspectos de la seguridad. Una vez que sepas quiénes son, necesitas una manera de controlar su acceso a los archivos en Cloud Storage.
Cloud Storage te permite especificar reglas de
autorización por archivo y por ruta de acceso, que se alojan en nuestros servidores y determinan el acceso a los archivos en tu app.
Por ejemplo, las reglas de seguridad predeterminadas de Cloud Storage requieren Firebase Authentication para
realizar cualquier operación de tipo read
o write
que afecte a todos los archivos:
service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; } } }
Para editar estas reglas, puedes seleccionar una app de Firebase en Firebase console
y consultar la pestaña Rules
de la sección Storage.
Validación de datos
Las reglas de seguridad de Firebase para Cloud Storage también se pueden utilizar para la validación de datos, lo cual incluye la validación del nombre de archivo y la ruta de acceso, así como las propiedades de los metadatos de archivo, como contentType
y size
.
service firebase.storage { match /b/{bucket}/o { match /images/{imageId} { // Only allow uploads of any image file that's less than 5MB allow write: if request.resource.size < 5 * 1024 * 1024 && request.resource.contentType.matches('image/.*'); } } }
Próximos pasos
Comienza a planificar el desarrollo de reglas para tus buckets de Cloud Storage.
Obtén más información para proteger tus datos con reglas de seguridad.