¿Cómo proteger un bucket de S3 en AWS?
12 de julio de 2024
0 minutos de lecturaAmazon Web Services (AWS) Simple Storage Service (S3) se ha convertido en un pilar del almacenamiento en la nube. Ofrece escalabilidad, alta disponibilidad y rendimiento, lo que lo convierte en una opción preferida por empresas de todos los tamaños. Sin embargo, como ocurre con cualquier servicio en la nube, la seguridad es fundamental. Aquí es donde surge la pregunta: «¿cómo proteger un bucket de S3?».
Proteger tus buckets de S3 no consiste solo en evitar el acceso no autorizado a tus datos. También implica garantizar el cumplimiento de diversas normas y regulaciones de seguridad. Una sola configuración incorrecta de seguridad puede provocar filtraciones de datos, pérdidas económicas y daños a la reputación de tu empresa.
Proteger tus buckets de S3 en AWS es un paso esencial para la seguridad en la nube. En esta publicación, veremos pasos prácticos para garantizar que tus buckets de S3 estén protegidos y cumplan con las prácticas recomendadas. Abordaremos temas como las vulnerabilidades de los buckets de S3, las prácticas recomendadas de seguridad y cómo automatizar la seguridad de los buckets de S3 con Snyk.
Comprender las vulnerabilidades de los buckets de S3
Aunque ofrecen una solución de almacenamiento sólida y escalable, los buckets de S3 también pueden representar un riesgo de seguridad si no se configuran y supervisan correctamente. Veamos algunas vulnerabilidades comunes de los buckets de S3 y las posibles consecuencias de exponer uno.
Permisos de bucket mal configurados
Una de las vulnerabilidades más comunes de los buckets de S3 son los permisos mal configurados. Esto ocurre cuando un bucket de S3 queda expuesto al público por accidente, lo que permite que cualquiera acceda a los datos almacenados, los descargue e incluso los elimine.
Por ejemplo, una política de bucket que permite el acceso público podría verse así:
En la política anterior, el campo Principal está establecido en *, lo que significa «cualquiera», y el campo Action está establecido en s3:*, lo que significa «cualquier acción». Este es un claro ejemplo de permisos de bucket mal configurados.
Datos sin cifrar
Otra vulnerabilidad común es almacenar datos en buckets de S3 sin cifrado. Esto significa que, si un atacante obtiene acceso al bucket, puede leer fácilmente los datos. AWS ofrece opciones de cifrado del lado del servidor y del lado del cliente para ayudarte a proteger tus datos. Es importante garantizar que los datos confidenciales de tus buckets de S3 estén cifrados en reposo.
Snyk puede ayudarte a encontrar errores de configuración en la nube en Terraform y otros archivos de definición de nube compatibles. Por ejemplo, puede detectar un error de configuración en el que la política del bucket de S3 no deniega las solicitudes que usan HTTP:

