Genere una CloudFormation plantilla de AWS que contenga las reglas administradas por AWS Config mediante Troposphere - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Genere una CloudFormation plantilla de AWS que contenga las reglas administradas por AWS Config mediante Troposphere

Creado por Lucas Nation (AWS) y Freddie Wilson (AWS)

Entorno: producción

Tecnologías: DevOps gestión y gobierno; seguridad, identidad y cumplimiento

Carga de trabajo: Microsoft; código abierto

Servicios de AWS: AWS Config; AWS CloudFormation

Resumen

Muchas organizaciones utilizan las reglas administradas de AWS Config para evaluar la conformidad de sus recursos de Amazon Web Services (AWS) con respecto a las prácticas recomendadas habituales. Sin embargo, el mantenimiento de estas reglas puede llevar mucho tiempo y este patrón lo ayuda a aprovechar Troposphere, una biblioteca de Python, para generar y administrar reglas administradas por AWS Config.

El patrón le ayuda a administrar las reglas administradas por AWS Config mediante un script de Python para convertir una hoja de cálculo de Microsoft Excel que contiene reglas administradas por AWS en una CloudFormation plantilla de AWS. Troposphere actúa como infraestructura como código (IaC), lo que significa que puede actualizar la hoja de cálculo de Excel con reglas administradas en lugar de utilizar un archivo con formato JSON o YAML. A continuación, utilice la plantilla para lanzar una CloudFormation pila de AWS que cree y actualice las reglas administradas en su cuenta de AWS.

La CloudFormation plantilla de AWS define cada regla gestionada por AWS Config mediante la hoja de cálculo de Excel y le ayuda a evitar la creación manual de reglas individuales en la consola de administración de AWS. El script establece de forma predeterminada los parámetros de cada regla administrada en un diccionario vacío y los ComplianceResourceTypes valores predeterminados del ámbito son. THE_RULE_IDENTIFIER.template file Para obtener más información sobre el identificador de la regla, consulte Creación de reglas administradas de AWS Config con CloudFormation plantillas de AWS en la documentación de AWS Config.

Requisitos previos y limitaciones

Requisitos previos

  • Una cuenta de AWS activa.

  • Familiaridad con el uso de CloudFormation plantillas de AWS para crear reglas administradas de AWS Config. Para obtener más información al respecto, consulte Creación de reglas administradas de AWS Config con CloudFormation plantillas de AWS en la documentación de AWS Config.  

  • Python 3, instalado y configurado. Para obtener más información, consulte la Documentación de Python.

  • Un entorno de desarrollo integrado (IDE) existente, como AWS Cloud9. Para obtener más información, consulte ¿Qué es AWS Cloud9? en la documentación de AWS Cloud9. 

  • Identifique sus unidades organizativas (UO) en una columna de la hoja de cálculo de Excel de muestra excel_config_rules.xlsx (adjunta).

Epics

TareaDescripciónHabilidades requeridas
Actualice la hoja de cálculo de Excel de muestra.

Descargue la hoja de cálculo de Excel de muestra excel_config_rules.xlsx (adjunta) y etiquétela como Implemented con las reglas administradas de AWS Config que desee usar. 

Las reglas marcadas como se Implemented añadirán a la CloudFormation plantilla de AWS.

Desarrollador
(Opcional) Actualice el archivo config_rules_params.json con los parámetros de las reglas de AWS Config.

Algunas reglas administradas por AWS Config requieren parámetros y deben pasarse al script de Python como un archivo JSON mediante la opción --param-file. Por ejemplo, la regla administrada access-keys-rotated usa el siguiente parámetro maxAccessKeyAge:

{ "access-keys-rotated": { "InputParameters": { "maxAccessKeyAge": 90 } } }

En este parámetro de ejemplo, maxAccessKeyAge se establece en 90 días. El script lee el archivo de parámetros y añade cualquier InputParameters que encuentra.

Desarrollador
(Opcional) Actualice el archivo config_rules_params.json con AWS Config. ComplianceResourceTypes

De forma predeterminada, el script de Python recupera ComplianceResourceTypes de las plantillas definidas por AWS. Si desea anular el ámbito de una regla gestionada por AWS Config específica, debe pasarla al script de Python como un archivo JSON mediante la opción --param-file.

Por ejemplo, el siguiente código de ejemplo muestra cómo el ComplianceResourceTypes para ec2-volume-inuse-check se establece en la lista ["AWS::EC2::Volume"]:

{ "ec2-volume-inuse-check": { "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Volume" ] } } }
Desarrollador
TareaDescripciónHabilidades requeridas
Instalar los paquetes pip desde el archivo requirements.txt.

Descargue el archivo requirements.txt (adjunto) y ejecute el siguiente comando en su IDE para instalar los paquetes de Python:

pip3 install -r requirements.txt

Desarrollador
Ejecute el script de Python.
  1. Descargue el archivo aws_config_rules.py (adjunto) en el equipo local.

  2. Ejecute el comando - python3 aws_config_rules.py --ou <OU_NAME>. Nota: --ou Define qué columna de OU elegir en la hoja de cálculo de Excel.

También puede incluir los siguientes parámetros opcionales:

  • --config-rule-option: define las reglas a elegir de la hoja de cálculo de Excel. El parámetro determinado es Implemented.

  • --excel-file: la ruta de la hoja de cálculo de Excel. El valor predeterminado es aws_config_rules.xlsx.

  • --param-file: la ruta del archivo JSON de parámetros. El valor predeterminado es config_rules_params.json.

  • --max-execution-frequency: define la frecuencia con la que se evalúan las reglas administradas de AWS Config. Las opciones son One_Hour, Three_Hours, Six_Hours, Twelve_Hours o TwentyFour_Hours. El valor predeterminado es TwentyFour_Hours.

Desarrollador
TareaDescripciónHabilidades requeridas
Lance la CloudFormation pila de AWS.
  1. Inicie sesión en la consola de administración de AWS, abra la CloudFormation consola de AWS y, a continuación, elija Create stack.

  2. En la página Especificar plantilla, elija Cargar un archivo de plantilla y, a continuación, cargue su CloudFormation plantilla de AWS. 

  3. Especifique el nombre de la pila y elija Next (Siguiente).

  4. Especifique las etiquetas y, a continuación, elija Next (Siguiente).

  5. Seleccione Crear pila.

Desarrollador

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip