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 autenticar tus usuarios, Firebase Security Rules para Cloud Storage facilita la autorización de usuarios y validar solicitudes. Cloud Storage Security Rules administra la complejidad por ti permitiéndote 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, llamada Firebase Realtime Database Security Rules.
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. Firebase Security Rules para Cloud Storage se vincula a Firebase Authentication para brindar seguridad basada en el usuario. Cuando un usuario se autentica con Firebase Authentication, la variable request.auth
en Cloud Storage Security Rules se convierte en un objeto que contiene el ID único del usuario (request.auth.uid
) y la información del resto de usuarios en el token (request.auth.token
). Cuando el usuario no es autenticado, 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, además de determinar el acceso a los archivos en tu app. Por ejemplo, las Cloud Storage Security Rules predeterminadas requieren Firebase Authentication para realizar cualquier operación read
o write
en 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 la consola de Firebase y consultar la pestaña Rules
de la sección Storage.
Validación de datos
Firebase Security Rules para Cloud Storage también se puede usar para la validación de datos, lo que incluye validar el nombre y la ruta del archivo, así como las propiedades de los metadatos del 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.