Blog de Amazon Web Services (AWS)

Automatización de VPC Flow Logs utilizando Eventos de ciclo de vida de AWS Control Tower.

Automatización de VPC Flow Logs utilizando Eventos de ciclo de vida de AWS Control Tower.

 

Por Welly Siauw, Senior Partner Solutions Architect at AWS.

 

Muchos clientes con los que trabajamos utilizan los Amazon VPC Flow Logs para fines de monitoreo, resolución de problemas, detección de anomalías o para propósitos de archivo. Una pregunta común de los clientes es cómo automatizar y centralizar los VPC Flow Logs en un entorno de varias cuentas. AWS Control Tower proporciona un registro centralizado utilizando AWS CloudTrail y AWS Config en entornos de múltiples cuentas.

En esta publicación veremos cómo automatizar y centralizar los VPC Flow Logs en su entorno de múltiples cuentas de AWS Control Tower. Con esta solución, puede administrar los VPC Flow Logs en varias cuentas de una manera automática y con verificación de coherencia periódica.

 

Sobre este blog post
Tiempo de Lectura 10 min.
Tiempo de despliegue ~15 min.
Costo

Los recursos desplegados en esta solución están cubiertos en la Capa gratuita de AWS.

Consulte la página de precios de CloudWatch para conocer el costo de entrega de Flow Logs de la VPC.

Nivel Advanced (300)
Servicios de AWS AWS Control Tower
AWS CloudFormation
Amazon Virtual Private Cloud (VPC)
Amazon Simple Storage Service (Amazon S3)
Amazon CloudWatch Events
Amazon EventBridge
AWS Lambda

 

Resumen de la solución

AWS Control Tower configura el almacenamiento centralizado de Logs en la cuenta Log Archive. En esta solución, puede utilizar la cuenta de Log Archive u otra cuenta, por ejemplo, una cuenta de Servicios Compartidos (Shared Services account) como destino.
Llamaremos Cuenta Hub a la cuenta donde se creará un bucket de Amazon S3 para almacenar los Logs.

Cada propietario de cuenta puede tener diferentes filtros de VPC Flow Logs por cada VPC. Por ejemplo: registre todo el tráfico en una VPC de producción y registre el tráfico rechazado en una VPC de desarrollo. La solución utiliza Tags para cada filtro de VPC Flow Logs. Cuando se agrega el Tag predefinido a las VPC o Subredes, la acción genera eventos de CloudWatch con la información del Tag incluido. Esta solución utiliza Amazon EventBridge para enviar los eventos desde la cuenta de origen a la cuenta Hub. Cuando el evento llega a Event Bus en la cuenta Hub, se activa una función de AWS Lambda. Esta función utiliza la entrada del Tag del evento y modifica el filtro VPC Flow Logs en la cuenta de origen en consecuencia.

Para garantizar que todas las cuentas nuevas generadas desde AWS Control Tower Account Factory se beneficien de esta automatización, la solución utiliza eventos del ciclo de vida de AWS Control Tower (AWS Control Tower lifecycle events) para desplegar la infraestructura requerida después de que la nueva cuenta esté completamente aprovisionada. Todos los recursos necesarios en esta solución se implementan mediante AWS CloudFormation Stacks y AWS CloudFormation StackSets desde la cuenta Management en AWS Control Tower.

El siguiente diagrama ilustra el proceso de automatización de Flow Logs de VPC:

 

 

  1. La creación de una nueva cuenta, activa el evento del ciclo de vida de AWS Control Tower, que invoca la función Lifecycle Lambda.
  2. El nuevo id de la cuenta se verifica y se agrega a las instancias existentes de CloudFormation StackSets.
  3. CloudFormation StackSets implementará las reglas de EventBridge, Event Bus y la función FlowLogActivator Lambda.
  4. Crear o actualizar el Tag en la VPC que generará los eventos de CloudWatch con información de etiqueta incluida.
  5. La regla de EventBridge en la nueva cuenta reenvía el evento a Event Bus en la cuenta Hub.
  6. La regla de EventBridge en la cuenta Hub activa la función FlowLogActivator Lambda.
  7. La función Lambda asume un rol en la nueva cuenta y configura los VPC Flow Logs.
  8. Los VPC Flow Logs almacenan en un bucket de Amazon S3 predefinido en la cuenta Hub.

 

Prerrequisitos

