Reglas personalizadas de AWS Config - AWS Config

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.

Reglas personalizadas de AWS Config

Las reglas personalizadas de AWS Config son reglas que se crean desde cero. Hay dos formas de crear reglas personalizadas de AWS Config: con las funciones de Lambda (Guía para desarrolladores de AWS Lambda) y con Guard (Guard GitHub Repository), un lenguaje de políticas como código.

Las reglas personalizadas de AWS Config creadas con Lambda se denominan reglas de Lambda personalizadas de AWS Config y las reglas personalizadas de AWS Config creadas con Guard se denominan reglas de políticas personalizadas de AWS Config.

Reglas de políticas personalizadas de AWS Config

Las reglas escritas con Guard se pueden crear desde la consola de AWS Config o mediante las API de reglas de AWS Config. Las reglas de políticas personalizadas de AWS Config le permiten crear reglas personalizadas de AWS Config sin necesidad de usar Java o Python para desarrollar funciones de Lambda para administrar sus reglas personalizadas. Las reglas de políticas personalizadas de AWS Config se inician mediante cambios de configuración. Para obtener más información acerca de Guard, consulte el repositorio de GitHub de Guard.

Reglas de Lambda personalizadas de AWS Config

Las reglas de Lambda personalizadas ofrecen la opción de usar Java o Python para crear una función de Lambda para una regla personalizada de AWS Config. Una función de Lambda es un código personalizado que se carga en AWS Lambda y que invocan los eventos que se publican en él mediante un origen de eventos. Si la función de Lambda se asocia a una regla de AWS Config, AWS Config la invoca cuando se desencadena la regla. A continuación, la función de Lambda evalúa la información de configuración enviada por AWS Config y devuelve los resultados de la evaluación. Para obtener más información sobre las funciones de Lambda, consulte Function and Event Sources en la Guía para desarrolladores de AWS Lambda.

importante

Evite las evaluaciones innecesarias de reglas de Lambda de AWS Config personalizadas

Al crear reglas de Lambda de AWS Config personalizadas, se recomienda encarecidamente añadir lógica para gestionar la evaluación de los recursos eliminados.

Cuando los resultados de la evaluación se identifiquen como NOT_APPLICABLE, significa que se eliminarán y depurarán. Si NO están marcados como NOT_APPLICABLE, los resultados de la evaluación permanecerán sin cambios hasta que se elimine la regla, lo que puede provocar un aumento inesperado en la creación de elementos de configuración (CI) para ResourceCompliance al eliminar la regla.

Para obtener información sobre cómo configurar reglas de Lambda de AWS Config personalizadas para devolver NOT_APPLICABLE para los recursos eliminados, consulte Managing deleted resources with AWS Config custom lambda rules.

Nota: las reglas de política personalizadas de AWS Config gestionan este comportamiento de forma predeterminada.

nota

Número elevado de invocaciones de funciones de Lambda

Las reglas de Lambda personalizadas de AWS Config pueden provocar un número elevado de invocaciones de funciones de Lambda si la regla no se limita a uno o más tipos de recursos. Para evitar el aumento de la actividad asociada a su cuenta, proporcione recursos dentro del alcance de sus reglas de Lambda personalizadas. Si no selecciona ningún tipo de recurso, la regla invocará la función de Lambda para todos los recursos de la cuenta.

Tipos de disparadores

Después de añadir una regla a la cuenta, AWS Config compara sus recursos con las condiciones de la regla. Después de esta evaluación inicial, AWS Config continúa realizando evaluaciones cada vez que se activa una. Los disparadores de evaluaciones están definidos como parte de la regla y pueden incluir los siguientes tipos:

Cambios de configuración

AWS Config ejecuta evaluaciones de la regla cuando hay un recurso que coincide con el alcance de la regla y hay un cambio en la configuración del recurso. La evaluación se realiza después de que AWS Config envía una notificación sobre un cambio de elementos de configuración.

