AWS Config: regla de Lambda personalizada

aws config

AWS Config: regla de Lambda personalizada para identificar los depósitos que tienen habilitada la configuración de sitio web estático

AWS Config es una herramienta de configuración que lo ayuda a evaluar, auditar y evaluar las configuraciones y relaciones de sus recursos.

En este artículo, crearemos una regla lambda personalizada de AWS Config para comprobar si los depósitos han configurado el sitio web estático.

He usado el kit de desarrollo de reglas (RDK) para crear la regla. puede configurar RDK en su sistema consultando el siguiente enlace:

https://rdk.readthedocs.io/en/latest/getting_started.html

Para configurar el sitio web estático, consulte el siguiente blog:

https://awstip.com/amazon-s3-hosting-a-static-website-660a0cc3d906

RDK es una herramienta con la que puede crear reglas lambda personalizadas para AWS Config. Es muy fácil de configurar y usar. Configura todas las cosas requeridas para su regla, como crear el permiso lambda, etc.

¡Empecemos!


Supongo que ya ha instalado el RDK en su sistema. Estoy usando el editor de Visual Studio Code para escribir la regla.

Primero inicialicemos el RDK usando el siguiente comando en la terminal:

rdk init

Obtendrá el siguiente resultado:

Este comando crea el rol de IAM requerido para la función Lambda y los depósitos para almacenar los datos de configuración de AWS como se menciona en la captura de pantalla.

Ahora, creemos la regla llamada s3-website-configuration-check usando el siguiente comando:

rdk create s3-website-configuration-ckeck --runtime python3.8 --resource-types AWS::S3::Bucket

En este comando, mencioné el tiempo de ejecución de Lambda como python3.8 y el tipo de recurso como depósito S3.

Ahora, abra la carpeta de la regla creada en el código VS. Se observará la siguiente estructura de carpetas, en las cuales se crearán inicialmente tres archivos:

El archivo settings.json contiene los parámetros predeterminados y los parámetros definidos por el usuario, si los hay. Otro archivo es el archivo de prueba en el que escribe el código para la prueba unitaria si es necesario, y el otro archivo es el archivo en el que escribiremos la lógica de nuestra función lambda. Este archivo contiene código predeterminado necesario para ejecutar la función lambda. Aquí escribiremos la lógica de la regla comprobando los cubos configurados con el sitio web estático.

Abra el archivo s3-website-configuration-check.py. Encontrará un código predeterminado aquí.

Ahora, busque la función evaluate_compliance. Aquí escribiremos nuestra lógica:

Escribe el siguiente código en esta función:

if configuration_item['resourceType'] != "AWS::S3::Bucket":

return "NOT_APPLICABLE"

websiteConfigured = configuration_item['supplementaryConfiguration'].get('BucketWebsiteConfiguration')

if websiteConfigured == None:
return 'COMPLIANT'

return "NON_COMPLIANT"

Este código verifica la regla solo para depósitos S3 y coloca los depósitos en NON_COMPLIANT si el sitio web estático está configurado en él.

Ejecute el siguiente comando para implementar la regla:

rdk deploy s3-website-configuration-ckeck

Esto implementará su regla usando Cloud Formation en AWS creando una función lambda y una regla en AWS Config.

AWS Config

Ahora, redirija a AWS Config y podrá ver que la regla se crea con algún Compliance:

AWS Config

Como tengo un depósito configurado con un sitio web estático, muestra 1 recurso(s) no conforme(s). Si desea obtener más información sobre los recursos, haga clic en la regla. Obtendrá una lista de todos los recursos que cumplen o no cumplen al seleccionar Todos en Recursos en el alcance.

AWS Config

Puede ver que uno de los depósitos configurados con un sitio web estático se muestra como No conforme y los depósitos restantes se muestran como Conformes.

¡Eso es!


Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel:

Recent Post