Estos son los requisitos previos antes de implementar la solución.

  1. Asumimos que ya tiene una versión funcional de AWS Control Tower. Si no, siga la publicación del blog del tutorial de Jeff Barrpara obtener su primera configuración de AWS Control Tower.
  2. Id de la cuenta Management y el Id de la cuenta Hub. La cuenta Hub puede ser la cuenta de Log Archive existente u otra cuenta administrada por AWS Control Tower.
  3. Id de la Organización de AWS (formato: o-text), que se puede encontrar en la pestaña de configuración de la consola de la organización de AWS
  4. Id de cuenta de AWS que desea incluir en la implementación. Tenga en cuenta que la cuenta Management debe excluirse.

Despliegue de la Automatización.

El primer paso, construye la infraestructura para esta automatización en las cuentas existentes. Para implementar esto en varias cuentas y regiones, utilizará AWS CloudFormation StackSets.

  1. Inicie sesión en la cuenta Management de AWS Control Tower y seleccione la región de AWS donde se implementa AWS Control Tower.
  2. En la consola de AWS CloudFormation StackSets, ingrese la URL de Amazon S3:

https://s3.amazonaws.com/marketplace-sa-resources-ct-us-east-1/ct_vpc_flowlog_stackset.yml

  1. Ingrese el nombre de StackSets, por ejemplo, ‘CT-FlowLog’
  2. En la sección Parámetrosingrese los siguientes parámetros:
    • ComplianceFrequency= frecuencia para verificar el cumplimiento de los Flow Logs, debe ser un valor entre 2 y 168 horas.
    • EventBusDestinationAccount= Id de cuenta de Hub.
    • EventBusName= “FlowLog-EventBus” u opcionalmente ingrese el nombre del bus de eventos.
    • FlowLogBucketName= Seleccione un nombre único para el Bucket S3 que almacenará los logs. Sugerencia: incorpore el ID de la cuenta en el nombre del Bucket, es decir: flowlog
    • FlowLogDestinationAccount= Id de cuenta de Hub.
    • MasterAccount= Id de cuenta Management del requisito previo anterior.
    • MasterRegion= Id de Región AWS donde se implementó AWS Control Tower.
    • OrgId= Id de Organización de AWS.
    • StackSetName= ingrese el nombre del StackSets como en el paso anterior, es decir, ‘CT-FlowLog’
  1. En la sección Permissions, elija Self-Service Permissions ingrese la siguiente configuración:
    • IAM role name: seleccione AWSControlTowerStackSetRole
    • IAM execution role name: AWSControlTowerExecution

 

  1. En la sección Accounts:
    • Seleccione: Deploy stacks in accounts
    • Proveer una lista delimitada por comas de los IDs de cuentas que desea incluir. Importante:asegúrese de incluir en la lista de IDs, la cuenta Hub.
  2. En la sección Specify Regions, seleccione las regiones de AWS donde desea implementar la automatización.
  3. En la página Review, valide todos los parámetros y configuraciones. No olvide seleccionar la casilla de verificación: I acknowledge that AWS CloudFormation might create IAM resource with custom names. Cuando esté listo, seleccione Submit.
  4. Navegue a la pestaña de información de StackSets y tome nota del ARN del StackSet. Lo necesitará en el siguiente paso.

 

Configurar el evento del ciclo de vida (Lifecycle Event)

En el paso anterior, se implementó la automatización para cubrir las cuentas existentes. Ahora, se configurará la automatización para las cuentas futuras mediante el evento del ciclo de vida (Lifecycle Event) de AWS Control Tower.

  1. Inicie una sesión en la cuenta Management de AWS Control Tower y seleccione la región de AWS donde se a implementado AWS Control Tower.
  2. Utilice esta URL de acceso directopara iniciar el Stack y seleccione Next.
  3. En la página Specify stack details, asigne un nombre como «CT-FlowLog-LifeCycle».
  4. En la sección Parameters ingrese los siguientes parámetros:
    • EventBusDestinationAccount = ID de cuenta de Hub.
    • OrgId= valor de ID de organización de AWS.
    • StackSetArn= ARN del StackSet del paso 9 de la sección anterior.
  5. En la página Configure stack options, puede optar por agregar Tags y otras opciones. Elija Nextpara continuar.
  6. En la página Review, valide sus parámetros y finalmente seleccione Create Stack.

Probando la solución

