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
-
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.
-
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.
-
En el panel de navegación izquierdo, seleccione Rules (Reglas).
-
En la página Rules (Reglas), seleccione Add rule (Añadir regla).
-
En la página Especificar tipo de regla, elija Crear una regla personalizada con Guard.
-
En la página Configurar regla, cree la regla siguiendo estos pasos:
-
En Nombre, escriba un nombre único para la regla.
-
En Descripción, escriba una descripción para la regla.
-
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.
-
Para Contenido de la regla, puede indicar la política personalizada de Guard correspondiente a su regla.
-
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.
-
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.
-
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.
-
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.
-
En la página Revisar y crear, revise todas las selecciones antes de añadir la regla a la Cuenta de AWS.
-
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>>
}