Criar regras de política personalizadas do AWS Config - AWS Config

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar regras de política personalizadas do AWS Config

Você pode criar regras de política personalizadas do AWS Config a partir da API do Console de gerenciamento da AWS, AWS CLI ou AWS Config.

Adicionar regras de política personalizadas do AWS Config

Using the console
  1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Config em https://console.aws.amazon.com/config/home.

  2. No menu do Console de gerenciamento da AWS, verifique se o seletor de região está definido para uma região da AWS compatível com as regras do AWS Config. Para obter a lista das regiões compatíveis, consulte Regiões e endpoints do AWS Config no Referência geral da Amazon Web Services.

  3. Na barra de navegação à esquerda, selecione Rules (Regras).

  4. Na página Rules (Regras), selecione Add rule (Adicionar regra).

  5. Na página Especificar tipo de regra, escolha Criar regra personalizada usando o Guard.

  6. Na página Configurar regra, configure a regra através das seguintes etapas:

    1. Para Nome, digite um nome exclusivo para a regra.

    2. Em Descrição, digite uma descrição para a regra.

    3. Para a versão de runtime do Guard, escolha o sistema de runtime para sua regra de política personalizada do AWS Config.

    4. Para o Conteúdo da regra, você pode preenchê-lo com a política personalizada do Guard para sua regra.

    5. No Modo de avaliação, escolha quando, no processo de criação e gerenciamento de recursos, você quer que AWS Config avalie seus recursos. Dependendo da regra, o AWS Config você pode avaliar suas configurações de recursos antes que um recurso tenha sido provisionado, depois de um recurso ter sido provisionado, ou ambos.

      1. Escolha Ativar a avaliação proativa para permitir que você execute avaliações nas configurações de seus recursos antes de serem implantados.

        Depois de ativar a avaliação proativa, você pode usar a API StartResourceEvaluation e a API GetResourceEvaluationSummary para verificar se os recursos especificados nesses comandos seriam marcados como NON_COMPLIANT pelas regras proativas da sua conta na sua região.

        Para obter mais informações sobre como usar esses comandos, consulte Como avaliar seus recursos com regras do AWS Config. Para obter uma lista de regras gerenciadas que oferecem suporte à avaliação proativa, consulte Lista de regras gerenciadas do AWS Config por modo de avaliação.

      2. Escolha Ativar a avaliação de detecção para avaliar as definições de configuração de seus recursos existentes.

        Para avaliação de detecção, as regras de política personalizadas do AWS Config são iniciadas pelas alterações de configuração. Essa opção será pré-selecionada.

        • Recursos: quando um recurso que corresponde ao tipo de recurso especificado, ou ao tipo mais identificador, é criado, alterado ou excluído.

        • Tags: quando um recurso com a tag especificada é criado, alterado ou excluído.

        • Todas as alterações quando um recurso registrado pelo AWS Config é criado, alterado ou excluído.

        AWS ConfigO executa a avaliação ao detectar uma alteração em um recurso, que corresponda ao escopo da regra. Você pode usar o escopo para restringir quais recursos iniciam as avaliações. Caso contrário, as avaliações serão iniciadas quando houver uma alteração em um recurso pós-provisionado.

    6. Para Parâmetros, você poderá personalizar os valores das chaves fornecidas, se sua regra incluir parâmetros. Um parâmetro é um atributo que seus recursos devem ter antes de serem considerados compatíveis com a regra.

  7. Na página Revisar e criar, revise todas as suas seleções antes de adicionar a regra à sua Conta da AWS.

  8. Ao terminar de revisar suas regras, escolha Adicionar regra.

Using the AWS CLI

Use o comando put-config-rule.

O campo Owner deveria ser CUSTOM_POLICY. Os seguintes campos adicionais são obrigatórios para regras de política personalizadas do AWS Config:

  • Runtime: O sistema de runtime para suas regras de política personalizadas do AWS Config.

  • PolicyText: a definição da política que contém a lógica para suas regras de política personalizadas do AWS Config.

  • EnableDebugLogDelivery: A expressão booliana para habilitar o registro em log da depuração para a regra de política personalizada do AWS Config. O valor padrão é false.

Using the API Reference

Use a ação PutConfigRule.

O campo Owner deveria ser CUSTOM_POLICY. Os seguintes campos adicionais são obrigatórios para regras de política personalizadas do AWS Config:

  • Runtime: O sistema de runtime para suas regras de política personalizadas do AWS Config.

  • PolicyText: a definição da política que contém a lógica para suas regras de política personalizadas do AWS Config.

  • EnableDebugLogDelivery: A expressão booliana para habilitar o registro em log da depuração para a regra de política personalizada do AWS Config. O valor padrão é false.

Escrever conteúdo de regras para regras de política personalizadas do AWS Config

Com as regras de política personalizadas do AWS Config, você pode usar a linguagem específica do domínio (DSL) do AWS CloudFormation Guard para avaliar as configurações de recurso. Este tópico apresenta padrões e práticas recomendadas para criar regras de política personalizadas.

Para ter mais informações sobre como escrever regras com o Guard, consulte Como escrever regras com o Guard no “Guia do usuário do AWS CloudFormation Guard” e AWS CloudFormation Guard 2.0's Modes of Operation no repositório do Guard no GitHub.

Estrutura básica de regras

Use o seguinte formato básico para criar regras:

# 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 principais

configuration

Contém o conteúdo para a configuração do recurso.

supplementaryConfiguration

Contém conteúdo adicional para a configuração do recurso. O AWS Config exibe esse campo para determinados tipos de recurso visando complementar as informações apresentadas para o campo de configuração.

resourceType

Tipo de recurso da AWS que está sendo avaliado.

resourceId

A do recurso (por exemplo, sg-xxxxxx).

accountId

O ID de 12 dígitos da Conta da AWS associada ao recurso.

Padrões comuns

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>> }}

Recursos avançados

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áticas recomendadas

  • Use variáveis com instruções let para melhorar a legibilidade.

  • Agrupe as verificações relacionadas usando blocos de regras nomeados.

  • Inclua comentários descritivos.

  • Use operadores apropriados (exists, is_string, is_list).

  • Use padrões de regex com a correspondência que não diferencia maiúsculas de minúsculas.

Exemplo: dynamodb-pitr-enabled

O exemplo a seguir mostra a definição de política para uma versão da regra de política personalizada do AWS Config da regra gerenciada do dynamodb-pitr-enabled do AWS Config. Esta regra verifica se as tabelas do DynamoDB têm a recuperação para um ponto no tempo habilitada.

# 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>> }