10 consejos para asegurar los datos alojados en Amazon S3

El uso de Amazon Simple Storage Service S3 está cada vez más extendido, utilizándose en multitud de casos de uso: repositorios de datos sensibles, almacenamiento de logs de seguridad, integración con herramientas de backups…, por lo que debemos tener especial atención en la forma en la que configuramos nuestros buckets y como los exponemos a internet.

En este post hablaremos sobre 10 buenas prácticas de seguridad que nos permitirán gestionar de una forma correcta nuestros buckets S3.

Empecemos.

1 – Bloquea el acceso público a los buckets de S3 en toda la organización

Por defecto los buckets son privados y únicamente pueden ser utilizados por los propios usuarios de nuestra cuenta, siempre que tengan establecido correctamente los permisos para ello.

Adicionalmente, los buckets tienen una opción “S3 Block Public Access” que impide que los buckets puedan ser considerados públicos. Esta opción se puede activar o desactivar en cada bucket de la AWS Account. Para prevenir que un usuario pueda desactivar dicha opción, podemos crear una política SCP en nuestra organización para que ninguna AWS Account miembro de la organización pueda hacerlo.

2- Verifica que no se usen wildcards en los principals de políticas allow

Todas las políticas de seguridad deben regirse por el principio de mínimo privilegio (least privilege). Para ello, evitaremos el uso de wildcards “*” a la hora de establecer permisos, y cada vez que queramos establecer un permiso a un bucket, especificaremos que “principal” debe acceder a dicho recurso. Puede ser un rango de direcciones IP, una AWS Account, una VPC… pero nunca se usará un wildcard.

3– Verifica que no se usen wildcards en las actions de políticas allow

Siguiendo el principio de mínimo privilegio comprobaremos que las políticas allow estén descritas correctamente con las “actions” que debe ejecutar la identidad a la que otorgamos acceso. Por ejemplo, usaremos S3:GetObject o S3:PutObject pero evitaremos el uso de S3:* donde se permitan todas las acciones.

4– Activa GuardDuty para detectar actividades sospechosas en los buckets de S3

El servicio GuardDuty monitoriza en tiempo real nuestros buckets en busca posibles incidentes de seguridad. Nos permite detectar peticiones de orígenes inusuales, patrones extraños de llamadas a las API que intenten descubrir buckets mal configurados…

GuardDuty genera alertas para poder avisar al equipo de seguridad y así automatizar una solución ante incidentes de seguridad.

5– Utiliza Amazon Macie para detectar contenido sensible

Macie utiliza inteligencia artificial para detectar contenido sensible entre nuestros buckets. Activando Macie a nivel de la organización podemos obtener una consola centralizada donde evaluar nuestros datos alertando en caso de que estos sean públicos, no se encuentren cifrados o hayan sido compartidos fuera de nuestra organización.

6– Cifra tus datos

Es de vital importancia que nuestros datos estén cifrados en reposo. Amazon S3 proporciona cuatro métodos para cifrar nuestros datos:

  • SSE-S3 hace uso de claves criptográficas manejadas por Amazon.
  • SSE-KMS utiliza el servicio KMS para el cifrado/descifrado de nuestros datos, lo cual nos permite establecer permisos sobre quien puede utilizar las claves de cifrados, escribir en logs cada acción realizada y utilizar nuestras propias claves o las de Amazon.
  • SSE-C, con el que debemos almacenar y gestionar nuestras propias claves.
  • Por último, podemos utilizar “client-side encryption” para cifrar y descifrar nosotros mismos nuestros datos antes de subirlos o descargarlos a S3

7- Protege tus datos de borrados accidentales

Amazon proporciona una durabilidad del 99.999999999%  de nuestros objetos en caso del almacenamiento estándar, el cual se almacena en al menos 3 zonas de disponibilidad diferentes.

Esto no impide que un borrado accidental pueda hacer que tus datos desaparezcan, y tenemos diferentes opciones para evitar esto:

  • El Versionado de objeto: permite añadir una marca de borrado pero no eliminar o sobrescribir definitivamente el objeto. Nos permitirá recuperar de forma rápida cada versión previa del objeto
  • MFA delete exige añadir un segundo método de autenticación en caso de borrado definitivo de una versión.
  • S3 Object lock activa el modelo WORM (write-once-read-many), de modo que el objeto estará protegido contra escritura, imposibilitando el borrado o su sobreescritura.

8- Activa los logs de acceso a S3

AWS S3 se integra con Cloudtrail. Cada llamada a la API de S3 podrá ser logada e integrada con CloudWatch para futuros análisis. Cloudtrail se puede activar globalmente para toda la organización, por lo que es recomendable que nuestros buckets críticos tengan activa dicha integración.

9- Haz copia de seguridad de tus datos de S3

Mantén como mínimo una copia de seguridad de tus datos críticos en más de un destino.

AWS proporciona la funcionalidad Cross Región Replication CRR donde podemos replicar completamente un bucket a otra región. En caso de borrado de un objeto en el bucket origen, mantendremos el objeto en el bucket destino.

10- Monitoriza S3 usando Security Hub

Security Hub nos proporciona una consola global donde ver el estado de nuestras cuentas de AWS.

Podemos cargar un paquete de reglas de cumplimiento que nos ayuden a asegurar que nuestros recursos cumplen un conjunto de configuraciones basadas en buenas prácticas. El servicio S3 se beneficia de ellas permitiendo evaluar si nuestros buckets tienen activo “deny public access”, cifrado en reposo, cifrado en tránsito…

Conclusiones

Como hemos visto, con estos consejos podemos construir una estrategia robusta de seguridad en nuestros buckets manteniendo la información protegida y controlada frente accesos no autorizados, cifrando nuestros datos, logando cada actividad que se lleva a cabo en ellos y disponiendo de una copia de seguridad frente a desastres.

AWS nos proporciona un gran número de posibilidades y herramientas para poder ayudarnos a ello, por lo que debemos conocer todas las posibilidades que nos aportan y cómo se deben configurar correctamente.

Ver también en:

Comments

  1. Dependiendo del caso si es posible también puede ser muy conveniente limitar el acceso desde IPs confiables, de esta manera si por alguna razón las credenciales se vieran comprometidas aún tendriamos la capa de red que nos protegería