Boletín AWS Open Source, June Edition
Tags: opensource, cybersecurity, developers, awsespanol
Published: 2024-06-26 06:30:00

Bienvenidos a una nueva edición del boletín de AWS Open Source. Con el verano a la vuelta de la esquina, muchos podréis disfrutar de unas merecidas vacaciones, y es el momento perfecto para conocer nuevas herramientas y soluciones. 

En esta edición, exploraremos herramientas de pentesting específicas para AWS. Aprenderemos a asegurar nuestra infraestructura utilizando Infraestructura como Código (IaC). Además, conoceremos la locura de Álvaro Hernández, nuestro AWS Hero, con Dyna53. Introduciremos dos nuevas herramientas desarrolladas en Rust: una para la gestión de buckets en S3 y otra que resume y extrae detalles importantes de nuestras reuniones diarias. Por último, las últimas novedades en IA generativa.

Esperamos que disfrutéis la recopilación!

## Tools

**[Sustainability Scanner](https://github.com/awslabs/sustainability-scanner)**

El Sustainability Scanner es una herramienta de código abierto diseñada para ayudar a los clientes a crear una infraestructura más sostenible en AWS mediante la evaluación de su infraestructura como código (IaC) frente a un conjunto de mejores prácticas de sostenibilidad y sugerencias de mejoras para aplicar a su código. 

![Sustainability Scanner](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v92ewxclkjxww5dxl82b.png)

**[containers-cost-allocation-dashboard](containers-cost-allocation-dashboard)**
containers-cost-allocation-dashboard proporciona todo lo necesario para crear un panel QuickSight para la asignación de costos de contenedores basado en datos de Kubecost. El panel te ofrece los costos y el uso de EKS dentro del clúster en un entorno multi-clúster, utilizando datos de un pod Kubecost autohospedado. El README contiene enlaces adicionales a recursos que te ayudarán a comprender cómo funciona esto, las dependencias y cómo implementar y configurar este proyecto.

![container-cost-allocation-dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rqse2lu887dgtjovz5pc.png)

**[cloudfront-hosting-toolkit](https://aws-oss.beachgeek.co.uk/3xv)**

cloudfront-hosting-toolkit es una CLI diseñada para ayudarte a desplegar frontends de forma rápida y segura. Esta herramienta te simplifica la interacción con la plataforma AWS para desplegar sitios web estáticos. Te guía a través de la configuración de un nuevo repositorio, la ejecución del proceso de despliegue y proporciona el nombre de dominio al finalizar. Al seguir estos pasos, vinculas fácilmente tu repositorio de GitHub y despliegas la infraestructura necesaria, simplificando el proceso de despliegue. Puedes obtener más información leyendo la entrada del blog,[Introducing CloudFront Hosting Toolkit](https://aws-oss.beachgeek.co.uk/3xw), donde Achraf Souk, Corneliu Croitoru y Cristian Graziano te ayudan con una guía práctica sobre este proyecto.

![cloudfront-hosting-toolkit](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y6wvdbvx1ldy7erljyqj.png)

**[terraform-aws-alternat](https://aws-oss.beachgeek.co.uk/3xx)** 
terraform-aws-alternat simplifica cómo puedes desplegar instancias NAT en alta disponibilidad, lo que puede ayudarte a reducir tus costos si necesitas proporcionar acceso a Internet dentro de tu VPC. Vale la pena revisar el README que proporciona detalles y comparaciones sobre el uso de este enfoque frente a los NAT Gateways.

![terraform-aws-alternat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8n60b3k3sj0nsuzcug41.png)



## Demos, Soluciones y Workshops

**[Dyna53](https://dyna53.io/)**
Dyna53 es una solución open-source creada por nuestro AWS Hero, Álvaro Hernández, que te permite implementar en tu cuenta de AWS una base de datos NoSQL de clave-valor que es escalable automáticamente. Expone la API de Dynamo, pero almacena datos en una zona de tu elección en Route53. Esta locura surgió de un comentario en redes sociales de Corey Quin, un influencer en el mundo cloud que rara vez deja pasar la oportunidad de examinar, analizar, explicar, burlarse y defender AWS, que de forma sarcástica dijo que Route 53 es la "Base de Datos Principal de Amazon". Pues bien, deseo concedido. Dyna53 es aquello con lo que Corey soñó alguna vez. 


![Dyna53](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t0tluc3w49uvfjj2kl0c.png)

**[create-and-delete-ngw ](https://aws-oss.beachgeek.co.uk/3x2)**
Este proyecto contiene el código fuente y archivos de soporte para una aplicación serverless que asigna una dirección IP elástica, crea un Gateway NAT y agrega una ruta al Gateway NAT en una tabla de rutas VPC. La aplicación también elimina el Gateway NAT y libera la dirección IP elástica. El proceso para crear y eliminar un Gateway NAT está orquestado por una Máquina de Estados de AWS Step Functions, activada por un programador de EventBridge. La programación puede definirse mediante parámetros durante el proceso de implementación de SAM.

![create-and-delete-ngw](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1n3rr9jcbxuc9s7b6pz.png)

**[real-time-social-media-analytics-with-generative-ai](https://aws-oss.beachgeek.co.uk/3x5)**
Aquí os presentamos una solución para el análisis de redes sociales en tiempo real con IA generativa. Este repositorio te ayuda a construir e implementar una arquitectura AWS que puede combinar datos con GenAI utilizando el Servicio Administrado de Amazon para Apache Flink y Amazon Bedrock.

![real-time-social-media-analytics-with-generative-ai](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uq28yjsj19pu7l8v8mgt.png)

### Cloud Native

**[StackGres](https://stackgres.io/)**
Volvemos con nuestro Hero, Álvaro Hernández, que nos trae Stackgres, una distribución de PostgreSQL para Kubernetes. Se trata de un stack que trae todo lo necesario para tener una implementación completa. No se trata solo de Postgres, sino que además tendréis disponible el agrupamiento de conexiones, conmutación por error y alta disponibilidad automáticas, monitoreo, copias de seguridad y recuperación ante desastres, y el registro centralizado...todo en uno. 

![Stackgres](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zemh7or0iszsz5wutf3t.png)


###IA Generativa

Mi compañero Dennis Traub nos trae un tutorial para aprender de manera práctica **[cómo utilizar la nueva API de Converse de Amazon Bedrock](https://community.aws/content/2dtauBCeDa703x7fDS9Q30MJoBA/amazon-bedrock-converse-api-developer-guide)** para interactuar con modelos de inteligencia artificial generativa en Amazon Bedrock, utilizando el AWS SDK para JavaScript.

![API de Converse de Amazon BedRock](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjuutwyeeykm43mai5p5.png)

**[serverless-genai-food-analyzer-app](https://aws-oss.beachgeek.co.uk/3x6)**

Muchas veces nos preguntáis por el código de las demos que mostramos en nuestros AWS Summits. Pues bien, aquí tenéis esta aplicación que analiza los alimentos usando IA generativa y serverless. Fue la ganadora del AWS Hackathon France 2024 y se presentó como demo en el AWS Summit Paris y de Madrid 2024 (Foodlens). Con Foodlens, simplemente escaneas un código de barras de un producto y obtienes explicaciones de los ingredientes e información nutricional que puedes personalizar con tus alergias o si estás siguiendo una dieta, introducir tus requerimientos. También puedes tomar una foto de los productos y recibir recetas personalizadas basadas en tus preferencias alimenticias. ¿Qué os parece?

**[amazon-bedrock-serverless-prompt-chaining](https://aws-oss.beachgeek.co.uk/3xz)**

Este repositorio proporciona ejemplos de cómo usar AWS Step Functions y Amazon Bedrock para construir aplicaciones de IA generativa complejas, serverless y altamente escalables, utilizando el encadenamiento de prompts. Con el encadenamiento de prompts, puedes construir un conjunto de subtareas más pequeñas (prompts individuales). Juntas, estas subtareas conforman tu tarea compleja que deseas que el LLM complete para tu aplicación. Para lograr la tarea general, tu aplicación alimenta cada prompt de subtask al LLM en un orden predefinido o según un conjunto de reglas definidas. Hay muchos ejemplos en el README, así que échale un vistazo para aprender más sobre el encadenamiento de prompts y cómo puedes hacerlo al estilo sin servidor.

## Security

Este mes os traemos a petición de los lectores, herramientas de pentesting en AWS para validar y verificar la seguridad de vuestros servicios. 

**Disclaimer:** Como siempre, lo que os compartimos a continuación debe usarse de manera ética y con el consentimiento de vuestro cliente o empresa. No nos hacemos responsables del uso indebido que se pueda derivar de esta información.

A continuación os mostramos cinco herramientas populares para probar la seguridad en AWS.

[**Pacu**](https://github.com/RhinoSecurityLabs/pacu) es una herramienta de código abierto diseñado para pruebas de seguridad ofensiva. Permite a los testers simular escenarios de ataque en entornos de AWS para identificar debilidades de seguridad.

**Características:**

- **Diseño Modular:** Pacu tiene una arquitectura modular, permitiendo a los usuarios cargar módulos específicos para tareas como enumeración, escalada de privilegios y explotación.

- **Automatización:** Automatiza muchas de las tareas tediosas asociadas con las pruebas de penetración en AWS.

- **Gestión de Credenciales:** Maneja múltiples credenciales de AWS, facilitando el cambio entre diferentes cuentas.

- **Módulos Personalizados:** Los usuarios pueden desarrollar e integrar módulos personalizados para extender la funcionalidad de Pacu.

**Capacidades Clave:**
- **Enum IAM:** Enumera usuarios, roles, políticas y grupos de IAM.
- **Buckets S3:** Identifica buckets S3 mal configurados e intenta acceder a su contenido.
- **Escalada de Privilegios:** Identifica posibles rutas de escalada de privilegios dentro del entorno de AWS.
- **Backdoor Lambda:** Despliega un backdoor en funciones de AWS Lambda.

**Instalación:**
```bash
pip3 install -U pacu
```

**Uso:**
Para iniciar Pacu y crear una nueva sesión:
```bash
pacu
```

![pacu-ciberseguridad-oss](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9cvyumkhkns3544853z8.png)

[**ScoutSuite**](https://github.com/nccgroup/ScoutSuite) es una herramienta de auditoría de seguridad multi-nube de código abierto que funciona con AWS, Azure y GCP. Proporciona una vista completa de la postura de seguridad de los entornos en la nube utilizando las APIs de los servicios en la nube.

**Características:**
- **Soporte Multi-Nube:** Compatible con AWS, Azure y GCP, haciéndola versátil para entornos multi-nube.
- **Informes Detallados:** Genera informes en HTML que proporcionan un análisis en profundidad de la configuración de seguridad.
- **Sin Agentes:** No requiere la instalación de agentes dentro del entorno de la nube.

**Capacidades Clave:**
- **Análisis de IAM:** Evalúa las configuraciones de IAM, identificando roles y políticas excesivamente permisivos.
- **Servicios de Almacenamiento:** Evalúa la seguridad de los buckets S3, asegurando que no sean accesibles públicamente.
- **Configuración de Red:** Revisa las reglas de grupos de seguridad y configuraciones de VPC para identificar posibles errores de configuración.
- **Registro y Monitoreo:** Verifica la configuración de CloudTrail y CloudWatch para asegurar el registro y monitoreo adecuados.

**Instalación:**
```bash
pip3 install scoutsuite
```

**Uso:**
Para ejecutar ScoutSuite y generar un informe:
```bash
aws --profile <profile-name> configure
scout aws --profile <profile-name> -f
```
Ejemplo para EC2:

![scoutsuite ec2 dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/li1jyodte8caf98uhtx4.png)

[**PMapper**](https://github.com/nccgroup/PMapper) te ayuda a entender quién tiene permiso para hacer qué en AWS, usando gráficos y simulaciones. Es como un mapa que te muestra las relaciones y permisos entre usuarios y roles.

**Características:**
- **Análisis Basado en Gráficos:** Utiliza un enfoque basado en gráficos para mapear entidades de IAM y sus permisos.
- **Visualizaciones:** Proporciona representaciones visuales de las relaciones y permisos de IAM, facilitando la identificación de problemas de seguridad.
- **Simulación de Políticas:** Simula evaluaciones de políticas de IAM para entender el impacto de políticas específicas en los permisos.
- **Lenguaje de Consulta:** Permite a los usuarios consultar el gráfico de IAM para encontrar relaciones o configuraciones incorrectas.

**Capacidades Clave:**
- **Construcción de Gráficos de IAM:** Construye un gráfico de entidades de IAM y sus relaciones basado en las políticas de IAM de la cuenta de AWS.
- **Identificación de Riesgos:** Identifica permisos de alto riesgo y posibles rutas de escalada de privilegios.
- **Consultas Interactivas:** Los usuarios pueden consultar de manera interactiva el gráfico de IAM para explorar permisos y relaciones específicas.
- **Permisos Efectivos:** Determina los permisos efectivos de usuarios y roles simulando evaluaciones de políticas.

**Instalación:**
```bash
git clone https://github.com/nccgroup/PMapper.git
cd PMapper
pip install .
```

**Uso:**
Para crear un gráfico de permisos de IAM:
```bash
pmapper --profile <profile-name> graph create
```
Aquí tenéis un ejemplo de visualización:

![PMapper ejemplo visualización](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtetooalrurut94p6jc8.png)

[**Enumerate-IAM** ](https://github.com/andresriancho/enumerate-iam)detalla los usuarios, roles y políticas en AWS, ayudando a identificar permisos excesivos o configuraciones incorrectas. Es como una lista completa de quién puede hacer qué y con qué permisos.

**Características:**
- **Enumeración Detallada:** Proporciona información completa sobre las entidades de IAM y sus permisos.
- **Análisis de Políticas:** Analiza las políticas de IAM para identificar aquellas excesivamente permisivas o mal configuradas.
- **Salida en JSON:** Genera resultados en formato JSON, facilitando la integración con otras herramientas o procesos.

**Capacidades Clave:**
- **Enumeración de Usuarios y Roles:** Lista todos los usuarios y roles de IAM dentro de una cuenta de AWS.
- **Extracción de Políticas:** Extrae y analiza políticas inline y gestionadas.
- **Enumeración de Grupos:** Lista todos los grupos de IAM y sus usuarios y políticas asociados.
- **Permisos Efectivos:** Determina los permisos efectivos de los usuarios y roles de IAM.

**Instalación:**
```bash
git clone https://github.com/andresriancho/enumerate-iam.git
cd enumerate-iam
pip install -r requirements.txt
```
**Uso:**
Para ejecutar Enumerate-IAM y realizar una enumeración básica:
```bash
python enumerate-iam.py -h
python enumerate-iam.py --access-key <key-here> --secret-key <secret-here>
```
Ejemplo:

```
$ ./enumerate-iam.py --access-key AKIA... --secret-key StF0q...
2019-05-10 15:57:58,447 - 21345 - [INFO] Starting permission enumeration for access-key-id "AKIA..."
2019-05-10 15:58:01,532 - 21345 - [INFO] Run for the hills, get_account_authorization_details worked!
2019-05-10 15:58:01,537 - 21345 - [INFO] -- {
    "RoleDetailList": [
        {
            "Tags": [], 
            "AssumeRolePolicyDocument": {
                "Version": "2008-10-17", 
                "Statement": [
                    {
...
2019-05-10 15:58:26,709 - 21345 - [INFO] -- gamelift.list_builds() worked!
2019-05-10 15:58:26,850 - 21345 - [INFO] -- cloudformation.list_stack_sets() worked!
2019-05-10 15:58:26,982 - 21345 - [INFO] -- directconnect.describe_locations() worked!
2019-05-10 15:58:27,021 - 21345 - [INFO] -- gamelift.describe_matchmaking_rule_sets() worked!
2019-05-10 15:58:27,311 - 21345 - [INFO] -- sqs.list_queues() worked!
```

[**Prowler**](https://github.com/prowler-cloud/prowler)

Prowler es una herramienta de seguridad de código abierto diseñada para auditar y asegurar entornos de AWS. Se enfoca en verificar la conformidad con varios estándares y mejores prácticas de seguridad. 

**Características:**
- **Auditorías de Seguridad:** Realiza auditorías exhaustivas para identificar configuraciones incorrectas y vulnerabilidades en las cuentas de AWS.
- **Cumplimiento Normativo:** Proporciona verificaciones para cumplir con estándares de seguridad como CIS AWS Foundations Benchmark, GDPR, HIPAA, ISO 27001, y SOC 2.
- **Reportes Detallados:** Genera informes detallados en formato HTML y JSON que resumen los hallazgos y recomendaciones.
- **Modularidad:** Prowler es altamente modular, permitiendo a los usuarios ejecutar controles específicos basados en sus necesidades y requisitos de cumplimiento.
- **Automatización:** Facilita la automatización de auditorías de seguridad, permitiendo integrarse fácilmente en flujos de trabajo de DevOps y CI/CD.

**Capacidades Clave:**
- **Verificación de Configuraciones:** Revisa configuraciones de IAM, S3, CloudTrail, VPC, y otros servicios de AWS para asegurar que cumplen con las mejores prácticas.
- **Detección de Vulnerabilidades:** Identifica configuraciones débiles que podrían ser explotadas por atacantes.
- **Integración con SIEM:** Los resultados de Prowler pueden integrarse con sistemas de gestión de eventos e información de seguridad (SIEM) para un análisis y respuesta más detallados.
- **Soporte Multi-Account:** Puede auditar múltiples cuentas de AWS desde una única ejecución, facilitando la gestión de entornos grandes.

**Instalación:**
```bash
git clone https://github.com/prowler-cloud/prowler
cd prowler
./prowler
```

**Uso:**
Para ejecutar una auditoría básica y generar un informe en HTML, usa el siguiente comando:
```bash
./prowler -M html
```
Comando: 

```
prowler aws --service iam accessanalyzer \
 --ignore-unused-services
 
                          _
 _ __  _ __ _____      _| | ___ _ __
| '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|
| |_) | | | (_) \ V  V /| |  __/ |
| .__/|_|  \___/ \_/\_/ |_|\___|_|v3.13.0
|_| the handy cloud security tool

Date: 2024-02-13 11:45:13


This report is being generated using credentials below:

AWS-CLI Profile: [default] AWS Filter Region: [all]
AWS Account: [552455647653] UserId: [AROAYBIHMGGS6YI4ZXZD5:demo@prowler.com]
Caller Identity ARN: [arn:aws:sts::552455647653:assumed-role/AWSReservedSSO_ProwlerRole_2ad14f771534c04a/demo@prowler.com]

Executing 38 checks, please wait...

-> Scan completed! |▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉| 38/38 [100%] in 30.3s

Overview Results:
╭────────────────────┬────────────────────╮
│ 44.79% (43) Failed │ 55.21% (53) Passed │
╰────────────────────┴────────────────────╯

Account 552455647653 Scan Results (severity columns are for fails only):
╭────────────┬────────────────┬───────────┬────────────┬────────┬──────────┬───────╮
│ Provider   │ Service        │ Status    │   Critical │   High │   Medium │   Low │
├────────────┼────────────────┼───────────┼────────────┼────────┼──────────┼───────┤
│ aws        │ accessanalyzer │ FAIL (19) │          0 │      0 │        0 │    19 │
├────────────┼────────────────┼───────────┼────────────┼────────┼──────────┼───────┤
│ aws        │ iam            │ FAIL (24) │          2 │     15 │        7 │     0 │
╰────────────┴────────────────┴───────────┴────────────┴────────┴──────────┴───────╯
* You only see here those services that contains resources.

Detailed results are in:
 - HTML: /Users/toni/output/prowler-output-552455647653-20240213114513.html
 - JSON-OCSF: /Users/toni/output/prowler-output-552455647653-20240213114513.ocsf.json
 - CSV: /Users/toni/output/prowler-output-552455647653-20240213114513.csv
 - JSON: /Users/toni/output/prowler-output-552455647653-20240213114513.json
 

To see findings detail browse any of those files, for quick review, see the html one.
```
Si queréis ver cómo se puede detectar y evitar el 90% de los ataques en la nube os recomendamos el siguiente [blog](https://dev.to/aws-espanol/detectando-y-evitando-el-90-de-los-ataques-en-la-nube-con-herramientas-open-source-359j).

Todas estas herramientas son importantes para mantener la seguridad en AWS y asegurarse de que todo esté bien protegido. Combinadas con servicios existentes como Security Hub, GuardDuty, y otros, disponéis de un stack robusto para asegurar vuestros entornos.

## Vídeos del Mes

**Usando Amazon Q Developer para escribir código para Observabilidad**

Ricardo Ferreira nos muestra en este vídeo cómo puedes utilizar herramientas como Amazon Q Developer para ayudarte a integrar OpenTelemetry en tus aplicaciones. En este video, Ricardo muestra cómo utilizar Amazon Q Developer para instrumentar un microservicio escrito en Go para OpenTelemetry.

{% embed https://youtu.be/xcyvHPVUrtI %}

**Desplegando projen-pipelines en público - Desarrollo de Open source en la práctica**

El AWS Hero Johannes Koch, junto con el también AWS Hero Thorsten Höger y el AWS Community Builder Raphael Manke, examinan la implementación de projen pipelines, un nuevo proyecto que Thorsten y Johannes empezaron recientemente y que permite a los desarrolladores cambiar fácilmente entre diferentes sistemas CI/CD.

{% embed https://youtu.be/5o2-aEo-h-k %}

## El Mundo de Rust

Mi compañero Darko Mesaros nos trae una nueva herramienta, **[Shuk](https://github.com/darko-mesaros/shuk)**, escrita en Rust y que te permite cargar archivos de cualquier tamaño en Amazon S3 y compartirlos con otros mediante una URL pre-signed. Lo más interesante es que soporta multipart uploads.

![Shuk, herramienta para subir ficheros a S3 y compartirlo con una URL pre-signed. Escrito en Rust](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k0sfjv4rfozoqmu62oz1.png)

Dr. Werner Vogels nos presenta una CLI sencilla en Rust llamada **[Distill](https://github.com/awslabs/distill-cli)**, que resume y extrae detalles importantes de nuestras reuniones diarias. Después de compilar desde el código fuente, simplemente pasa el archivo multimedia a Distill CLI y selecciona el bucket de S3 donde deseas almacenar el archivo. Hoy en día, Distill admite la salida de resúmenes como documentos de Word, archivos de texto e impresión directa en la terminal (de forma predeterminada). Encontrarás que es fácilmente extensible: mi equipo (OCTO) ya lo está utilizando para exportar resúmenes de nuestras reuniones de equipo directamente a Slack (y trabajando en el soporte para Markdown).


![Distill CLI](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mksuzviy3o7emv2ezzfi.png)


Y hasta aquí nuestra edición de este mes. Muchas gracias a todos por seguir compartiendo vuestro conocimiento y mostrándonos nuevas soluciones y proyectos open-source. Este boletín no sería posible sin vuestra colaboración. 

Nos vemos en unas semanas! Si queréis destacar alguna herramientas o solución que os parezca interesante, por favor, dejarnos vuestras propuestas en los comentarios.

Hasta entonces, sed buenos, happy coding!