Falta de registros y supervisión
Sin registros ni supervisión adecuados, puede ser difícil detectar el acceso no autorizado o los cambios en tus buckets de S3. AWS ofrece servicios como CloudTrail y CloudWatch para ayudarte, pero es necesario configurarlos correctamente y supervisarlos de forma activa. Sin estas medidas, es fácil pasar por alto indicios de una posible brecha de seguridad o de acceso no autorizado a los datos.
Prácticas recomendadas para la seguridad de los buckets de S3
Las consecuencias de exponer un bucket de S3 pueden ser graves. Según los datos almacenados, la exposición podría provocar filtraciones de datos, pérdida de propiedad intelectual, multas regulatorias y daños a la reputación de tu organización.
Para evitar estas vulnerabilidades y proteger tus buckets de S3, es importante seguir las prácticas recomendadas de seguridad, como cifrar los datos, configurar correctamente los permisos del bucket y establecer registros y supervisión. Herramientas como Snyk también pueden ayudar a identificar errores de configuración en la nube y orientarte para corregir las vulnerabilidades de seguridad en tu infraestructura.
Proteger tu bucket de S3 es un paso fundamental para garantizar la seguridad de tus datos. Aquí veremos las prácticas recomendadas para proteger un bucket de S3 en AWS.
Garantizar que los permisos del bucket sean adecuados
Al proteger un bucket de S3 en AWS, uno de los pasos más importantes es garantizar que sus permisos sean adecuados. Esto implica comprender y aplicar el principio de privilegio mínimo, usar eficazmente los roles de AWS Identity and Access Management (IAM) y utilizar políticas de bucket para restringir el acceso.
El principio de privilegio mínimo: explicación e implementación
El principio de privilegio mínimo (PoLP) es un concepto de seguridad informática según el cual un usuario recibe el nivel mínimo de acceso necesario para cumplir con sus funciones laborales. Aplicado a los buckets de AWS S3, significa otorgar solo los permisos necesarios a los usuarios, roles o servicios que necesitan acceder a tu bucket.
Este es un ejemplo de cómo proteger un bucket de S3 aplicando el PoLP con AWS IAM:
En esta política, solo permitimos que el usuario raíz de la cuenta especificada lea objetos de my_secure_bucket. No se otorgan otros permisos, de acuerdo con el principio de privilegio mínimo.
Comprender y usar eficazmente los roles de AWS Identity and Access Management (IAM)
Los roles de AWS IAM son una forma segura de otorgar permisos a entidades de confianza. En lugar de compartir credenciales de seguridad, puedes otorgar permisos a roles de IAM. Esta es una forma más segura y escalable de administrar permisos en AWS.
Este es un ejemplo de cómo proteger un bucket de S3 usando eficazmente los roles de IAM:
En esta política, otorgamos todos los permisos de S3 al rol de IAM my_secure_role para my_secure_bucket. De esta manera, podemos asignar este rol a cualquier entidad que necesite acceder al bucket sin compartir credenciales de seguridad.
Consejos para usar políticas de bucket y restringir el acceso
Las políticas de bucket son una herramienta eficaz para administrar el acceso a tus buckets de S3. Te permiten crear permisos y restricciones granulares que pueden ayudarte a proteger tu bucket de S3 de forma efectiva.
Aquí tienes algunos consejos para proteger un bucket de S3 mediante políticas de bucket:
Usa condiciones para restringir el acceso según la dirección IP.
Deniega explícitamente el acceso a operaciones confidenciales como
s3:DeleteObject.Usa el elemento
NotActionpara denegar todas las acciones, excepto las especificadas.
Para obtener análisis y recomendaciones más detallados sobre cómo proteger tus buckets de S3, crea una cuenta gratuita de Snyk. Snyk ofrece muchos recursos educativos y herramientas gratuitas para ayudarte a proteger tu infraestructura en la nube de forma efectiva.
Habilitar el cifrado predeterminado
Una de las formas más eficaces de garantizar la seguridad de tus buckets de S3 es habilitar el cifrado predeterminado. Desde 2023, los objetos almacenados en buckets de S3 se cifran automáticamente.
Así puedes hacerlo:
Ve a la consola de administración de AWS y abre la consola de Amazon S3.
En la lista de nombres de buckets, selecciona el bucket para el que quieres habilitar el cifrado predeterminado.
Selecciona la pestaña Properties.
En la sección Default encryption, selecciona Edit.
Selecciona Enable.
En la lista Encryption type, selecciona un método de cifrado.
Selecciona Save changes.
Otra opción es usar AWS CLI para habilitar el cifrado predeterminado:
El ejemplo de línea de comandos anterior muestra cómo habilitar el cifrado predeterminado mediante AWS CLI.
Elegir entre claves administradas por AWS (SSE-S3) y claves administradas por el cliente (SSE-KMS)
Para proteger un bucket de S3, tienes dos opciones principales de claves de cifrado: claves administradas por AWS (SSE-S3) y claves administradas por el cliente (SSE-KMS).
Las claves administradas por AWS (SSE-S3) son la opción más sencilla. Al usar SSE-S3, Amazon se encarga de administrar y proteger las claves. Es una buena opción si quieres evitar la complejidad de administrar tus propias claves de cifrado, como rotarlas, gestionar permisos y auditar su uso.
Por otro lado, las claves administradas por el cliente (SSE-KMS) te ofrecen más control y flexibilidad. Con SSE-KMS, puedes crear y administrar tus propias claves de cifrado y controlar las políticas que determinan cómo se pueden usar. Es una buena opción si tienes requisitos de cumplimiento específicos que te exigen administrar tus propias claves.
El ejemplo de línea de comandos anterior muestra cómo habilitar el cifrado predeterminado con una clave administrada por el cliente.
Usar políticas de transporte seguro
En la seguridad en la nube, una de las formas más eficaces de proteger los datos en tránsito es exigir el uso de HTTPS. HTTPS cifra los datos entre tu navegador y el servidor, lo que dificulta que alguien los intercepte y los vea. En este capítulo, nos centraremos en cómo proteger un bucket de S3 al exigir HTTPS para los datos en tránsito y configurar políticas de bucket que denieguen las solicitudes que no usan SSL.
Para exigir HTTPS en tu bucket de S3, tendrás que actualizar la política del bucket. Esta es una política de ejemplo que exige HTTPS:
En esta política, denegamos todas las acciones de S3 ("Action": "s3:*") cuando la solicitud no se realiza mediante HTTPS ("aws:SecureTransport": "false"). Reemplaza your-bucket-name por el nombre de tu bucket de S3.
Implementar registros de acceso y supervisión
Para comprender cómo proteger un bucket de S3, es fundamental implementar registros y supervisión sólidos. Esto te dará visibilidad sobre la actividad en tus buckets de S3 y te permitirá detectar posibles amenazas o brechas de seguridad. En esta sección, veremos cómo habilitar y configurar los registros de acceso de los buckets de S3, usar AWS CloudTrail para supervisar la actividad de la API y configurar alertas para actividades sospechosas con Amazon CloudWatch.
Es importante señalar que el cifrado de los buckets de S3 (como SSE-S3) aumenta los costos y no es gratuito.
Los registros de acceso son fundamentales para proteger un bucket de S3. Registran todas las solicitudes que se realizan a tu bucket de S3 y almacenan los registros en otro bucket de S3. Así puedes habilitarlos y configurarlos:
Ve a la consola de administración de AWS y abre la consola de Amazon S3.
En la lista de nombres de buckets, selecciona el bucket para el que quieres habilitar los registros.
Selecciona la pestaña Properties.
En la sección Logging, selecciona Edit.
En la sección Destination bucket for logs, ingresa el nombre del bucket donde quieres almacenar los registros.
(Opcional) En la sección Target prefix, puedes agregar un prefijo. Esto es útil si quieres almacenar registros de distintos buckets en el mismo bucket de destino.
Selecciona Save changes.
En el comando anterior, logging.json es un archivo con el siguiente contenido:
Usar AWS CloudTrail para supervisar la actividad de la API
AWS CloudTrail es un servicio que permite administrar la gobernanza, el cumplimiento y las auditorías operativas y de riesgos de tu cuenta de AWS. Proporciona el historial de eventos de la actividad de tu cuenta de AWS, incluidas las acciones realizadas desde la consola de administración de AWS, los SDK de AWS, las herramientas de línea de comandos y otros servicios de AWS.
Sigue estos pasos para habilitar CloudTrail en tu bucket de S3:
Abre la consola de CloudTrail.
Selecciona Trails y, luego, Create trail.
En Trail name, escribe un nombre para el registro.
Para aplicar el registro a todas las regiones, selecciona Yes y así te asegurarás de capturar eventos de todas las regiones.
En Management events, selecciona Read/Write events para elegir los eventos de administración que quieres registrar. Si quieres enfocarte únicamente en los eventos de datos, puedes omitir esta configuración o seleccionar None.
Configuración de eventos de datos:
Desplázate hacia abajo hasta la sección Data events.
Haz clic en Add S3 bucket. Especifica el bucket de S3 cuyos eventos de datos quieres registrar.
Puedes registrar todos los eventos de datos, solo los de lectura o solo los de escritura. Si quieres una supervisión integral, selecciona All.
Especifica el bucket de S3 donde quieres que se entreguen los registros de CloudTrail.
En S3 bucket, selecciona un bucket existente o crea uno nuevo para almacenar tus registros de CloudTrail.
Selecciona Create.
También puedes usar AWS CLI para crear un registro:
Configurar alertas para actividades sospechosas con Amazon CloudWatch
Amazon CloudWatch es un servicio de supervisión y observabilidad diseñado para ingenieros de DevOps, desarrolladores, ingenieros de confiabilidad del sitio (SRE) y gerentes de TI. CloudWatch te ofrece datos e información práctica para supervisar tus aplicaciones, comprender y responder a los cambios en el rendimiento de todo el sistema, optimizar el uso de recursos y obtener una vista unificada del estado operativo.
Para crear una alarma que envíe un mensaje de Amazon SNS cuando cambie de estado, puedes usar el comando put-metric-alarm de la siguiente manera:
Este comando configura una alarma para monitorear la cantidad de objetos en el bucket my-bucket. Si la cantidad de objetos supera los 1000 en un período de 5 minutos, se envía un mensaje de SNS.
Implementar estos pasos mejorará significativamente la seguridad de tus buckets de S3. Recuerda que proteger un bucket de S3 no es una tarea que se hace una sola vez, sino un proceso continuo que requiere monitoreo y actualizaciones periódicas. Si necesitas más ayuda para proteger tu infraestructura en la nube, considera usar Snyk IaC, una potente herramienta que te ayuda a encontrar y corregir vulnerabilidades de seguridad en tu infraestructura en la nube.
Auditorías periódicas de los buckets de S3
Auditar tus buckets de S3 con regularidad es otro paso importante para garantizar la seguridad de tus recursos de AWS. Este proceso implica usar herramientas y servicios específicos, además de revisar periódicamente los permisos de los buckets y su exposición pública.
Hay varias herramientas y servicios que pueden ayudarte a auditar tus buckets de S3. AWS ofrece algunos servicios integrados que puedes aprovechar para este propósito.
AWS Trusted Advisor: Esta herramienta ofrece orientación en tiempo real para ayudarte a aprovisionar tus recursos de acuerdo con las prácticas recomendadas de AWS. Las comprobaciones de Trusted Advisor ayudan a optimizar tu infraestructura de AWS, aumentar la seguridad y el rendimiento, reducir los costos generales y monitorear los límites de los servicios.
AWS Config: Este servicio ofrece una vista detallada de la configuración de los recursos de AWS en tu cuenta. Esto incluye cómo se relacionan los recursos entre sí y cómo se configuraron en el pasado, para que puedas ver cómo cambian las configuraciones y las relaciones con el tiempo.
Además de las herramientas integradas de AWS, herramientas como Snyk IaC pueden ofrecer verificaciones de seguridad adicionales y detectar errores de configuración en la nube.
Revisión periódica de los permisos de los buckets y su exposición pública
Revisar periódicamente los permisos de tus buckets de S3 es fundamental para saber cómo proteger un bucket de S3. Esto implica comprobar quién tiene acceso a tus buckets y qué nivel de acceso tiene.
También debes revisar la exposición pública de tus buckets. Los buckets de S3 se pueden configurar para permitir el acceso público, pero debes evitarlo a menos que sea absolutamente necesario.
Si necesitas permitir el acceso público, asegúrate de implementar medidas de seguridad adicionales, como políticas de bucket que permitan el acceso únicamente desde direcciones IP específicas.
Auditar y revisar periódicamente tus buckets de S3 es fundamental para mantener un entorno de AWS seguro. Si usas las herramientas y prácticas descritas en esta publicación, puedes asegurarte de que tus buckets de S3 estén protegidos y tus datos, a salvo.
Automatiza la seguridad de los buckets de S3 con Snyk
¿Quieres saber cómo proteger un bucket de S3 con Snyk IaC? Snyk ofrece una solución automatizada para detectar y corregir errores de configuración en los buckets de S3, lo que hace que tu entorno en la nube sea más seguro y resiliente.
Funciones de seguridad en la nube de Snyk
Las funciones de seguridad en la nube de Snyk ofrecen una solución integral para proteger tu entorno en la nube. Proporcionan monitoreo continuo de seguridad, identifican errores de configuración y ofrecen correcciones automatizadas. Esto convierte a Snyk en una herramienta ideal para los equipos de DevOps y seguridad que buscan automatizar sus procesos de seguridad en la nube.
Automatiza la detección y corrección de errores de configuración en los buckets de S3 con Snyk
Los errores de configuración en los buckets de S3 pueden provocar filtraciones de datos y accesos no autorizados. Snyk puede ayudar a automatizar la detección y corrección de estos errores. Al aprovechar Snyk Infrastructure as Code (IaC) y sus completas reglas de seguridad, las organizaciones pueden mejorar significativamente su nivel de seguridad con una intervención manual mínima.
Paso 1: Importa proyectos de IaC a Snyk
El primer paso es importar tus proyectos de Infrastructure as Code a Snyk. Así, Snyk puede analizar tus archivos de configuración de infraestructura, incluidos Terraform, los manifiestos de Kubernetes, AWS CloudFormation y otros, para detectar posibles problemas de seguridad.
Ve al panel de Snyk y selecciona Projects.
Haz clic en el menú desplegable Add projects y elige tu administrador de control de código fuente (SCM), como GitHub.
Selecciona los repositorios que contienen las configuraciones de tu infraestructura de AWS y agrégalos a Snyk para analizarlos.
Considera la siguiente definición de un bucket de S3 en un archivo Terraform v4 llamado s3.tf:
Si analizas este archivo con snyk iac test s3.tf, se informará una configuración de ACL permisiva a la que debes prestar atención para proteger el bucket de S3. De manera similar, la interfaz de usuario de Snyk mostrará los hallazgos si usas la aplicación de Snyk.
Snyk vuelve a analizar tus proyectos automáticamente una vez por semana para garantizar un monitoreo continuo de la seguridad.
Paso 2: Identifica y corrige los errores de configuración
Las capacidades de análisis de IaC de Snyk abarcan varios tipos de recursos de AWS, incluidos aws_s3_bucket y aws_s3_bucket_policy. Al analizar, Snyk identifica errores de configuración, como buckets de S3 sin cifrar o sin bloques adecuados de acceso público, y los informa junto con:
La gravedad de los problemas.
Un fragmento del código vulnerable.
Recomendaciones detalladas para corregirlos.
En los buckets de S3, Snyk puede detectar problemas como el acceso público habilitado, que podría provocar filtraciones de datos. Si sigues las recomendaciones de Snyk, podrás resolver estos problemas rápidamente.
Al consultar archivos de configuración de infraestructura como código importados desde SCM como GitHub o Bitbucket, Snyk te mostrará indicadores visuales de errores de configuración en la nube que podrían provocar una brecha de seguridad, como la siguiente configuración de un bucket de S3 que no restringe el control de acceso público.

