Creación de reglas de políticas 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.

Creación de reglas de políticas personalizadas de AWS Config

Puede crear reglas de políticas personalizadas de AWS Config desde la Consola de administración de AWS, la AWS CLI o la API de AWS Config.

Adición de reglas de políticas personalizadas de AWS Config

Using the console
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Config en https://console.aws.amazon.com/config/home.

  2. En el menú de Consola de administración de AWS, compruebe que el selector de región esté establecido en una región de AWS que admita reglas de AWS Config. Para ver una lista de las regiones admitidas, consulte AWS Config Regions and Endpoints en la Referencia general de Amazon Web Services.

  3. En el panel de navegación izquierdo, seleccione Rules (Reglas).

  4. En la página Rules (Reglas), seleccione Add rule (Añadir regla).

  5. En la página Especificar tipo de regla, elija Crear una regla personalizada con Guard.

  6. En la página Configurar regla, cree la regla siguiendo estos pasos:

    1. En Nombre, escriba un nombre único para la regla.

    2. En Descripción, escriba una descripción para la regla.

    3. Para Versión del tiempo de ejecución de Guard, elija el sistema de tiempo de ejecución para su regla de política personalizada de AWS Config.

    4. Para Contenido de la regla, puede indicar la política personalizada de Guard correspondiente a su regla.

    5. Para Modo de evaluación, elija en qué momento del proceso de creación y administración de recursos desea que AWS Config evalúe sus recursos. Según la regla, AWS Config puede evaluar las configuraciones de los recursos antes de que se haya aprovisionado un recurso, después de que se haya aprovisionado o en ambas.

      1. Elija Active la evaluación proactiva para ejecutar evaluaciones de los valores de configuración de sus recursos antes de que se implementen.

        Después de activar la evaluación proactiva, puede utilizar la API StartResourceEvaluation y la API GetResourceEvaluationSummary para comprobar si los recursos que especifique en estos comandos se marcarán como NON_COMPLIANT según las reglas proactivas de la cuenta en su región.

        Para obtener más información sobre el uso de estos comandos, consulte Evaluación de los recursos con reglas de AWS Config. 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.

      2. Seleccione Active la evaluación de detectives para evaluar los ajustes de la configuración de los recursos existentes.

        Para una evaluación de detectives, las reglas de políticas personalizadas de AWS Config se inician mediante Cambios de configuración. Esta opción estará preseleccionada.

        • Recursos: cuando se crea, cambia o elimina un recurso específico que coincide con un tipo de recurso específico o con un tipo más el identificador.

        • Etiquetas: cuando se crea, cambia o elimina un recurso con la etiqueta especificada.

        • Todos los cambios: cuando se crea, cambia o elimina un recurso registrado por AWS Config.

        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 restringir qué recursos inician evaluaciones. De lo contrario, las evaluaciones se inician cuando se produce un cambio en un recurso aprovisionado posteriormente.

    6. Si su regla incluye Parámetros, puede personalizar los valores de las claves proporcionadas. Un parámetro es un atributo que deben cumplir los recursos para que se considere que cumplen la regla.

  7. En la página Revisar y crear, revise todas las selecciones antes de añadir la regla a la Cuenta de AWS.

  8. Cuando termine de revisar las reglas, seleccione Agregar regla.

Using the AWS CLI

Utilice el comando put-config-rule.

El campo Owner debe ser CUSTOM_POLICY. Los siguientes campos adicionales son obligatorios para las reglas de la política personalizada de AWS Config:

  • Runtime: sistema de tiempo de ejecución para las reglas de políticas personalizadas de AWS Config.

  • PolicyText: definición de la política que contiene la lógica de las reglas de políticas personalizadas de AWS Config.

  • EnableDebugLogDelivery: expresión booleana para habilitar el registro de depuración para la regla de políticas personalizadas de AWS Config. El valor predeterminado es false.

Using the API Reference

Use la acción PutConfigRule.

El campo Owner debe ser CUSTOM_POLICY. Los siguientes campos adicionales son obligatorios para las reglas de la política personalizada de AWS Config:

  • Runtime: sistema de tiempo de ejecución para las reglas de políticas personalizadas de AWS Config.

  • PolicyText: definición de la política que contiene la lógica de las reglas de políticas personalizadas de AWS Config.

  • EnableDebugLogDelivery: expresión booleana para habilitar el registro de depuración para la regla de políticas personalizadas de AWS Config. El valor predeterminado es false.

