

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á.

# Criação AWS Config de regras de política personalizadas
<a name="evaluate-config_develop-rules_cfn-guard"></a>

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

## Adicionando regras de política AWS Config personalizadas
<a name="config-custom-policy-rules-add"></a>

------
#### [ Using the console ]

1. Faça login no Console de gerenciamento da AWS e abra o AWS Config console em [https://console.aws.amazon.com/config/casa](https://console.aws.amazon.com/config/home).

1. No Console de gerenciamento da AWS menu, verifique se o seletor de região está definido como uma AWS região que ofereça suporte a AWS Config regras. Para obter a lista das regiões compatíveis, consulte [Regiões e endpoints do AWS Config](https://docs.aws.amazon.com/general/latest/gr/awsconfig.html) no *Referência geral da Amazon Web Services*. 

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

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

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

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

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

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

   1. Para a **versão de tempo de execução do Guard**, escolha o sistema de tempo de execução para sua regra de política AWS Config personalizada.

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

   1. No **Modo de avaliação**, escolha quando, no processo de criação e gerenciamento de recursos, você AWS Config deseja avaliar seus recursos. Dependendo da regra, 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 [StartResourceEvaluation](https://docs.aws.amazon.com/config/latest/APIReference/API_StartResourceEvaluation.html)API e a [GetResourceEvaluationSummary](https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceEvaluationSummary.html)API para verificar se os recursos especificados nesses comandos seriam sinalizados como NÃO COMPATÍVEIS pelas regras proativas da sua conta na sua região.

          Para obter mais informações sobre como usar esses comandos, consulte [Avaliando seus recursos com AWS Config regras](https://docs.aws.amazon.com/config/latest/developerguide/evaluating-your-resources.html#evaluating-your-resources-proactive). Para obter uma lista de regras gerenciadas que oferecem suporte à avaliação proativa, consulte [Lista de regras AWS Config gerenciadas por modo de avaliação](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-evaluation-mode.html).

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

         Para avaliação de detetives, as regras de política AWS Config personalizada 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 por AWS Config é criado, alterado ou excluído.

         AWS Config executa a avaliação quando detecta 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.

   1. 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.

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

1. Ao terminar de revisar suas regras, escolha **Adicionar regra**.

------
#### [ Using the AWS CLI ]

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/configservice/put-config-rule.html](https://docs.aws.amazon.com/cli/latest/reference/configservice/put-config-rule.html).

O campo `Owner` deveria ser `CUSTOM_POLICY`. Os seguintes campos adicionais são obrigatórios para regras de política AWS Config personalizada:
+ `Runtime`: o sistema de tempo de execução para suas regras de política AWS Config personalizada.
+ `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 booleana para ativar o registro de depuração para sua regra de política AWS Config personalizada. O valor padrão é `false`.

------
#### [ Using the API Reference ]

Use a ação [PutConfigRule](https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigRule.html).

O campo `Owner` deveria ser `CUSTOM_POLICY`. Os seguintes campos adicionais são obrigatórios para regras de política AWS Config personalizada:
+ `Runtime`: o sistema de tempo de execução para suas regras de política AWS Config personalizada.
+ `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 booleana para ativar o registro de depuração para sua regra de política AWS Config personalizada. O valor padrão é `false`.

------

## Escrevendo conteúdo de regras para regras de política AWS Config personalizada
<a name="config-custom-policy-rules"></a>

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

Para obter mais informações sobre como escrever regras com o Guard, consulte [Escrevendo regras do Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/writing-rules.html) no Guia do usuário do AWS CloudFormation [AWS CloudFormation Guard e Modos de operação do Guard 2.0](https://github.com/aws-cloudformation/cloudformation-guard/tree/main/guard) no GitHub repositório do Guard.

### Estrutura básica de regras
<a name="config-custom-policy-rules-structure"></a>

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
<a name="config-custom-policy-rules-components"></a>

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

supplementaryConfiguration  
Contém conteúdo adicional para a configuração do recurso. AWS Config retorna esse campo para determinados tipos de recursos para complementar as informações retornadas para o campo de configuração.

resourceType  
AWS tipo de recurso que está sendo avaliado.

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

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

### Padrões comuns
<a name="config-custom-policy-rules-patterns"></a>

------
#### [ 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
<a name="config-custom-policy-rules-advanced"></a>

------
#### [ 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
<a name="config-custom-policy-rules-best-practices"></a>
+ 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.
<a name="config-custom-policy-rules-example"></a>

O exemplo a seguir mostra a definição da política para uma versão da regra de política AWS Config personalizada da regra AWS Config gerenciada[dynamodb-pitr-enabled](dynamodb-pitr-enabled.md). Essa regra verifica se as tabelas Point-in-Time do DynamoDB têm a Recuperação ativada.

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