Usted elige qué recursos activan la evaluación al definir el ámbito de la regla. El ámbito puede incluir lo siguiente:

  • Uno o varios tipos de recursos

  • Una combinación de un tipo de recurso y un ID de recurso

  • Una combinación de una clave de etiqueta y un valor

  • Cuando se crea, se actualiza o se elimina cualquier recurso registrado

AWS Config ejecuta la evaluación cuando detecta un cambio en un recurso que coincide con el ámbito de la regla. Puede utilizar el ámbito para definir los recursos que activan evaluaciones.

Periódico

AWS Config ejecuta evaluaciones de la regla con la frecuencia que elija (por ejemplo, cada 24 horas).

Híbrido

Algunas reglas tienen cambios de configuración y desencadenadores periódicos. En el caso de estas reglas, AWS Config evalúa los recursos cuando detecta un cambio de configuración y también con la frecuencia que especifique.

Modos de evaluación

Hay dos modos de evaluación para las reglas de AWS Config:

Proactiva

Utilice una evaluación proactiva para evaluar los recursos antes de que se implementen. De este modo, podrá evaluar si un conjunto de propiedades de un recurso, si se utiliza para definir un recurso de AWS, es COMPLIANT o NON_COMPLIANT dado el conjunto de reglas proactivas que tiene en su cuenta en su región.

Para obtener más información, consulte Modos de evaluación. Para obtener una lista de las reglas administradas que admiten la evaluación proactiva, consulte Lista de reglas de AWS Config administradas por modo de evaluación.

nota

Las reglas proactivas no corrigen los recursos que están marcados como NON_COMPLIANT ni impiden su implementación.

Detectives

Utilice la evaluación de detectives para evaluar los recursos que ya se han implementado. Esto le permite evaluar los ajustes de configuración de los recursos existentes.

Administración de los recursos eliminados con reglas de Lambda personalizadas de AWS Config

Las reglas que informen sobre los recursos eliminados deben devolver el resultado de la evaluación de NOT_APPLICABLE para evitar evaluaciones innecesarias de las reglas.

Al eliminar un recurso, AWS Config crea un configurationItem con ResourceDeleted para el configurationItemStatus. Puede utilizar estos metadatos para comprobar si una regla informa sobre un recurso eliminado. Para obtener más información sobre los elementos de configuración, consulte Conceptos | Elementos de configuración.

Incluye los siguientes fragmentos de código para comprobar si hay recursos eliminados y establece el resultado de la evaluación de una regla de Lambda personalizada de AWS Config en NOT_APPLICABLE si informa sobre un recurso eliminado:

Custom Lambda Rules (Node.js)
// Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. function isApplicable(configurationItem, event) { checkDefined(configurationItem, 'configurationItem'); checkDefined(event, 'event'); const status = configurationItem.configurationItemStatus; const eventLeftScope = event.eventLeftScope; return (status === 'OK' || status === 'ResourceDiscovered') && eventLeftScope === false; }
Custom Lambda Rules (Python)
# Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. def is_applicable(configurationItem, event): try: check_defined(configurationItem, 'configurationItem') check_defined(event, 'event') except: return True status = configurationItem['configurationItemStatus'] eventLeftScope = event['eventLeftScope'] if status == 'ResourceDeleted': print("Resource Deleted, setting Compliance Status to NOT_APPLICABLE.") return (status == 'OK' or status == 'ResourceDiscovered') and not eventLeftScope
nota

Las reglas de AWS Config administradas y las reglas de políticas personalizadas de AWS Config controlan este comportamiento de forma predeterminada.

Si crea una regla de Lambda personalizada de AWS Config con Python mediante el kit de desarrollo de AWS Config (RDK) y la biblioteca del kit de desarrollo de AWS Config (RDKLib), la clase Evaluator importada comprobará este comportamiento. Para obtener información sobre cómo escribir reglas con el RDK y la RDKLib, consulte Writing rules with the RDK and RDKlib.