Escritura de contenido de reglas de políticas personalizadas de AWS Config

Con las reglas de políticas personalizadas de AWS Config, puede usar el lenguaje específico de dominio de AWS CloudFormation Guard para evaluar configuraciones de recursos. En este tema se proporcionan patrones y prácticas recomendadas para escribir reglas de políticas personalizadas.

Para obtener más información sobre cómo escribir reglas con Guard, consulte Escritura de reglas de Guard en la Guía del usuario de AWS CloudFormation Guard y Modos de operación de AWS CloudFormation Guard 2.0 en el Repositorio de Guard GitHub.

Estructura básica de reglas

Utilice el siguiente formato básico para crear reglas:

# Basic rule format rule <rule_name> when resourceType == "<AWS::Service::Resource>" { # Evaluation clauses } # Example with filtering let resources_of_type = Resources.*[ Type == 'AWS::Service::Resource' ] rule check_resources when %resources_of_type !empty { %resources_of_type.configuration.property == expected_value }

Componentes principales

configuration

Incluye el contenido de la configuración de recursos.

supplementaryConfiguration

Incluye contenido adicional para la configuración de recursos. AWS Config devuelve este campo para que ciertos tipos de recursos complementen la información devuelta para el campo de configuración.

resourceType

Tipo de recurso de AWS que se está evaluando.

resourceId

ID del recurso (por ejemplo, sg-xxxxxx).

accountId

El identificador de 12 dígitos de la Cuenta de AWS asociado al recurso.

Patrones comunes

Status checks
let allowed_status = ['ACTIVE', 'RUNNING'] rule check_resource_status when resourceType == "AWS::Service::Resource" { configuration.status IN %allowed_status }
Required properties
rule check_required_properties when resourceType == "AWS::Service::Resource" { configuration.propertyName exists configuration.propertyName is_string # or is_list, is_struct }
Query blocks
configuration.Properties { property1 exists property2 is_string property3 IN [allowed_value1, allowed_value2] }
Conditional evaluation
when configuration.feature_enabled == true { configuration.feature_settings exists configuration.feature_settings is_struct }
Custom messages
rule check_compliance when resourceType == "AWS::Service::Resource" { configuration.property == expected_value <<Custom error message explaining the requirement>> }}

Características avanzadas

Range checks
rule check_numeric_limits { # Inclusive range (lower_limit <= value <= upper_limit) configuration.value IN r[minimum_value, maximum_value] # Exclusive range (lower_limit < value < upper_limit) configuration.value IN r(exclusive_min, exclusive_max) # Left inclusive, right exclusive (lower_limit <= value < upper_limit) configuration.value IN r[minimum_value, exclusive_max) # Left exclusive, right inclusive (lower_limit < value <= upper_limit) configuration.value IN r(exclusive_min, maximum_value] }
Combining conditions
# AND conditions (implicit through new lines) condition_1 condition_2 # OR conditions (explicit) condition_3 OR condition_4
Chaining rules
rule check_prerequisites { configuration.required_setting exists } rule check_details when check_prerequisites { configuration.required_setting == expected_value }

Prácticas recomendadas

  • Utilice variables con instrucciones let para mejorar la legibilidad.

  • Agrupe comprobaciones relacionadas mediante bloques de reglas con nombre.

  • Incluya comentarios descriptivos.

  • Utilice operadores adecuados (exists, is_string, is_list).

  • Utilice patrones de expresiones regulares sin distinción entre mayúsculas y minúsculas.

Ejemplo: dynamodb-pitr-enabled

El siguiente ejemplo muestra la definición de política para una versión de regla de política personalizada de AWS Config de la regla administrada de AWS Config dynamodb-pitr-enabled. Esta regla comprueba si las tablas de DynamoDB tienen habilitada Recuperación en un momento dado.

# Check if DynamoDB tables have Point-in-Time Recovery enabled let status = ['ACTIVE'] rule tableisactive when resourceType == "AWS::DynamoDB::Table" { configuration.tableStatus == %status } rule checkcompliance when resourceType == "AWS::DynamoDB::Table" tableisactive { let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus %pitr == "ENABLED" <<DynamoDB tables must have Point-in-Time Recovery enabled>> }