Una vez que se haya completado la configuración los VPC Flow Logs y el ciclo de vida de AWS Control Tower, ya está listo para probarlo.

  1. Inicie una sesión en cualquiera de las cuentas que se incluyeron anteriormente en el StackSet. Asegúrese de que la sesión de la consola esté en la región de AWS que fue incluida.
  2. Navegue a la consola de VPC. En la sección Your VPCs, seleccione la VPC que desea probar.
  3. Vaya a la pestaña Tagsy seleccione Manage tags. Seleccione Add new tag e introduzca la siguiente combinación de Key-Value:
    • Key = flowlog
    • Value = ACCEPT
  4. Seleccione Savepara confirmar. Espere unos segundos y vaya a la pestaña Flow logs. Debería encontrar que los nuevos Flow Logs están configurados. Puede experimentar modificando las etiquetas con diferentes combinaciones, por ejemplo ALL o REJECT.
  5. Ahora intentemos agregar otro Flow Log a nivel de subred. En la sección Subnets, seleccione la subred que desea probar.
  6. Vaya a la pestaña Tagsy seleccione Manage tags. Seleccione Add new tag e introduzca la siguiente combinación de de Key-Value:
    • Key = flowlog
    • Value = REJECT
  7. Seleccione Savepara confirmar. Espere unos segundos y vaya a la pestaña Flow logs. Debería encontrar el segundo Flow Log configurado ahora.

Nota: Recuerde, el bucket de Amazon S3 es propiedad de la cuenta Hub. Si desea acceder a los registros (Logs) sin procesar, primero debe iniciar sesión en la cuenta Hub.

Con esto concluye la prueba, si implementó esta automatización en varias regiones de AWS, continúe y pruébela para cada región siguiendo los pasos anteriores. Si planea crear una nueva cuenta en AWS Control Tower, consulte el paso de aprovisionamiento rápido de cuentas. Luego, ejecute la prueba siguiendo los pasos que preceden después de que la cuenta esté completamente aprovisionada.

Personalización opcional

El Flow Logs de Amazon VPC admite tres tipos de filtro: Todos, Aceptados y Rechazados (All, Accepted, Rejected). La función Lambda en la cuenta Hub está programada para aceptar combinaciones de clave de etiqueta y par de valores, como se muestra a continuación.

 

Filter Mode Tag key Tag value
All flowlog, flow-log, flow_log, FlowLog, Flow-Log, Flow_Log all, full, enable, active, true, yes
Accepted accept, pass, allow
Rejected reject, deny, block

 

Como pasos opcionales, puede modificar la plantilla existente para que coincida con la combinación key-value del tag según los requisitos de su organización.

Abra el archivo de plantilla ct_vpc_flowlog_stackset.yml con el editor de texto.

Busque los mappings de AWS CloudFormation para LambdaVariable>Tag

Para modificar la key del tag, agregue o elimine el valor de KeyListy Keypara que coincida con su requisito.

Guarde el archivo de plantilla.

Actualice los StackSets utilizando el nuevo archivo de plantilla, ingrese el mismo parámetro que antes.

Limpieza

Para evitar incurrir en cargos futuros, se puede eliminar los recursos de la solución eliminando el Stack y los StackSets de la consola de AWS CloudFormation.

Para eliminar la configuración del ciclo de vida (Lifecycle Event), siga la guía para eliminar el Stack que creó en el paso 2.

Para eliminar la configuración VPC Flow Logs, primero debe eliminar las instancias del Stack y luego eliminar los StacksSets

La eliminación del Stack y los StackSets no elimina los Flow Logs existentes que configuró anteriormente.

Finalmente, el Bucket S3 en la cuenta de Hub se retiene de forma predeterminada, no olvide eliminar este depósito si ya no lo necesita.

Conclusión

En esta publicación de blog, demostramos cómo automatizar la configuración de VPC Flow Logs en un entorno de varias cuentas mediante EventBridge y AWS Lambda para la orquestación. También mostramos cómo extender el ciclo de vida (Lifecycle Event) de AWS Control Tower para automatizar la configuración durante el aprovisionamiento de cuentas. Finalmente, proporcionamos un ejemplo sobre cómo personalizar las etiquetas (Tags) según el estándar de su organización.

Para ampliar esta solución, considere incorporar la plantilla de ejemplo con otra personalización y empaquetarla como una solución. Para obtener más información, consulte personalizaciones de AWS Control Tower.

 

GitHub Repository:
https://github.com/aws-samples/aws-ct-vpc-flowlogs

 

Este artículo fue traducido del Blog de AWS en Inglés

 


Sobre los autores

Welly Siauw es Senior Partner Solutions Architect en AWS. Welly disfruta trabajar con los clientes de AWS para resolver desafíos arquitectónicos, operativos y de optimización de costos.