Paso 3: Monitoreo y corrección continuos
Snyk no solo detecta problemas, sino que también te orienta para corregirlos, lo que reduce significativamente el tiempo y el esfuerzo necesarios. Gracias a las pruebas recurrentes de Snyk y su integración con tu pipeline de CI/CD, puedes proteger continuamente tu entorno de AWS contra errores de configuración.
Los equipos de seguridad también pueden ajustar la configuración de gravedad de los errores de configuración en la nube notificados, para adaptar las políticas de seguridad de infraestructura como código a las necesidades y al nivel de seguridad de su equipo:

Al integrar Snyk con tu entorno de AWS, adoptas un enfoque proactivo de seguridad y automatizas la detección, el monitoreo y la corrección de errores de configuración en tus buckets de S3 y otros recursos de AWS. Esta integración no solo refuerza tu seguridad, sino que también simplifica el cumplimiento y la gobernanza en toda tu infraestructura en la nube.
¿Qué sigue para la seguridad de los buckets de AWS S3?
Las medidas de seguridad que analizamos, como habilitar el control de versiones de los buckets, usar políticas de bucket y cifrar los datos, no son solo prácticas recomendadas: son pasos necesarios para proteger tus datos. Implementarlas puede reducir significativamente el riesgo de acceso no autorizado a tus buckets de S3.
Para concluir nuestra conversación sobre cómo proteger un bucket de S3, es importante recordar que la seguridad es un proceso continuo. El panorama de la seguridad en la nube cambia constantemente, por lo que es fundamental mantenerse al día. Para seguir protegiendo tus buckets de AWS S3, aquí tienes algunos recursos adicionales que podrían serte útiles:
Lección de Snyk Learn sobre vulnerabilidades SSRF: La falsificación de solicitudes del lado del servidor (SSRF) es una vulnerabilidad de seguridad común que puede afectar tu infraestructura en la nube. Entender cómo funcionan las vulnerabilidades SSRF puede ayudarte a proteger mejor tus buckets de S3. La lección de Snyk Learn sobre vulnerabilidades SSRF ofrece una visión completa de este tema.
Documentación de AWS sobre la seguridad de los buckets de S3: AWS ofrece documentación extensa sobre cómo proteger un bucket de S3. Incluye prácticas recomendadas, tutoriales y explicaciones detalladas de las funciones de seguridad. Es un recurso valioso para quienes buscan mejorar la seguridad de sus buckets de S3.
Proteger tus buckets de S3 no tiene por qué ser una tarea abrumadora. Herramientas como Snyk pueden ayudarte a proteger tus buckets de S3 y a mantener la seguridad de tus aplicaciones. No esperes a que sea demasiado tarde: empieza hoy mismo. Recuerda que la mejor defensa es una buena ofensiva. En el mundo de la seguridad en la nube, eso significa proteger tus buckets de S3 de forma proactiva, antes de que se conviertan en un objetivo.
