Hola.
Cada vez está más extendido el uso de repositorios objeto. Y últimamente me preguntan sobre el IAM en conversaciones sobre almacenamiento objeto S3.
Como tiene que ver con la seguridad, he pensado que puede ser util poner aqui aquí unos conceptos generales. Es un tema muyyyy amplio, voy a resumir un par de pinceladas
- Que es S3 (Simple Storage Service): es un protocolo objeto creado por AWS. En la práctica se ha convertido en la API mas extendida para almacenamiento objeto, casi un estandar. Cuando en Veeam se habla de repositorio objeto la mayor parte de las veces será un entorno que “hable” S3 con Veeam.
- Qué es el IAM (Identity Access Manager): es otro protocolo creado por AWS para gestionar la autentificación y manejo de credenciales a sus servicios en la nube; uno de estos servicios es el S3, asi que en la práctica es el protocolo con el que se intercambian las credenciales de acceso entre Veeam y un repositorio S3… o así debería ser.
Los que hayáis usado S3 alguna vez os sonará la dupla “accces key/secret access key” necesaria para acceder a un bucket, y que no se intercambian usuarios sino que se adjuntan políticas de seguridad a diferentes niveles. Y ya en nivel mas avanzado están funcionalidades como STS (Security Token Service) que consiste en el intercambio de tokens temporales hacia agentes de Veeam separados del servidor para evitar que las credenciales viajen por la red. Es a todos los niveles un sistema encaminado, en resumen, a garantizar seguridad en los intercambios entre Veeam y el repositorio de almacenamiento.
Como decía en otro post, incluso podemos perder el servidor Veeam en manos de un atacante; pero si el repositorio esta a salvo, saldremos de esta. Si hemos elegido un repositorio con un nivel de serguridad solamente análogo al servidor de Veeam, no hemos hecho lo suficiente.
¿Porqué es esto importante? Un repositorio objeto que no asegure correctamente las credenciales no es seguro. Gestionar las claves de acceso no es algo que se deba tomar a la ligera, por eso AWS creó precisamente el IAM, que es un sistema muy sólido y que permite implantar las mejores prácticas de seguridad.
La sorpresa es que no todos los almacenamientos objeto han implementado IAM para gestionar las claves, sino que solamente aparentan comportarse igual, pero gestionan las claves como si fueran duplas usuario/password; hay detalles que denotan rápido esas debilidades (por ejemplo, una clave secreta NUNCA puede visualizarse tras su creación inicial, por eso es “secret”; si hay manera de ver las claves secretas, ese sistema es susceptible de caer en manos de un suplantador del administrador; no soportar STS es otro mal síntoma, no poder filtrar el origen de las peticiones de datos por IPs o dominios para evitar suplantaciones...).
El motivo de estas carencias imagino que es el de siempre; desarrollar un sistema seguro de credenciales IAM requiere muchas, muchas horas de desarrollo y testing y, total, el cliente busca algo barato y “no lo va a notar”… hasta que se nota cuando no hay remedio.
Un saludo!