Ir a la consola

Comprender las reglas de seguridad de Firebase para Cloud Storage

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 programadores 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 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 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 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 tiene el valor null. Esto permite que controles en forma segura el acceso a los datos de cada usuario. Para obtener más información, consulta la sección sobre la seguridad del usuario.

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, que se alojan en nuestros servidores, además de determinar el acceso a los archivos en tu app. Por ejemplo, las reglas de seguridad de Storage predeterminadas 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/.*');
    }
  }
}

Ahora que conoces los conceptos básicos de lo que pueden hacer las reglas de seguridad de Storage, puedes dar tus primeros pasos.