<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pablo Gonzalez Robles</title>
    <description>The latest articles on DEV Community by Pablo Gonzalez Robles (@pangoro24).</description>
    <link>https://dev.to/pangoro24</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F708573%2F8ac8fba4-4692-4e33-86f2-b18703e4ba88.jpg</url>
      <title>DEV Community: Pablo Gonzalez Robles</title>
      <link>https://dev.to/pangoro24</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pangoro24"/>
    <language>en</language>
    <item>
      <title>AWS PrivateLink - VPC Endpoints: Gateway vs Interface para acceso a Amazon S3 (en español sencillo) - Parte 2</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sun, 29 Mar 2026 21:25:40 +0000</pubDate>
      <link>https://dev.to/pangoro24/aws-privatelink-vpc-endpoints-gateway-vs-interface-para-acceso-a-amazon-s3-en-espanol-sencillo-4e8c</link>
      <guid>https://dev.to/pangoro24/aws-privatelink-vpc-endpoints-gateway-vs-interface-para-acceso-a-amazon-s3-en-espanol-sencillo-4e8c</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;En mi post anterior, exploramos cómo conectarnos a instancias EC2 completamente privadas utilizando AWS Systems Manager (SSM) y VPC Endpoints, logrando eliminar la necesidad de exponer puertos a internet o lidiar con Bastion Hosts y Key Pairs. Si no lo has leído, te invito a revisarlo primero: &lt;a href="https://dev.to/pangoro24/aws-privatelink-acceso-a-instancias-ec2-privadas-con-y-ssm-en-espanol-sencillo-2kg3"&gt;https://dev.to/pangoro24/aws-privatelink-acceso-a-instancias-ec2-privadas-con-y-ssm-en-espanol-sencillo-2kg3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hoy continuamos con la segunda parte de esta serie. Aprovechando la infraestructura que ya construimos, vamos a abordar una duda de diseño muy común: ¿Cuál es la diferencia entre los VPC Endpoints de tipo Gateway y de tipo Interface?, y en qué casos usar cada uno.&lt;/p&gt;

&lt;p&gt;Para hacerlo fácil de entender, usaremos como ejemplo el acceso a uno de los servicios más populares: Amazon S3. Además, he actualizado el repositorio del demo para que veamos la teoría aplicada a la práctica.&lt;/p&gt;

&lt;p&gt;VPC Endpoints: Gateway vs Interface (El caso de S3)&lt;br&gt;
Cuando tienes una instancia privada (sin salida a internet vía Internet Gateway o NAT Gateway) y necesitas leer o escribir archivos en un bucket de S3 de forma segura a través de la red interna, necesitas un VPC Endpoint para acceder al servicio. Actualmente tienes dos opciones principales y aquí te resumo de manera sencilla sus diferencias fundamentales:&lt;/p&gt;

&lt;h4&gt;
  
  
  Gateway VPC Endpoint:
&lt;/h4&gt;

&lt;p&gt;Cómo funciona: No crea una interfaz de red física virtual (ENI) ni consume direcciones IP de tu subred. En su lugar, agrega automáticamente una ruta (mediante un Prefix List) en la Tabla de Rutas (Route Table) de tu VPC. Todo el tráfico dirigido hacia S3 es enrutado internamente por ahí.&lt;/p&gt;

&lt;p&gt;Costo: ¡Es totalmente gratuito! No hay cargo por hora de uso ni por procesamiento de datos.&lt;/p&gt;

&lt;p&gt;Limitación principal: El acceso está estrictamente limitado a los recursos que viven dentro de esa VPC. No puedes usar un Gateway Endpoint para acceder a S3 directamente desde tu red on-premises (vía VPN o Direct Connect) ni desde otras VPCs conectadas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06g9sgean1kw4x460obw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06g9sgean1kw4x460obw.png" alt=" " width="491" height="311"&gt;&lt;/a&gt;&lt;br&gt;
Imagen de referencia de: &lt;a href="https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Interface VPC Endpoint (AWS PrivateLink):
&lt;/h4&gt;

&lt;p&gt;Cómo funciona: Este fue el tipo de endpoint que usamos en el primer post para SSM. Crea una Interfaz de Red Elástica (ENI) dentro de la subred que elijas, asignándole una dirección IP privada. El tráfico se dirige hacia esa IP de manera local.&lt;/p&gt;

&lt;p&gt;Costo: Tiene un costo asociado por hora por Zona de Disponibilidad, más un cargo por cada GB de datos procesado.&lt;/p&gt;

&lt;p&gt;Ventaja principal: Al estar representado por una IP privada dentro de tu red, permite el acceso a S3 desde redes on-premises (mediante AWS Direct Connect o Site-to-Site VPN) o desde entornos multi-cuenta centralizados.&lt;/p&gt;

&lt;h4&gt;
  
  
  La Regla de Oro para S3:
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Si el tráfico hacia tus buckets nace exclusivamente desde instancias EC2 u otros recursos alojados dentro de esa misma VPC, opta siempre por el Gateway Endpoint para ahorrar costos y simplificar el enrutamiento. Si requieres acceso desde on-premises o arquitecturas hub-and-spoke complejas, el Interface Endpoint es el camino a seguir.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  La Solución: Acceso a S3 en nuestro Demo
&lt;/h4&gt;

&lt;p&gt;Para no quedarnos solo en la teoría, he aplicado estos conceptos en la misma arquitectura base que desplegamos anteriormente.&lt;/p&gt;

&lt;p&gt;En esta actualización, he modificado las plantillas de infraestructura en el repositorio para incluir el aprovisionamiento de un VPC Endpoint para S3, dejándote el código listo para que despliegues el de tipo Gateway o el de tipo Interface, para que puedas usar el que mejor se adapte a tu caso de uso. Si optas por desplegar el Gateway, CloudFormation se encarga de inyectar las reglas necesarias en la tabla de rutas de nuestra subred privada; si optas por el Interface, se aprovisionará una interfaz de red local. De cualquier manera, la instancia a la que accedemos vía Fleet Manager ahora tiene el camino despejado para interactuar con Amazon S3 sin tocar en ningún momento el internet público, manteniendo el esquema de "Zero Trust" a nivel de red externa.&lt;/p&gt;

&lt;p&gt;¿Dónde puedo ver un ejemplo de implementación?&lt;br&gt;
He subido los cambios a las plantillas de CloudFormation en el mismo repositorio público. Allí encontrarás el código necesario en la carpeta de vpce para ver cómo se declara un Gateway Endpoint y se asocia a las tablas de enrutamiento.&lt;/p&gt;

&lt;p&gt;Repositorio:&lt;br&gt;
&lt;a href="https://github.com/pangoro24/aws-privatelink-private-instance-ssm" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-privatelink-private-instance-ssm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si sigues la guía de despliegue actualizada en el Readme:&lt;/p&gt;

&lt;p&gt;Desplegarás la VPC privada.&lt;/p&gt;

&lt;p&gt;Desplegarás los Endpoints de interfaz (para SSM) y el nuevo Endpoint para S3.&lt;/p&gt;

&lt;p&gt;Desplegarás la instancia EC2.&lt;/p&gt;

&lt;p&gt;Al conectarte a tu instancia mediante Systems Manager Fleet Manager (sin internet), podrás abrir la consola y ejecutar comandos contra el CLI de AWS S3 (por ejemplo, listar buckets o descargar archivos) y verás que la comunicación es completamente exitosa.&lt;/p&gt;

&lt;p&gt;Bonus: te dejo también la plantilla de un bucket de s3 mantener todo por infraestructura como código :)&lt;/p&gt;

&lt;p&gt;Nota: Como siempre, no olvides eliminar el stack de CloudFormation cuando termines el laboratorio para evitar cobros de los Endpoints de Interfaz y la instancia EC2 si no los vas a necesitar.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusión
&lt;/h4&gt;

&lt;p&gt;Entender la diferencia entre un Gateway y un Interface Endpoint es clave para diseñar arquitecturas en la nube que sean seguras, escalables y costo-efectivas. Mientras que la flexibilidad de las IPs de un Interface Endpoint (PrivateLink) nos salva la vida en arquitecturas híbridas, los Gateways siguen siendo los reyes indiscutibles para el acceso interno hacia Amazon S3 y DynamoDB con un costo de $0.00.&lt;/p&gt;

&lt;p&gt;En la próxima entrega, presentaré un caso de uso muy interesante y común sobre los VPC Endpoints de tipo Interface; algo que todo ingeniero de nube debería conocer, ya que puede que te toque implementarlo.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>aws</category>
      <category>networking</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AWS PrivateLink - Acceso a Instancias EC2 Privadas a través de VPC endpoints y Systems Manager (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sun, 22 Mar 2026 15:35:51 +0000</pubDate>
      <link>https://dev.to/pangoro24/aws-privatelink-acceso-a-instancias-ec2-privadas-con-y-ssm-en-espanol-sencillo-2kg3</link>
      <guid>https://dev.to/pangoro24/aws-privatelink-acceso-a-instancias-ec2-privadas-con-y-ssm-en-espanol-sencillo-2kg3</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;Seguramente te has encontrado en la necesidad de acceder a una instancia EC2 que se encuentra en una subred privada. Tradicionalmente, la solución implicaba configurar un Bastion Host (o Jumpbox), o peor aún, asignarle una IP pública y abrir puertos en los Security Groups. Además, la administración requería lidiar con la gestión de llaves SSH o pares de claves (Key Pairs) de Windows, lo que añade una capa extra de complejidad operativa y riesgos de seguridad.&lt;/p&gt;

&lt;p&gt;Si te interesa simplificar esto y garantizar un acceso 100% privado y seguro, sin depender de reglas de entrada o salida a internet en tus instancias ni gestión de contenedores de llaves, este artículo es para ti. En este post estaré revisando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qué es AWS PrivateLink y qué son los VPC Endpoints&lt;/li&gt;
&lt;li&gt;Cómo conectarnos a EC2 sin necesidad de Access Keys o Key Pairs&lt;/li&gt;
&lt;li&gt;Cómo mantener la comunicación privada sin acceso a internet&lt;/li&gt;
&lt;li&gt;Un ejemplo de la arquitectura y despliegue&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué es AWS PrivateLink y qué son los VPC Endpoints?
&lt;/h2&gt;

&lt;p&gt;Para entender la solución, primero debemos hablar de dos conceptos fundamentales, que juntos forman la base de la comunicación interna segura en AWS:&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS PrivateLink
&lt;/h3&gt;

&lt;p&gt;Es una tecnología altamente disponible y escalable que proporciona conectividad privada entre Virtual Private Clouds (VPC), servicios compatibles de AWS y tus redes on-premises. La magia de PrivateLink radica en que el tráfico de red &lt;strong&gt;no atraviesa la Internet pública&lt;/strong&gt;, reduciendo significativamente la exposición a amenazas de ciberseguridad. En lugar de salir a internet, todo viaja directamente a través de la red troncal (backbone) privada de Amazon.&lt;/p&gt;

&lt;h3&gt;
  
  
  VPC Endpoints
&lt;/h3&gt;

&lt;p&gt;Para poder utilizar PrivateLink, necesitas un punto de entrada en tu red. Existen dos tipos principales de endpoints de VPC, pero para este caso nos enfocaremos en los &lt;strong&gt;Interface VPC Endpoints&lt;/strong&gt;. Estos actúan como interfaces de red elásticas (ENI) virtuales con direcciones IP privadas dentro de tus propias subredes. Su propósito es servir como la puerta de enlace que enruta de manera local el tráfico dirigido hacia un servicio de AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwss4gtn5mzwa7g4au5gu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwss4gtn5mzwa7g4au5gu.png" alt="Diagrama conceptual del uso de VPC endpoints para acceder a servicios de AWS" width="621" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  La Solución: Acceso a la instancia sin bastions o key Pairs usando vpc endpoints y ssm
&lt;/h2&gt;

&lt;p&gt;El enfoque moderno y recomendado por AWS para administrar instancias es utilizar &lt;strong&gt;AWS Systems Manager (SSM) Session Manager&lt;/strong&gt;, y para entornos gráficos como Windows de manera unificada desde la consola, su función de &lt;strong&gt;Fleet Manager&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La arquitectura segura para lograrlo funciona de la siguiente manera:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instancia Completamente Privada&lt;/strong&gt;: Desplegamos nuestra instancia EC2 en una subred privada, sin asignarle una IP Pública y en una VPC que no necesita tener configurado ni un Internet Gateway (IGW) ni un NAT Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cero Key Pairs&lt;/strong&gt;: No asociamos ningún Key Pair al momento de crear la instancia para conectarnos. En su lugar, le adjuntamos a la instancia un &lt;strong&gt;IAM Role (Instance Profile)&lt;/strong&gt; que le otorga los permisos necesarios al agente (SSM Agent) para comunicarse de forma segura con AWS Systems Manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC Endpoints para SSM&lt;/strong&gt;: Para que el SSM Agent instalado en nuestra instancia EC2 pueda hablar con el servicio de Systems Manager (cuyos servidores están fuera de nuestra VPC) sin usar internet, aprovisionamos VPC Endpoints de interfaz principales como &lt;code&gt;ssm&lt;/code&gt;, &lt;code&gt;ssmmessages&lt;/code&gt; y &lt;code&gt;ec2messages&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Groups Restrictivos&lt;/strong&gt;: Todo ocurre localmente. Como la comunicación es mediante los Endpoints dentro de la misma red local (VPC), &lt;strong&gt;no dependes de reglas de entrada o salida hacia/desde el exterior (0.0.0.0/0)&lt;/strong&gt;. La EC2 no necesita abrir un puerto 22 (SSH) o 3389 (RDP) para tu IP. Solo necesitas que el Security Group permita el tráfico interno en tu subred hacia el puerto HTTPS (443) de los Endpoints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Acceso Dinámico y Justo a Tiempo (JIT) vía SSM&lt;/strong&gt;: Aquí es donde la solución destaca. Como no utilizamos Key Pairs iniciales, cuando necesitas entrar a la instancia puedes enviar un comando remoto con SSM (&lt;em&gt;Run Command&lt;/em&gt;) de forma segura para preconfigurar al usuario e inyectar su respectiva contraseña. Luego, una vez terminada la sesión o tu tarea, podrías enviar otro comando para eliminar o deshabilitar ese usuario nuevamente. Esto te faculta para crear accesos al momento en que se necesitan y removerlos posterior al uso, evitando la perdurabilidad de contraseñas.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Al final de esta arquitectura, logramos nuestra misión:&lt;br&gt;
✅ &lt;strong&gt;Cero exposición a internet&lt;/strong&gt;: Al no requerir IGW ni NAT, la máquina es invisible desde el exterior.&lt;br&gt;
✅ &lt;strong&gt;Cero administración de llaves estáticas&lt;/strong&gt;: El acceso es auditado y autenticado mediante políticas de IAM, y permitimos accesos dinámicos configurables al vuelo con SSM, fácilmente revocables.&lt;br&gt;
✅ &lt;strong&gt;Comunicación 100% privada&lt;/strong&gt;: Todo el tráfico entre tu EC2 y la consola de Systems Manager está asegurado por la red troncal de AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Dónde puedo ver un ejemplo de implementación?
&lt;/h2&gt;

&lt;p&gt;He subido un demo completo a mi repositorio público. Allí encontrarás las plantillas de CloudFormation (en las carpetas de &lt;code&gt;vpc&lt;/code&gt;, &lt;code&gt;vpce&lt;/code&gt; e &lt;code&gt;instance&lt;/code&gt;) y todo el laboratorio necesario para poner esto a prueba en tu propia cuenta. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repositorio:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/pangoro24/aws-privatelink-private-instance-ssm" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-privatelink-private-instance-ssm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si te diriges a la guía de despliegue dentro del repositorio, podrás ver un paso a paso para:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Desplegar una VPC y subredes verdaderamente privadas.&lt;/li&gt;
&lt;li&gt;Desplegar los Endpoints de VPC con sus reglas de red para permitir PrivateLink. Sin estos vpc endpoints, recibirás error al intentar conectarse a la instancia.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf8czb0pw5xe2m3tw4mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf8czb0pw5xe2m3tw4mg.png" alt=" " width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Desplegar un Windows Server configurado con el Instance Profile de IAM.&lt;/li&gt;
&lt;li&gt;Establecer una nueva clave interactiva al sistema sin usar RDP externo y acceder usando &lt;strong&gt;Fleet Manager&lt;/strong&gt; de Systems Manager directamente desde tu navegador.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Si el despliegue de los recursos se realiza exitosamente, al intentar conectarte a la instancia de ec2 podrás ver un status para Session Manager connection de "Connected". De lo contrario, verás un mensaje de "No connected"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ndcmv4545fk8ylmfodc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ndcmv4545fk8ylmfodc.png" alt=" " width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Al conectarse a fleet manager, podremos ver la pantalla de windows pero sin acceso a internet porque obviamente, la instancia vive en la red privada. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xq5g6uqn5z35ejqs6cw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xq5g6uqn5z35ejqs6cw.png" alt=" " width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Utilizar AWS PrivateLink y VPC Endpoints en conjunto con Systems Manager elimina una enorme carga operativa asociada a la rotación de llaves, el mantenimiento de Bastion Hosts y los costos de gateways. A la vez, mejora radicalmente la postura de seguridad de nuestras aplicaciones al eliminar el uso de puertos de administración expuestos a la internet.&lt;/p&gt;

&lt;p&gt;¿Ya utilizas SSM y Endpoints de VPC en tu organización para administrar tu infraestructura de manera unificada, o sigues utilizando VPNs tradicionales o Jumpboxes? Cuéntamelo en los comentarios.&lt;/p&gt;

&lt;p&gt;En el próximo post, veremos otro uso de los vpc endpoints y reutilizaremos los componentes que hemos desplegado en este post. Importante recordar que  los vpc endpoints y las instancias tienen un costo por hora por lo que si ya no los requieres, debes eliminar los recursos.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/vpc/latest/privatelink/concepts.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc-endpoints.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc-endpoints.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Control centralizado de S3 Block Public Access a nivel organizacional (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sun, 21 Dec 2025 18:00:52 +0000</pubDate>
      <link>https://dev.to/pangoro24/control-centralizado-de-s3-block-public-access-a-nivel-organizacional-en-espanol-sencillo-4n2j</link>
      <guid>https://dev.to/pangoro24/control-centralizado-de-s3-block-public-access-a-nivel-organizacional-en-espanol-sencillo-4n2j</guid>
      <description>&lt;p&gt;¡Hola comunidad! 👋&lt;br&gt;
Quiero compartirles una nueva funcionalidad de seguridad en AWS que me parece interesante pero he visto que se ha mencionado muy poco en las redes: El bloqueo público de los buckets de S3 desde AWS Organizations. Si quieres leer el anuncio oficial de esta funcionalidad, puedes verla aquí: &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/11/amazon-s3-block-public-access-organization-level-enforcement/" rel="noopener noreferrer"&gt;https://aws.amazon.com/about-aws/whats-new/2025/11/amazon-s3-block-public-access-organization-level-enforcement/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ¿Por qué me llamó la atención esto?
&lt;/h2&gt;

&lt;p&gt;La razón principal es simple: control centralizado desde la cuenta administradora de la organización.&lt;/p&gt;
&lt;h2&gt;
  
  
  La vieja solución
&lt;/h2&gt;

&lt;p&gt;Antes (todavía el presente para muchos) teníamos básicamente dos opciones para asegurar que los objetos de los buckets no se expusieran públicamente:&lt;br&gt;
&lt;strong&gt;Opción 1: Bloqueo a nivel de cuenta&lt;/strong&gt;&lt;br&gt;
Tenías que ir cuenta por cuenta dentro de tu organización, activando manualmente (o con scripts) el Block Public Access en cada una. Esto significa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuración repetitiva en múltiples cuentas&lt;/li&gt;
&lt;li&gt;Mayor probabilidad de error humano&lt;/li&gt;
&lt;li&gt;Necesidad de monitorear cada cuenta individualmente&lt;/li&gt;
&lt;li&gt;Complejidad al escalar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Opción 2: Bloqueo a nivel de bucket&lt;/strong&gt;&lt;br&gt;
Aún peor. Esto implicaba configurar cada bucket individual con Block Public Access activado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trabajo manual exhaustivo&lt;/li&gt;
&lt;li&gt;Imposible de escalar en organizaciones grandes&lt;/li&gt;
&lt;li&gt;Fácil olvidar un bucket nuevo&lt;/li&gt;
&lt;li&gt;Pesadilla operativa para auditorías&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ambas opciones requerían vigilancia constante y eran propensas a errores.&lt;/p&gt;
&lt;h2&gt;
  
  
  La nueva solución
&lt;/h2&gt;

&lt;p&gt;Política a nivel organizacional.&lt;br&gt;
¿Qué significa esto en la práctica?&lt;br&gt;
Con un control preventivo habilitado en la cuenta de gestión de tu organización, obtienes:&lt;br&gt;
✅ Control centralizado: Todo se gestiona desde un solo lugar&lt;br&gt;
✅ Aplicación automática: Se aplica a todas las cuentas de la organización&lt;br&gt;
✅ Menos vigilancia: Ya no necesitas monitorear cada cuenta o cada bucket&lt;/p&gt;

&lt;p&gt;Es elegante, es simple, es efectivo.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cómo se implementa
&lt;/h2&gt;

&lt;p&gt;Primero, necesitas activar las S3 policies, para ello debes ejecutar el comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations enable-policy-type --root-id r-1234 --policy-type S3_POLICY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Referencia: &lt;a href="https://docs.aws.amazon.com/cli/latest/reference/organizations/enable-policy-type.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/reference/organizations/enable-policy-type.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego de activarla, podrás ver algo como lo de abajo en la consola:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"PolicyTypes": [
            {
                "Type": "S3_POLICY",
                "Status": "ENABLED"
            }
]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la consola, podrás ver lo siguiente:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb6614igqpzt38t4rvnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb6614igqpzt38t4rvnd.png" alt=" " width="800" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esto significa que ya puedes crear la política pero no significa que ya queda el bloqueo habilitado.&lt;/p&gt;

&lt;p&gt;Para probar esto, creé un sitio web que es alojado en s3. Quité el bloqueo público a nivel de bucket, a nivel de cuenta y configuré una política de recurso muy permisiva en el bucket para así poder ver el sitio web desde el internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4nmafhxdlo5fah8kxes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4nmafhxdlo5fah8kxes.png" alt=" " width="768" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego que ya tenemos cómo validar si la política está funcionado, ahora la desplegamos usando infraestructura como código (incluso para las políticas), y quedaría así: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxh8rey8x8ziltq64d2ix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxh8rey8x8ziltq64d2ix.png" alt=" " width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ya luego de tener la política activada para toda la organización, recibo el siguiente error en el sitio web lo que confirma que el bloqueo público ya quedó habilitado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqepah3nitdknqn3tb56i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqepah3nitdknqn3tb56i.png" alt=" " width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Acabo de publicar la plantilla de despliegue de la política de S3 usando cloudoformation en mi GitHub: &lt;a href="https://github.com/pangoro24/aws-cloudformation-bpa-org" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-cloudformation-bpa-org&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Para cerrar
&lt;/h2&gt;

&lt;p&gt;Esta implementación es perfecta si:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gestionas múltiples cuentas de AWS en una organización&lt;/li&gt;
&lt;li&gt;Quieres reforzar la seguridad sin aumentar la carga operativa&lt;/li&gt;
&lt;li&gt;Buscas cumplir con políticas de seguridad de manera escalable&lt;/li&gt;
&lt;li&gt;Prefieres la prevención sobre la detección&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sugerencia adicional: Si ya habías activado el bloqueo público a nivel de cuenta, manténla y así tendrás una capa adicional de seguridad (defense in depth)&lt;/p&gt;

&lt;p&gt;¿Preguntas? ¿Sugerencias? ¡Los leo en los comentarios! 💬&lt;/p&gt;

&lt;p&gt;Tags: #aws #cloudformation #security #devops #s3 #organizations&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>management</category>
      <category>security</category>
    </item>
    <item>
      <title>CloudFormation Hooks: Lambda hooks con anotaciones granulares (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Mon, 17 Nov 2025 16:25:08 +0000</pubDate>
      <link>https://dev.to/pangoro24/cloudformation-hooks-lambda-hooks-con-anotaciones-granulares-en-espanol-sencillo-4739</link>
      <guid>https://dev.to/pangoro24/cloudformation-hooks-lambda-hooks-con-anotaciones-granulares-en-espanol-sencillo-4739</guid>
      <description>&lt;p&gt;CloudFormation Hooks recibe una gran mejora: anotaciones granulares e información más rica por validación&lt;/p&gt;

&lt;p&gt;Hace unos meses publiqué un artículo introductorio sobre CloudFormation Hooks y cómo utilizarlos para habilitar validación proactiva en nuestras plantillas. Si no lo has leído, puedes encontrarlo aquí:&lt;/p&gt;

&lt;p&gt;Introducción a CloudFormation Hooks: Validación proactiva para una nube segura&lt;br&gt;
&lt;a href="https://dev.to/pangoro24/introduccion-a-cloudformation-hooks-validacion-proactiva-para-una-nube-segura-340f"&gt;https://dev.to/pangoro24/introduccion-a-cloudformation-hooks-validacion-proactiva-para-una-nube-segura-340f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hoy quiero compartir una actualización importante: AWS ha lanzado una mejora significativa relacionada a cómo los hooks pueden entregar información de validación, permitiéndonos crear anotaciones más claras, más completas y mucho más útiles para el usuario final.&lt;/p&gt;

&lt;p&gt;AWS explica la novedad aquí:&lt;br&gt;
&lt;a href="https://aws.amazon.com/es/about-aws/whats-new/2025/11/aws-cloudformation-hooks-granular-invocation-details/" rel="noopener noreferrer"&gt;https://aws.amazon.com/es/about-aws/whats-new/2025/11/aws-cloudformation-hooks-granular-invocation-details/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Y ya actualicé el demo en este nuevo repositorio:&lt;br&gt;
&lt;a href="https://github.com/pangoro24/aws-cloudformation-hooks" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-cloudformation-hooks&lt;/a&gt; (para poder dejar el de la sesión del community day tal como se explicó en su día)&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué problema resuelve esta actualización
&lt;/h2&gt;

&lt;p&gt;Antes de esta mejora, los hooks solo permitían un campo único llamado message para comunicar hallazgos. Esto generaba varios problemas en escenarios reales:&lt;/p&gt;

&lt;p&gt;• Si el hook evaluaba múltiples reglas, todo debía colocarse en un solo texto.&lt;br&gt;
• Para mantener claridad, la mayoría terminábamos usando paréntesis, listas improvisadas o pseudo-JSON, que funcionaban… pero no eran agradables ni consistentes.&lt;br&gt;
• Desde la consola, el usuario veía un bloque de texto poco formateado, a veces difícil de leer.&lt;/p&gt;

&lt;p&gt;Esto no solo afectaba la experiencia del desarrollador, sino también la claridad operativa y la capacidad de remediación.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué cambia con las nuevas anotaciones granulares
&lt;/h2&gt;

&lt;p&gt;Ahora CloudFormation Hooks permite incluir anotaciones específicas por cada validación, con campos separados y claramente presentados en la consola, incluyendo:&lt;/p&gt;

&lt;p&gt;• severity – nivel de criticidad&lt;br&gt;
• status – resultado de la evaluación de la lógica&lt;br&gt;
• status message – explicación más detallada que deseamos agregar&lt;br&gt;
• remediation message – qué debe hacer el usuario&lt;br&gt;
• remediation link – enlace directo a documentación o guías internas&lt;br&gt;
• Y la posibilidad de ver todo esto desde el Invocation history (si no sabías que existe el invocation history, el detalle acá: &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/09/cloudformation-hooks-managed-controls-summary/" rel="noopener noreferrer"&gt;https://aws.amazon.com/about-aws/whats-new/2025/09/cloudformation-hooks-managed-controls-summary/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Un ejemplo práctico
&lt;/h2&gt;

&lt;p&gt;Imagina que definiste un hook para validar un recurso AWS::S3::Bucket con 3 reglas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Que tenga Block Public Access habilitado&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Que tenga versionamiento&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Que tenga un ciclo de vida para los objetos&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Con este nuevo modelo puedes elegir:&lt;/p&gt;

&lt;p&gt;• Generar una anotación por cada validación, claramente independiente&lt;br&gt;
• Generar anotaciones solo para las validaciones que fallaron&lt;/p&gt;

&lt;p&gt;El usuario final verá cada anotación como un elemento independiente dentro del Invocation history. Nada de paredes de texto, nada de interpretar formatos improvisados.&lt;/p&gt;

&lt;p&gt;Es una mejora real en cuanto a experiencia, claridad y gobernanza. &lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo lo vemos desde la consola
&lt;/h2&gt;

&lt;p&gt;Acá te muestro el antes y después de los mensajes de los hooks:&lt;br&gt;
Antes: sin anotaciones&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtv4cew9obmejcps8wwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtv4cew9obmejcps8wwd.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora: con anotaciones&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdxzq8ljlg8yhtvpio229.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdxzq8ljlg8yhtvpio229.png" alt=" " width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Esta mejora convierte a CloudFormation Hooks en una herramienta más madura para validación proactiva, gobernanza, seguridad y experiencia de desarrollador.&lt;br&gt;
Ahora no solo podemos detectar malas configuraciones, sino también comunicar de manera clara qué se debe corregir y por qué.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>aws</category>
      <category>news</category>
      <category>devops</category>
    </item>
    <item>
      <title>Servicios de AWS que un Cloud Security Engineer debe dominar, aunque NO sean "servicios de seguridad" per se</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Tue, 11 Nov 2025 23:14:01 +0000</pubDate>
      <link>https://dev.to/pangoro24/servicios-de-aws-que-un-cloud-security-engineer-debe-dominar-aunque-no-sean-servicios-de-4bji</link>
      <guid>https://dev.to/pangoro24/servicios-de-aws-que-un-cloud-security-engineer-debe-dominar-aunque-no-sean-servicios-de-4bji</guid>
      <description>&lt;p&gt;Cuando pensamos en seguridad en AWS, el brainstorming siempre cae en el "típico combo": IAM, AWS WAF, KMS, quizá Security Hub. Sus íconos en color rojo ya los definen como servicios de seguridad per se.&lt;/p&gt;

&lt;p&gt;Pero si llevas un tiempo como Cloud Security Engineer en AWS, sabes que la seguridad real involucra varios servicios aparte de los mencionados. &lt;/p&gt;

&lt;p&gt;Aquí les dejo mi top 6 de servicios "no-seguridad" que considero importante conocer más para mejorar la postura de seguridad:&lt;/p&gt;

&lt;p&gt;1️⃣ Amazon VPC: Donde Empieza el Juego de la Defensa&lt;br&gt;
La seguridad empieza por casa, y en la nube, tu casa es la VPC. Si las redes no están bien diseñadas desde el inicio, puede ser un reto garantizar su seguridad. Dedica tiempo a entender cómo se estructuran las VPCs en cada cuenta. Servicios como Transit Gateway, túneles VPN y Security Groups forman parte de la base para una red segura y funcional.&lt;/p&gt;

&lt;p&gt;2️⃣ AWS Config: El Detective de la Gobernanza&lt;br&gt;
La gobernanza y el cumplimiento (compliance) son la forma de dormir tranquilo. Config avisa qué recursos están fuera de la línea y no cumplen con nuestras políticas establecidas (ej. ese bucket de S3 abierto al mundo). Lo bueno es integrarlo con otros servicios para no solo detectar, sino también automatizar acciones correctivas. ¡Menos trabajo manual!&lt;/p&gt;

&lt;p&gt;3️⃣ AWS Systems Manager (SSM): El Navaja Suiza para el Ops Seguro&lt;br&gt;
Tiene varias funcionalidades pero las que más me interesan a nivel des seguridad son:&lt;br&gt;
SSM Documents: Usa las automatizaciones de SSM para implementar controles correctivos, normalmente sobre recursos en incumplimiento detectadas por las reglas de Config. ¿Detectaste algo mal? Un runbook de SSM se ejecuta y listo, recurso corregido.&lt;br&gt;
Patch Manager: ¡Adiós a los dolores de cabeza con los parches! Te ayuda a gestionar las actualizaciones de forma eficiente y a escala.&lt;/p&gt;

&lt;p&gt;4️⃣ AWS Organizations: Pon Orden en el Caos de Cuentas&lt;br&gt;
Un entorno bien organizado es un entorno más seguro (y menos complejo). Una buena estructura de cuentas con Organizational Units (OUs) es la clave para la gobernanza centralizada.&lt;br&gt;
Así puedes aplicar controles preventivos como: SCPs (Service Control Policies), Backup Policies, o las nuevas Resource Control Policies (RCPs) y declarative policies. &lt;/p&gt;

&lt;p&gt;5️⃣ AWS Control Tower: El Acelerador de Seguridad Out-of-the-Box&lt;br&gt;
Para los que montan entornos desde cero y no quieren reinventar la rueda de seguridad, Control Tower es el camino. Te monta una línea base de seguridad sólida, activa controles automáticos sobre las OUs y te da ese punto de cumplimiento inmediato. Te ahorras un montón de tiempo en validaciones manuales y tienes una gran cantidad de controles que son mantenidos por AWS directamente y solo tenemos que activarlos en las OUs de interés.&lt;/p&gt;

&lt;p&gt;6️⃣ AWS CloudFormation: El Código que es Nuestro Control&lt;br&gt;
La Infraestructura como Código (IaC) es ley. No solo te da consistencia en los despliegues, sino que es el punto clave para realizar validaciones a través de controles proactivos. Con los CloudFormation Hooks, podemos introducir validaciones específicas antes de que el recurso se cree. Es la forma controlada de gestionar excepciones y asegurar que solo se despliegue lo que es seguro por diseño.&lt;/p&gt;

&lt;p&gt;🌟 Si alguien considera otro servicio que no es de seguridad y que les aporta mucho, me escriben en los comentarios porque tal vez me lo estoy perdiendo 😅 &lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>architecture</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Defensa por Capas: Seguridad INTEGRAL en la nube de AWS 🔐</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sat, 11 Oct 2025 16:30:35 +0000</pubDate>
      <link>https://dev.to/pangoro24/defensa-por-capas-seguridad-integral-en-la-nube-de-aws-6f2</link>
      <guid>https://dev.to/pangoro24/defensa-por-capas-seguridad-integral-en-la-nube-de-aws-6f2</guid>
      <description>&lt;p&gt;La &lt;strong&gt;Defensa por Capas&lt;/strong&gt; (Defense in Depth, en inglés) es una estrategia que organiza la seguridad en múltiples niveles, protegiendo los activos desde el &lt;strong&gt;núcleo hasta el perímetro&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Cada capa cumple un rol esencial, pero —desde mi experiencia— la última tiene el &lt;strong&gt;mayor impacto&lt;/strong&gt; 😎.&lt;/p&gt;

&lt;p&gt;Durante este año he dedicado bastante tiempo a revisar el &lt;strong&gt;Cloud Adoption Framework (CAF)&lt;/strong&gt; y quiero compartir un resumen práctico de cada capa junto con algunos &lt;strong&gt;servicios clave de AWS&lt;/strong&gt; que pueden ayudarte a fortalecer tu postura de seguridad.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeoncti4klevpqnddsom.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeoncti4klevpqnddsom.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  1️⃣ Protección de Datos
&lt;/h3&gt;

&lt;p&gt;Protege tu activo más valioso: &lt;strong&gt;los datos&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Macie:&lt;/strong&gt; Detecta y protege información confidencial.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS KMS:&lt;/strong&gt; Garantiza la integridad y el cifrado de datos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Backup:&lt;/strong&gt; Asegura la disponibilidad mediante copias automáticas y centralizadas.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2️⃣ Protección de Aplicaciones
&lt;/h3&gt;

&lt;p&gt;Asegura tus aplicaciones frente a ataques web.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS WAF:&lt;/strong&gt; Protege contra exploits comunes y vulnerabilidades OWASP.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Shield:&lt;/strong&gt; Defiende de ataques &lt;strong&gt;DDoS&lt;/strong&gt; tanto a nivel estándar como avanzado.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3️⃣ Protección de Infraestructura
&lt;/h3&gt;

&lt;p&gt;Fortalece servidores, configuraciones y sistemas.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Config:&lt;/strong&gt; Supervisa y evalúa la conformidad de tus configuraciones.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Systems Manager:&lt;/strong&gt; Automatiza el parchado y la aplicación de políticas de configuración.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4️⃣ Detección de Amenazas y Respuesta a Incidentes
&lt;/h3&gt;

&lt;p&gt;Detecta, analiza y responde ante posibles amenazas.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon GuardDuty:&lt;/strong&gt; Identifica comportamientos maliciosos y actividades inusuales.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS CloudTrail:&lt;/strong&gt; Registra y audita las acciones realizadas en tu entorno AWS.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5️⃣ Gestión de Identidad y Acceso
&lt;/h3&gt;

&lt;p&gt;Controla &lt;strong&gt;quién accede&lt;/strong&gt; y &lt;strong&gt;qué puede hacer&lt;/strong&gt; dentro de tu entorno.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS IAM:&lt;/strong&gt; Administra permisos y políticas a nivel de cuenta.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS IAM Identity Center (antes SSO):&lt;/strong&gt; Centraliza la gestión de identidades y accesos a nivel organizacional.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  6️⃣ Protección de Red y Perímetro
&lt;/h3&gt;

&lt;p&gt;Asegura tanto el &lt;strong&gt;tráfico interno&lt;/strong&gt; como el &lt;strong&gt;acceso externo&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Servicios recomendados:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon VPC:&lt;/strong&gt; Define redes seguras y segmentadas.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Route 53:&lt;/strong&gt; Gestiona la resolución de nombres de dominio internos y públicos.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  7️⃣ Políticas, Procedimientos y Concienciación
&lt;/h3&gt;

&lt;p&gt;La capa más importante: &lt;strong&gt;las personas&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Sin un equipo consciente y capacitado, la tecnología por sí sola no basta.&lt;br&gt;&lt;br&gt;
Fomenta la &lt;strong&gt;cultura de seguridad&lt;/strong&gt;, la &lt;strong&gt;formación continua&lt;/strong&gt; y la &lt;strong&gt;responsabilidad compartida&lt;/strong&gt;.  &lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Conclusión
&lt;/h3&gt;

&lt;p&gt;Una &lt;strong&gt;estrategia de defensa por capas&lt;/strong&gt; efectiva no se trata solo de herramientas, sino de &lt;strong&gt;equilibrar tecnología, procesos y personas&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Combinar una infraestructura sólida con un equipo preparado es lo que realmente construye una &lt;strong&gt;seguridad integral en la nube&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;👉 Si estás aprendiendo sobre &lt;strong&gt;seguridad en AWS&lt;/strong&gt;, te animo a seguir explorando, practicando y certificándote. Cada paso te acerca más a dominar la nube con confianza 💪☁️&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lecciones aprendidas de la certificación AWS Security Specialty 🥇</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:48:15 +0000</pubDate>
      <link>https://dev.to/pangoro24/lecciones-aprendidas-de-la-certificacion-aws-security-specialty-21gg</link>
      <guid>https://dev.to/pangoro24/lecciones-aprendidas-de-la-certificacion-aws-security-specialty-21gg</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;Hace un tiempo logré la &lt;a href="https://www.credly.com/badges/5f8384e5-bd37-4dcf-a02f-7811b462a3da/public_url" rel="noopener noreferrer"&gt;certificación&lt;/a&gt; de especialidad en seguridad de AWS   y quiero compartir algunas lecciones que, espero, les sean útiles a quienes estén pensando en presentar este examen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. No necesitas ser un experto absoluto&lt;/strong&gt;. Este examen busca validar tu capacidad para usar los servicios, pero no exige que seas especialista en todos ellos. Es cierto que trabajar con los servicios en el día a día o hacer demos ayuda mucho, pero incluso quienes usamos AWS de manera constante rara vez conocemos todas las funcionalidades de un servicio o lo aplicamos en todos los escenarios posibles. Igual tendrás que seguir practicando y estudiando. Si sabes qué hace cada servicio y cómo configurarlo en los casos de uso más comunes, ya tienes una buena base para aprobar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Comprende las integraciones&lt;/strong&gt;. Un servicio de seguridad que simplemente está habilitado aporta poco o nada de valor por sí solo. Los hallazgos deben recopilarse, filtrarse, procesarse y llegar a quienes puedan actuar sobre ellos, ya sea para estar informados o como parte de otro proceso. La guía oficial lo dice claramente: las integraciones con servicios nativos de AWS (y también de terceros) son clave. Si entiendes cómo integrarlos, estás en el camino correcto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Toma notas mientras te preparas&lt;/strong&gt;. Más allá de aprobar o no, lo más valioso de cualquier certificación es el proceso de aprendizaje. Tomar notas te servirá para reforzar conocimientos si necesitas volver a intentarlo y, lo más importante, te quedarán como referencia práctica cuando debas implementar esos servicios en tu organización.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Practica con exámenes de prueba, pero no te obsesiones&lt;/strong&gt;. Muchos recomiendan alcanzar cierto porcentaje en los simulacros antes de presentar el examen oficial. En mi caso, nunca terminé uno completo. Lo que hacía era comenzar un examen de práctica y, después de 10 o 20 preguntas, me detenía a analizar tanto las respuestas correctas como las incorrectas. Ese ejercicio me permitió identificar los temas en los que necesitaba profundizar y también entender por qué algunas opciones nunca serían viables, más allá de que la “correcta” fuera otra.&lt;/p&gt;

&lt;p&gt;Al final, muchas personas postergan el examen porque sienten que no están listas (a mí también me pasó). Pero el momento ideal es cuando te das cuenta de que, si alguien te pide ayuda con un servicio de seguridad en AWS, puedes responder:&lt;br&gt;
"Sí, lo conozco, sé cómo usarlo, entiendo por qué es la mejor opción en este escenario y, revisando mis notas y la documentación, puedo ayudarte a configurarlo correctamente y resolver tu problema."&lt;/p&gt;

&lt;p&gt;Ojalá este post les ayude a animarse a dar ese paso. Confíen en su preparación y dense la oportunidad: el examen puede parecer desafiante, pero con constancia y práctica, es totalmente alcanzable.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>spanish</category>
      <category>learning</category>
    </item>
    <item>
      <title>Parametrizaciones inteligentes y auditables usando Cloudformation Custom Resources (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sat, 30 Aug 2025 01:12:40 +0000</pubDate>
      <link>https://dev.to/pangoro24/cloudformation-custom-resources-en-espanol-sencillo-1p17</link>
      <guid>https://dev.to/pangoro24/cloudformation-custom-resources-en-espanol-sencillo-1p17</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;¿Alguna vez te has encontrado con la necesidad de automatizar configuraciones de AWS que CloudFormation no maneja nativamente? Por ejemplo, necesitaba habilitar S3 Block Public Access a nivel de cuenta usando CloudFormation, pero resulta que no existe un tipo de recurso nativo para esto. &lt;/p&gt;

&lt;p&gt;¿Entonces qué nos queda por hacer? Ahí es donde entran las Custom Resources de CloudFormation. &lt;/p&gt;

&lt;p&gt;En este post les voy a compartir cómo se estructuran los custom resources en cloudformation, y adicional, cómo Kiro me ayudó a estructurar todo el proyecto usando spec-driven development.&lt;/p&gt;

&lt;p&gt;En este post estaré cubriendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qué son los Custom Resources y cuándo usarlos&lt;/li&gt;
&lt;li&gt;Desarrollo del componente usando spec-driven development
&lt;/li&gt;
&lt;li&gt;Implementación práctica del custom resource para S3 BPA&lt;/li&gt;
&lt;li&gt;Código real y capturas del funcionamiento&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué son las Custom Resources en CloudFormation?
&lt;/h2&gt;

&lt;p&gt;Las Custom Resources son básicamente una forma de extender CloudFormation cuando necesitas hacer algo que los tipos de recursos nativos no pueden manejar, como lógica o parametrizaciones en los servicios, que no es realmente el despliegue de un recurso. Funcionan mediante una función Lambda que CloudFormation invoca durante las operaciones de CREATE, UPDATE y DELETE del stack (si así lo deseamos aunque puedes elegir solo una o dos acciones). Acá puedes leer la documentación oficial de AWS: &lt;a href="https://docs.aws.amazon.com/es_es/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/es_es/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En mi caso específico, necesitaba:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consultar y habilitar el Bloqueo de Acceso Público (Block Public Access - BPA) a nivel de cuenta en el servicio de S3&lt;/li&gt;
&lt;li&gt;Enviar una notificación del cambio ejecutado&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Desarrollo guiado a través de especificaciones (Spec-driven development)
&lt;/h2&gt;

&lt;p&gt;Aquí es donde Kiro (&lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;https://kiro.dev/&lt;/a&gt;) realmente brilló. En lugar de pedirme un prompt para ponerse directamente a escribir el código de python y la plantilla de cloudformation, me guió a través de un proceso estructurado que nunca había usado antes con los agentes de inteligencia aritificial. Antes, yo ño más que hacía era crearme un archivo .txt o .md donde listaba los requisitos y le decía al agente que se guiara de ese documento para desarrollar el proyecto pero en la mayoría de los casos, tocaba hacer mucho refinamiento lo cual consume tiempo y especialmente, requests/tokens que pueden llegar a costar dinero.&lt;/p&gt;

&lt;p&gt;Nota: Te dejo por acá el post donde compartí mi primera experiencia usando Kiro: &lt;a href="https://dev.to/pangoro24/mi-experiencia-con-kiro-59k7"&gt;https://dev.to/pangoro24/mi-experiencia-con-kiro-59k7&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para este caso específico y siguiendo el spec-driven development, el proyecto se trabaja de la siguiente manera:&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 1: Definición de requerimientos
&lt;/h3&gt;

&lt;p&gt;Kiro me ayudó a estructurar los requerimientos de manera clara:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Habilitar S3 Block Public Access a nivel de cuenta&lt;/li&gt;
&lt;li&gt;Manejar operaciones CREATE, UPDATE y DELETE&lt;/li&gt;
&lt;li&gt;Enviar notificaciones opcionales via SNS&lt;/li&gt;
&lt;li&gt;Implementar manejo de errores robusto&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Paso 2: Diseño de la implementación
&lt;/h3&gt;

&lt;p&gt;Luego trabajamos en el diseño técnico:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Resource que invoca una función Lambda&lt;/li&gt;
&lt;li&gt;Función Lambda con lógica para consultar y aplicar configuraciones&lt;/li&gt;
&lt;li&gt;Plantilla CloudFormation con todos los recursos necesarios&lt;/li&gt;
&lt;li&gt;Pruebas unitarias para validar la lógica&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Paso 3: Ejecución de las tareas
&lt;/h3&gt;

&lt;p&gt;Finalmente, Kiro me ayudó a implementar cada componente paso a paso, siempre validando que el código funcionara antes de continuar.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo funciona el Custom Resource?
&lt;/h2&gt;

&lt;p&gt;El flujo es bastante directo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Despliegue&lt;/strong&gt;: CloudFormation crea el stack e invoca la función Lambda con el evento CREATE&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluación&lt;/strong&gt;: La Lambda consulta la configuración actual de S3 BPA usando boto3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aplicación&lt;/strong&gt;: Si BPA no está habilitado, la función lo configura automáticamente&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notificación&lt;/strong&gt;: Desde la lambda se envía un mensaje SNS con el resultado de la ejecución&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respuesta&lt;/strong&gt;: La Lambda responde a CloudFormation con SUCCESS o FAILED&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Implementación práctica
&lt;/h2&gt;

&lt;p&gt;Es cierto que, con un solo prompt bien definido, la mayoría de los modelos de inteligencia artificial habrían generado la plantilla y el código necesarios, por lo que usar aquí la metodología de desarrollo dirigido por especificaciones podría parecer "over-engineering". Sin embargo, al ser mi primer proyecto desde cero con Kiro, quise probarlo primero en un demo sencillo antes de avanzar hacia algo más complejo.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Dónde puedo ver el código completo?
&lt;/h2&gt;

&lt;p&gt;He subido la implementación completa a GitHub, incluyendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plantilla de CloudFormation completa&lt;/li&gt;
&lt;li&gt;Código de la función Lambda con tests&lt;/li&gt;
&lt;li&gt;Resumen del proyecto&lt;/li&gt;
&lt;li&gt;Documentos refinados para el desarrollo guiado por especificaciones para este proyecto (requirements.md, design.md, tasks.md)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repositorio: &lt;a href="https://github.com/pangoro24/aws-cloudformation-custom-resource-bpa-account/" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-cloudformation-custom-resource-bpa-account/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Los Custom Resources son una herramienta poderosa cuando necesitas extender CloudFormation más allá de sus capacidades nativas y cuando los cambios en la cuenta deben realizarse por infraestructura como código.&lt;br&gt;
Por otro lado, usar spec-driven development con Kiro realmente cambió mi forma de abordar proyectos y voy a probar en un proyecto más complejo la próxima vez.&lt;/p&gt;

&lt;p&gt;¿Has usado Custom Resources en tus proyectos? ¿Te gustaría que profundice en algún aspecto específico o que cubra otros casos de uso? Déjamelo saber en los comentarios.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudformation</category>
      <category>customresource</category>
      <category>kiro</category>
    </item>
    <item>
      <title>Mi experiencia con Kiro (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Tue, 26 Aug 2025 04:42:21 +0000</pubDate>
      <link>https://dev.to/pangoro24/mi-experiencia-con-kiro-59k7</link>
      <guid>https://dev.to/pangoro24/mi-experiencia-con-kiro-59k7</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;Hace unas semanas recibí la licencia para poder usar Kiro y como siempre ando buscando herramientas que me ayuden a ser más productivo (y que no me cuesten una fortuna), pensé que valía la pena darle una oportunidad ya que viniendo de AWS pensaría que sería un buen editor para alguien que trabaja a full en proyectos en la nube de AWS. &lt;/p&gt;

&lt;p&gt;Después de usarlo por un par de días trabajando en 2 proyectos, quería compartir mi experiencia REAL con ustedes.&lt;/p&gt;

&lt;p&gt;En este post les voy a contar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qué es Kiro y cómo puedes acceder a este editor&lt;/li&gt;
&lt;li&gt;Lo bueno, lo malo y lo que está en el medio&lt;/li&gt;
&lt;li&gt;Consejos si deciden probarlo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué es Kiro?
&lt;/h2&gt;

&lt;p&gt;Kiro es básicamente un editor como visual studio code con asistente de IA integrado que te ayuda con tareas de codificación y que fue desarrollado por el equipo de AWS. A la fecha, para acceder debes anotarte en una lista de espera. Acá el link al proyecto: &lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;https://kiro.dev/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que me gustó
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tiene capa gratuita
&lt;/h3&gt;

&lt;p&gt;El tier gratuito viene con una cantidad decente de requests. No es ilimitado, pero para proyectos personales y pruebas está bastante bien. Obviamente hay que ser estratégico con cómo lo usas, pero no me sentí limitado al principio. En el free tier, obtienes un bonus de 100 requests tipo vibe y 100 requests tipo spec y luego recibes 50 vibe requests mensualmente. El detalle del tipo de sesiones y requests está acá: &lt;a href="https://kiro.dev/docs/chat/vibe/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/chat/vibe/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude 4.0 como motor en el free tier
&lt;/h3&gt;

&lt;p&gt;Esto fue un game changer para mí. Las respuestas son coherentes y el código que genera generalmente funciona. &lt;/p&gt;

&lt;h3&gt;
  
  
  Asistencia para arrancar el proyecto usando Spec driven development
&lt;/h3&gt;

&lt;p&gt;En el mundo empresarial real, así es que se desarrollan los proyectos. No arrancas a escribir código sin tener claro los requisitos y este IDE ya viene con un modo nativo en el cual te ayuda a estructurar tu proyecto de esta manera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que no me gustó tanto
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hay que ser muy específico con los requests
&lt;/h3&gt;

&lt;p&gt;Aquí aprendí por las malas. Si no eres súper específico con lo que quieres, Kiro tiende a generar más código y archivos complementarios del necesario. Y como cada request cuenta para tu límite, esto se vuelve un problema si el objetivo es crear un proyecto grande y complejo.&lt;/p&gt;

&lt;p&gt;Por ejemplo, si le pides "ayúdame con esta función que haga tal cosa" y no le dices que sea minimalista, se pone a crear un archivo de clases, otro archivo de utils, y luego pruebas para todo eso, cuando yo sé que la funcionalidad era tan sencilla que no requiere tanta ingeniería. Claro, él está asumiendo que esto es un mega proyecto empresarial y que vas a crear docenas de funciones lambda que deben reutilizar código y debe estandarizar pero si no lo necesitas, pues debes avisarle antes de que empiece a crear cosas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Se pasa de la raya con los requerimientos
&lt;/h3&gt;

&lt;p&gt;Parecido al punto anterior, empezó a buscarle la quinta pata al gato y terminó armando una larga lista de requerimientos (historias de usuario). Para simplificar el proyecto decidí eliminar varios de ellos y tuve que aclararle que no los volviera a incluir, porque cada vez que añadía un requerimiento nuevo, reaparecían varios de los que ya había quitado. Al final, uno de los requerimientos terminó siendo justamente que no me agregara esos "otros requerimientos" que realmente no necesito.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requiere ajustes manuales
&lt;/h3&gt;

&lt;p&gt;Rara vez el código funciona al 100% en el primer intento o que siga una estructura agradable al ojo humano que es muy necesario para el futuro mantenimiento del proyecto. Desde la perspectiva de la IA, eso puede verse como algo negativo; pero desde el lado humano y profesional es positivo, porque demuestra que sin conocimientos técnicos, la IA por sí sola no es suficiente. Al menos por ahora, nuestro trabajo sigue siendo necesario.&lt;/p&gt;

&lt;h3&gt;
  
  
  Consume muchos requests
&lt;/h3&gt;

&lt;p&gt;Este fue mi mayor dolor de cabeza. Si no tienes cuidado, puedes quemar tu cuota mensual en unos pocos días. Cada consulta cuenta, y cuando estás en modo "debugging intensivo", los requests se van volando. Recomiendo hacer una prueba con un proyecto super simple para entender cómo funcionan las sesiones, ir revisando el consumo de requests y trabajar bajo el marco del spec-driven development antes de iniciar con un proyecto más grande que luego tengas que pagar de manera prematura el modo pro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Velocidad
&lt;/h3&gt;

&lt;p&gt;El agente no es el más rápido del mundo pero no es lento al punto de ser frustrante. Obvimente escribe código más rápido que yo y me permite enfocarme en orquestar los requerimientos del proyecto y resolver los problemas técnicos o de forma donde se estanca la IA. &lt;/p&gt;

&lt;h2&gt;
  
  
  Consejos en base a mi experiencia como usuario
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sean específicos&lt;/strong&gt;: Mientras más detallado sea su request, mejor será el resultado, menos iteraciones necesitarán, más rápido terminará las tareas y menos requests de refinamiento necesitarán.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Usen el contexto&lt;/strong&gt;: Kiro puede leer archivos de su proyecto. Aprovéchenlo para que entienda mejor lo que están solicitando. Pueden referenciar a otros archivos de sus proyectos previos para seguir un estándar en específico que ustedes desean que se aplique en el nuevo proyecto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Revisen todo&lt;/strong&gt;: Nunca asuman que el código generado está perfecto. Siempre hay algo que ajustar y probar antes de decir: terminé.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gestionen sus requests&lt;/strong&gt;: Mantengan un ojo en cuántos requests les quedan. Lo pueden ver desde el ícono de su perfil (esquina inferior izquierda).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Úsenlo para aprender&lt;/strong&gt;: Una de las mejores cosas es aprender esta nueva metodología de usar estos agentes de IA. Yo antes solo generaba un archivo markdown con las funcionalidades y algunos requesitos no funcionales pero la forma en la que lo sugiere Kiro, me pareció algo más estructurado.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Lo que falta
&lt;/h2&gt;

&lt;p&gt;La documentación podría ser mejor. Tuve que descubrir varias cosas por ensayo y error porque tampoco es que hay muchos posts, tutoriales o vídeos (y en español mucho más escaso). &lt;/p&gt;

&lt;p&gt;Sería genial ver más ejemplos de uso real y recomendaciones de otros usuarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Kiro es una herramienta útil si sabes cómo usarla y entiendes sus limitaciones.&lt;/p&gt;

&lt;p&gt;¿Lo recomiendo? Sí, especialmente si pueden aprovecharlo ahora que el tier gratuito es muy generoso. Solo no esperen magia - sigue siendo una herramienta que requiere un desarrollador que sepa qué está haciendo y necesitando.&lt;/p&gt;

&lt;p&gt;¿Han probado Kiro y tiene alguna experiencia o consejo que compartir? Me encantaría escuchar sus historias en los comentarios, especialmente si han encontrado formas creativas de maximizar el tier gratuito.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Remediación Automática con AWS Config y Systems Manager: Seguridad Proactiva en la Nube (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Tue, 19 Aug 2025 15:44:12 +0000</pubDate>
      <link>https://dev.to/pangoro24/remediacion-automatica-con-aws-config-y-systems-manager-seguridad-proactiva-en-la-nube-4pbi</link>
      <guid>https://dev.to/pangoro24/remediacion-automatica-con-aws-config-y-systems-manager-seguridad-proactiva-en-la-nube-4pbi</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdamc6vrwfc3ehfrev6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdamc6vrwfc3ehfrev6d.png" alt="Fuente: AWS blogs" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;¿Alguna vez te has despertado un día con un email o reporte del securityHub diciendo que hay x cantidad de buckets de S3 mal configurados que necesitan atención inmediata? En caso de que te permitan realizar remediaciones automáticas, este post es para ti. En este post les compartiré un sistema de remediación automática que combina AWS Config con Systems Manager (SSM) Automation.&lt;/p&gt;

&lt;p&gt;En este post estaré cubriendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qué es la remediación automática y por qué es importante&lt;/li&gt;
&lt;li&gt;Componentes principales y arquictura de la solución&lt;/li&gt;
&lt;li&gt;Demo con capturas reales del funcionamiento (y link al repo)&lt;/li&gt;
&lt;li&gt;Próximos pasos y conclusiones&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué es la remediación automática?
&lt;/h2&gt;

&lt;p&gt;La remediación automática es un proceso que detecta configuraciones que no cumplen con los lineamientos establecidos y corrige automáticamente, sin intervención manual. &lt;/p&gt;

&lt;p&gt;En lugar de solo alertar sobre problemas de configuración, el sistema los identifica y aplica las correcciones necesarias de forma inmediata. Esto representa un cambio de enfoque: de reactivo (detectar y alertar) a proactivo (detectar y corregir). &lt;/p&gt;

&lt;h2&gt;
  
  
  Arquitectura de la solución
&lt;/h2&gt;

&lt;p&gt;La solución implementa tres componentes principales de AWS que trabajan en conjunto:&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Config - el detective
&lt;/h3&gt;

&lt;p&gt;Monitorea continuamente la configuración de los recursos y ejecuta evaluaciones de cumplimiento. Utiliza una regla administrada por AWS o personalizada respaldada por Lambda.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Lambda - el analista
&lt;/h3&gt;

&lt;p&gt;Ejecuta la lógica de evaluación personalizada. La función analiza los recursos de interés, verifica su configuración de seguridad, y reporta el estado de cumplimiento (COMPLIANT/NON_COMPLIANT) a AWS Config.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Systems Manager Automation - el reparador
&lt;/h3&gt;

&lt;p&gt;Ejecuta las acciones de remediación cuando Config identifica recursos no conformes. Utiliza documentos de automatización que contienen los pasos específicos, como playbooks, para aplicar las configuraciones de seguridad requeridas.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo funciona el flujo completo?
&lt;/h2&gt;

&lt;p&gt;El proceso de remediación automática con una regla de Config períodica para evaluar y remediar buckets que no tiene configurado el bloqueo de acceso público sigue estos pasos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh977f03evoeyd90rnftt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh977f03evoeyd90rnftt.png" alt="Descripción de infra desplegada" width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Detección&lt;/strong&gt;: AWS Config ejecuta la regla personalizada cada cierta cantidad de cantidad horas, dependiendo la parametrización que definamos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evaluación&lt;/strong&gt;: La función Lambda recibe la lista de buckets y evalúa cada uno, verificando si tiene configurado el bloqueo de acceso público.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reporte&lt;/strong&gt;: Lambda reporta el estado de cumplimiento de cada recurso a AWS Config, marcándolos como COMPLIANT o NON_COMPLIANT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Activación&lt;/strong&gt;: Config identifica los recursos no conformes y activa el proceso de remediación automática. Esto puede tomar un par de segundos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remediación&lt;/strong&gt;: Systems Manager Automation ejecuta el documento que aplica las configuraciones de bloqueo de acceso público al bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verificación&lt;/strong&gt;: Config vuelve a evaluar el recurso, acorde a su periodicidad definida, para confirmar que ahora cumple con la política establecida y marcarlo como OMPLIANT.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Capturas del Demo
&lt;/h2&gt;

&lt;p&gt;Nada mejor que ver el sistema en acción. Te voy a mostrar exactamente lo que pasa cuando alguien (digamos, un desarrollador con prisa y en ese momento no había un control prevenentivo) crea un bucket sin las configuraciones de seguridad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escenario&lt;/strong&gt;: Creamos un bucket S3 sin configuración de bloqueo de acceso público.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr89szig5q02lpjfx5ryb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr89szig5q02lpjfx5ryb.png" alt="Bucket de prueba sin bloqueo de acceso público" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Estado Inicial - Bucket No Conforme
&lt;/h3&gt;

&lt;p&gt;AWS Config detecta esta configuración insegura de bucket y marca el recurso como NON_COMPLIANT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fava01jfovlwfz4qizi1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fava01jfovlwfz4qizi1z.png" alt="Recurso en incumplimiento" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Estado Intermedio - Bucket Corregido
&lt;/h3&gt;

&lt;p&gt;AWS Config activa automáticamente la remediación configurada. En la consola se puede observar el progreso de la ejecución del documento de Systems Manager en tiempo real.&lt;br&gt;
Después de la remediación automática, el bucket tiene correctamente configurado el bloqueo de acceso público. El recurso cambió de NON_COMPLIANT a COMPLIANT sin intervención manual.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xk6oknkdtjy3pruxmqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xk6oknkdtjy3pruxmqx.png" alt="Remediación aplicada" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Estado Final - Bucket marcado como Conforme
&lt;/h3&gt;

&lt;p&gt;En la próxima evaluación de la regla, el recurso que ya cumple con el lineamiento, es marcado como en cumplimiento. Este estado debe preservarse de allí en adelante siempre y cuando tengamos un control preventivo que evite que este tipo de configuraciones vuelvan a aplicarse o que alguien lo ajuste por consola.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35ezb8ftong1al2rg322.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35ezb8ftong1al2rg322.png" alt="Verificación" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Nota importante - Gastos relacionados:
&lt;/h2&gt;

&lt;p&gt;Para la implementación de esta solución, AWS Config debe estar habilitado en su cuenta. Para optimizar los costos, puede utilizar reglas periódicas que se activan cada cierto número de horas. De esta manera, no es necesario mantener el AWS Config Recorder activado continuamente, lo que puede generar gastos significativos.&lt;/p&gt;

&lt;p&gt;Si la necesidad es mantener un cumplimiento continuo, se requiere que el Recorder esté encendido. Este grabará cada cambio en los recursos, permitiendo configurar reglas de Config para que evalúen cada recurso que reciba modificaciones.&lt;/p&gt;

&lt;p&gt;Una estrategia para la optimización de costos es ajustar el alcance del Recorder, excluyendo tipos de recursos que no son críticos. Otra opción es modificar la periodicidad del Recorder a una evaluación diaria, lo cual captura una "instantánea" de la configuración. Sin embargo, esta opción no es aplicable a todos los tipos de recursos.&lt;/p&gt;

&lt;p&gt;A continuación, se detallan los costos asociados en los que podría incurrir al mantener el Recorder activado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0mtfxn8fjx4vf0zjgwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0mtfxn8fjx4vf0zjgwn.png" alt="Config-costos" width="667" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Dónde puedo ver el código completo?
&lt;/h2&gt;

&lt;p&gt;He subido la implementación completa a GitHub, incluyendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plantilla de CloudFormation con toda la infraestructura&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repositorio: &lt;a href="https://github.com/pangoro24/aws-public-buckets-auto-remediation" rel="noopener noreferrer"&gt;https://github.com/pangoro24/aws-public-buckets-auto-remediation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Próximos pasos
&lt;/h2&gt;

&lt;p&gt;Esta implementación es solo el comienzo. Puedes extender el concepto para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Otros recursos de AWS (EC2, RDS, ELB, etc.)&lt;/li&gt;
&lt;li&gt;Múltiples políticas de seguridad&lt;/li&gt;
&lt;li&gt;Integración con herramientas de notificación (sns,ses)&lt;/li&gt;
&lt;li&gt;Métricas y dashboards personalizados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;La implementación de remediación automática representa un cambio significativo en la gestión de seguridad en la nube, pasando de un enfoque reactivo a uno proactivo.&lt;/p&gt;

&lt;p&gt;La combinación de AWS Config, Lambda y Systems Manager crea un sistema robusto que no solo detecta configuraciones inseguras, sino que las corrige automáticamente, reduciendo el tiempo de exposición a riesgos y liberando recursos del equipo para tareas más estratégicas.&lt;/p&gt;

&lt;p&gt;Si estás cansado de pasar tus días arreglando configuraciones de seguridad, dale una oportunidad a esta solución. &lt;/p&gt;

&lt;p&gt;¿Ya tienes algo similar implementado? ¿Te gustaría que hable de otros casos de uso o que profundice en algún aspecto específico? Déjamelo saber en los comentarios - siempre me gusta escuchar experiencias de otros desarrolladores que han pasado por lo mismo.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/es/blogs/mt/remediate-noncompliant-aws-config-rules-with-aws-systems-manager-automation-runbooks/" rel="noopener noreferrer"&gt;https://aws.amazon.com/es/blogs/mt/remediate-noncompliant-aws-config-rules-with-aws-systems-manager-automation-runbooks/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>config</category>
      <category>systemsmanager</category>
    </item>
    <item>
      <title>Introducción a CloudFormation Hooks: Validación Proactiva para una Nube Segura (en español sencillo)</title>
      <dc:creator>Pablo Gonzalez Robles</dc:creator>
      <pubDate>Sun, 20 Jul 2025 18:27:08 +0000</pubDate>
      <link>https://dev.to/pangoro24/introduccion-a-cloudformation-hooks-validacion-proactiva-para-una-nube-segura-340f</link>
      <guid>https://dev.to/pangoro24/introduccion-a-cloudformation-hooks-validacion-proactiva-para-una-nube-segura-340f</guid>
      <description>&lt;p&gt;Hola comunidad,&lt;/p&gt;

&lt;p&gt;Hace unos días tuve la oportunidad de participar como speaker en el AWS Community Day Panamá 2025, donde presenté sobre CloudFormation Hooks. Luego de salir del evento, me puse a pensar que el contenido preparador sería bueno compartirlo al resto de la comunidad AWS de habla en español.&lt;/p&gt;

&lt;p&gt;Si trabajas con infraestructura como código y te interesa asegurar que tus despliegues cumplan con políticas personalizadas antes de crear recursos, este artículo es para ti. En  este post estaré revisando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qué son los CloudFormation Hooks
&lt;/li&gt;
&lt;li&gt;Diferencias entre Lambda Hooks y Guard Hooks
&lt;/li&gt;
&lt;li&gt;Cómo implementarlos
&lt;/li&gt;
&lt;li&gt;Y un demo con capturas (al final del post)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué son los CloudFormation Hooks?
&lt;/h2&gt;

&lt;p&gt;Los CloudFormation Hooks permite validar las propiedades de los recursos antes de que sean creados o modificados. Esto te da la oportunidad de aprobar o rechazar de manera automatizada dichos cambios según tus propios lineamientos de seguridad.&lt;/p&gt;

&lt;p&gt;Imagina que alguien del equipo intenta desplegar un bucket de S3 sin cifrado o sin bloquear el acceso público... Con un hook, puedes evitar que eso pase antes de que se cree el recurso. &lt;/p&gt;

&lt;p&gt;Los hooks son un mecanismo de control preventivo, lo que significa que nos permiten aplicar seguridad desde etapas tempranas del ciclo de vida de la infraestructura —es decir, "mover la seguridad a la izquierda". Esto trae beneficios significativos para la organización, ya que al evitar que se desplieguen recursos que luego tengamos que remediar, con lo cual evitamos retrabajos y evitamos costos innecesarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos de Hooks (2025): Lambda vs. Guard
&lt;/h2&gt;

&lt;p&gt;AWS ofrece dos tipos de hooks para CloudFormation:&lt;/p&gt;

&lt;h3&gt;
  
  
  Lambda Hook
&lt;/h3&gt;

&lt;p&gt;Este tipo de hook usa una función Lambda como backend de validación. Al ser lambda que es un tipo de recurso conocido por casi todos los que trabajamos en la nube, sabemos cómo configurarla y si necesitas realizar algún cambio, puedes ajustar fácilmente. Además puedes usar el lenguaje de programación de preferencia, puedes realizar multiples validaciones lo cual se entenderá fácilmente en tu script. Por último pero no menos importante, te puedes integrar fácilmente con otros servicios de AWS y poder extraer datos necesarios para realizar validaciones complejas. Sin embargo, debes considerar que a medida que creces con los hooks, puede que tengas que mantener docenas de lambdas y sus respectivos roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Guard Hook
&lt;/h3&gt;

&lt;p&gt;Este tipo de hook usa el lenguaje declarativo CloudFormation Guard, pensado para escribir reglas más fácilmente y de forma más declarativa. Es ideal para validaciones sencillas como validación de nombramientos, estado de propiedades (enabled / disabled), etc&lt;/p&gt;

&lt;p&gt;Desde mi experiencia, recomiendo comenzar directamente con los Lambda Hooks, ya que con el tiempo los lineamientos de seguridad tienden a volverse más numerosos y complejos. En esos casos, usar lenguajes como Python o JavaScript facilita mucho entender y mantener cada validación que se desea aplicar. Además, al tratarse de funciones Lambda, es posible crear pruebas unitarias de forma sencilla para validar la lógica de negocio antes de desplegar una nueva versión del hook, lo que mejora la calidad y confiabilidad del proceso.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo funcionan los hooks?
&lt;/h2&gt;

&lt;p&gt;Directamente del blog post de AWS que fue publicado no hace mucho (abril 2025)donde se valida el runtime de una función lambda, te lo explico en palabras sencillas:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlsgfalnaopljf1vofxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlsgfalnaopljf1vofxk.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Un desarrollador intenta desplegar una plantilla de CloudFormation que incluye una o varias funciones Lambda.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation activa un Lambda Hook, que está configurado para revisar cada uno de los recurso de tipo Lambda::Function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La lógica de evaluación corre dentro de la lambda y se realiza los llamados a otros recursos de AWS en caso de ser necesario&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La función retorna el resultado de la evaluación en el campo "hookStatus". SUCCESS si el recurso cumple o FAILED si el recurso está en incumplimiento.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Si el hook responde con FAILED, se detiene el despliegue del stack. Por el contrario, CloudFormation continúa con la creación o actualización de dicho recurso.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ¿Dónde puedo ver un ejemplo real?
&lt;/h2&gt;

&lt;p&gt;He subido un demo completo a GitHub, con ejemplos de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lambda Hook que impide crear buckets de S3 sin bloqueo de acceso público
&lt;/li&gt;
&lt;li&gt;Guard Hook que impide crear buckets de S3 sin bloqueo de acceso público  (a modo demostrativo ya que no es mi favorito) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repositorio:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/pangoro24/awsdaypa2025-sec" rel="noopener noreferrer"&gt;https://github.com/pangoro24/awsdaypa2025-sec&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Capturas del Demo
&lt;/h2&gt;

&lt;p&gt;Abajo te dejo algunas capturas donde podrás ver los hooks en acción.&lt;/p&gt;

&lt;p&gt;Escenario: El bucket a desplegar no tiene la propiedad "PublicAccessBlockConfiguration" debidamente configurada, y por ende, el resultado de la evaluación es que el recurso no cumple y por ende, el stack falla su tarea de despliegue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuweai10zfg9n38rxumn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuweai10zfg9n38rxumn.png" alt=" " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por el otro lado, si el bucket tiene la propiedad "PublicAccessBlockConfiguration" debidamente configurada, el resultado de la lambda es SUCCESS y por ende, se le permite a cloudformation desplegar el recurso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi7x991tqz207gye5s8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi7x991tqz207gye5s8g.png" alt=" " width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;CloudFormation Hooks son una herramienta increíble si estás buscando aplicar control proactivo sobre tus despliegues. Dale una mirada al repositorio y empieza a experimentar.&lt;/p&gt;

&lt;p&gt;¿Ya usaste CloudFormation Hooks en tu organización? ¿Te gustaría que hablemos más de los hooks en otro post u otro tema de seguridad en la nube de la AWS?, cuéntamelo en los comentarios.&lt;/p&gt;

&lt;p&gt;Gracias por leer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/lambda-hooks-create-lambda-function.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/lambda-hooks-create-lambda-function.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-lambdahook.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-lambdahook.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/es/blogs/devops/validate-your-lambda-runtime-with-cloudformation-lambda-hooks/" rel="noopener noreferrer"&gt;https://aws.amazon.com/es/blogs/devops/validate-your-lambda-runtime-with-cloudformation-lambda-hooks/&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ☁️ Acerca del autor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pablo González Robles&lt;/strong&gt;&lt;br&gt;
Especialista en seguridad en la nube con más de 5 años de experiencia y 4 certificaciones de AWS. Escribo sobre AWS, Ciberseguridad y Automatización. Compartiendo estrategias para la gestión y remediación de vulnerabilidades en AWS. &lt;br&gt;
Podemos conectar a través de: &lt;a href="https://www.linkedin.com/in/pablo-gonzalez-robles/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudformation</category>
      <category>hook</category>
      <category>config</category>
    </item>
  </channel>
</rss>
