

• O AWS Systems Manager CloudWatch Dashboard não estará mais disponível a partir de 30 de abril de 2026. Os clientes podem continuar usando o console do Amazon CloudWatch para visualizar, criar e gerenciar os painéis do Amazon CloudWatch exatamente como fazem hoje. Para obter mais informações, consulte a [documentação do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# Estrutura de instruções e operadores integrados para políticas de aprovação automática e negação de acesso
<a name="auto-approval-deny-access-policy-statement-structure"></a>

A tabela a seguir mostra a estrutura das políticas de aprovação automática e negação de acesso.


| Componente | Sintaxe | 
| --- | --- | 
| efeito; | `permit \| forbid` | 
| scope | `(principal, action, resource)` | 
| Cláusula de condição |  <pre>when {<br />    {{principal or resource}} has {{attribute name}}             <br />};</pre>  | 

## Componentes da política
<a name="policy-components"></a>

Uma política de aprovação automática ou negação de acesso contém os seguintes componentes:
+ **Efeito**: permite (`permit`) ou nega (`forbid`) o acesso.
+ **Escopo**: a entidade principal, as ações e os recursos aos quais o efeito se aplica. Você pode deixar o escopo no Cedar indefinido ao não identificar entidades principais, ações ou recursos específicos. Nesse caso, a política se aplica a todos os principais, ações e recursos possíveis. Para acesso a nós just-in-time, o `action` é sempre `AWS::SSM::Action::"getTokenForInstanceAccess"`.
+ **Cláusula de condição**: o contexto no qual o efeito se aplica.

## Comentários
<a name="auth-policies-policy-comments"></a>

Você pode incluir comentários nas políticas do . Os comentários são definidos como uma linha que começa com `//` e termina com um caractere de nova linha.

O exemplo a seguir mostra comentários em uma política.

```
// Allows users in the Engineering group from the Platform org to automatically connect to nodes tagged with Engineering and Production keys. 
permit (
    principal in AWS::IdentityStore::Group::"d4q81745-r081-7079-d789-14da1EXAMPLE",
    action == AWS::SSM::Action::"getTokenForInstanceAccess",
    resource
)
when {
    principal has organization && resource.hasTag("Engineering") && resource.hasTag("Production") && principal.organization == "Platform"
};
```

## Cláusulas múltiplas
<a name="multiple-clauses"></a>

Você pode usar mais de uma cláusula de condição em uma declaração de política usando o operador `&&`.

```
// Allow access if node has tag where the tag key is Environment 
// & tag value is Development 

permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource)
when {
    resource.hasTag("Environment") &&
    resource.getTag("Environment") == "Development"
};
```

## Caracteres reservados
<a name="reserved-characters"></a>

O exemplo a seguir mostra como escrever uma política se uma propriedade de contexto usar `:` (ponto e vírgula), que é um caractere reservado na linguagem da política.

```
permit (
    principal,
    action == AWS::SSM::Action::"getTokenForInstanceAccess",
    resource
)
when {
    principal has employeeNumber && principal.employeeNumber like "E-1*" && resource.hasTag("Purpose") && resource.getTag("Purpose") == "Testing"
}
```

Para obter exemplos adicionais, consulte [Exemplo de instruções de políticas](#policy-statement-examples).

## Esquema de acesso a nós just-in-time
<a name="auto-approval-deny-access-policy-statement-schema"></a>

Confira abaixo o esquema Cedar para acesso a nós just-in-time.

```
namespace AWS::EC2 {
    entity Instance tags String;
}


namespace AWS::IdentityStore {
    entity Group;
    
    entity User in [Group] {
    employeeNumber?: String,
    costCenter?: String,
    organization?: String,
    division?: String,
    };

}


namespace AWS::IAM {

    entity Role;
    
    type AuthorizationContext = {
        principalTags: PrincipalTags,
    };
    
    entity PrincipalTags tags String;
}

namespace AWS::SSM {

    entity ManagedInstance tags String;

    action "getTokenForInstanceAccess" appliesTo {
    principal: [AWS::IdentityStore::User],
    resource: [AWS::EC2::Instance, AWS::SSM::ManagedInstance],
    context: {
        "iam": AWS::IAM::AuthorizationContext
        }
    };
}
```

## Operadores integrados
<a name="built-in-policy-operators"></a>

Ao criar o contexto de uma política de aprovação automática ou negação de acesso usando várias condições, você pode usar o operador `&&` para adicionar outras condições. Há também muitos outros operadores integrados que você pode usar para adicionar mais poder expressivo às condições da sua política. A tabela a seguir contém todos os operadores integrados para referência.



- ** \! **
  - **Tipos e sobrecargas:** Booleano → Booleano
  - **Descrição:** Lógico que não.

- ** == **
  - **Tipos e sobrecargas:** qualquer → qualquer
  - **Descrição:** Igualdade. Funciona com argumentos de qualquer tipo, mesmo que os tipos não correspondam. Valores de tipos diferentes nunca são iguais entre si.

- **\!=**
  - **Tipos e sobrecargas:** qualquer → qualquer
  - **Descrição:** Desigualdade; o inverso exato da igualdade (veja acima).

- ** < **
  - **Tipos e sobrecargas:** (longo, longo) → Booleano
  - **Descrição:** Número inteiro longo menor que.

- ** <= **
  - **Tipos e sobrecargas:** (longo, longo) → Booleano
  - **Descrição:** Número inteiro longo menor ou igual a.

- ** > **
  - **Tipos e sobrecargas:** (longo, longo) → Booleano
  - **Descrição:** Número inteiro longo maior que.

- ** >= **
  - **Tipos e sobrecargas:** (longo, longo) → Booleano
  - **Descrição:** Número inteiro longo maior que ou igual a.

- **em**
  - **Tipos e sobrecargas:** (entidade, entidade) → Booleano / **Descrição:** Associação hierárquica (reflexiva: A em A é sempre verdadeiro).
  - **Tipos e sobrecargas:** (entidade, conjunto (entidade)) → Booleano / **Descrição:** Associação à hierarquia: A em [B, C,...] é verdadeiro se (A e B) \|\| (A em C) \|\|... erro se o conjunto não contiver uma entidade.

- **&&**
  - **Tipos e sobrecargas:** (Booleano, Booleano) → Booleano
  - **Descrição:** Lógico e (curto-circuito).

- **\|\|**
  - **Tipos e sobrecargas:** (Booleano, Booleano) → Booleano
  - **Descrição:** Lógico ou (curto-circuito).

- **.exists()**
  - **Tipos e sobrecargas:** entidade→ Booleano
  - **Descrição:** Existência de entidades.

- **tem**
  - **Tipos e sobrecargas:** (entidade, atributo) → Booleano
  - **Descrição:** Operador infixo. e has f testa se o registro ou a entidade e tem uma associação para o atributo f. Retorna false se e não existe ou se e existe, mas não tem o atributo f. Os atributos podem ser expressos como identificadores ou literais de sequência de caracteres.

- **como**
  - **Tipos e sobrecargas:** (string, string) → Booleano
  - **Descrição:** Operador infixo. t like pverifica se o texto t corresponde ao padrão p, que pode incluir caracteres curinga \* que correspondam a 0 ou mais de qualquer caractere. Para combinar literalmente um caractere estrela t, você pode usar a sequência \\\* especial de caracteres escapados em p.

- **.hasTag()**
  - **Tipos e sobrecargas:** (entity, string) → Boolean
  - **Descrição:** Verifica se a entidade tem a tag especificada aplicada.

- **.getTag()**
  - **Tipos e sobrecargas:** (entity, string) → Boolean
  - **Descrição:** Retorna o valor na chave de tag especificada.

- **.contém()**
  - **Tipos e sobrecargas:** (conjunto, todos) → Booleano
  - **Descrição:** Defina a associação (B é um elemento de A).

- **.contém tudo()**
  - **Tipos e sobrecargas:** (conjunto, conjunto) → Booleano
  - **Descrição:** Testa se o conjunto A contém todos os elementos do conjunto B.

- **.contém qualquer()**
  - **Tipos e sobrecargas:** (conjunto, conjunto) → Booleano
  - **Descrição:** Testa se o conjunto A contém algum dos elementos do conjunto B.



## Exemplo de instruções de políticas
<a name="policy-statement-examples"></a>

Confira abaixo exemplos de instruções de política.

```
// Users assuming IAM roles with a principal tag of "Elevated" can automatically access nodes tagged with the "Environment" key when the value equals "prod"
permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource)
when {
    // Verify IAM role principal tag
    context.iam.principalTags.getTag("AccessLevel") == "Elevated" &&
    
    // Verify the node has a tag with "Environment" tag key and a tag value of "prod"
    resource.hasTag("Environment") &&
    resource.getTag("Environment") == "prod"
};
```

```
// Identity Center users in the "Contractor" division can automatically access nodes tagged with the "Environment" key when the value equals "dev"
permit(principal, action == AWS::SSM::getTokenForInstanceAccess, resource)
when {
    // Verify that the user is part of the "Contractor" division
    principal.division == "Contractor" &&
    
    // Verify the node has a tag with "Environment" tag key and a tag value of "dev"
    resource.hasTag("Environment") &&
    resource.getTag("Environment") == "dev"
};
```

```
// Identity Center users in a specified group can automatically access nodes tagged with the "Environment" key when the value equals "Production"
permit(principal in AWS::IdentityStore::Group::"d4q81745-r081-7079-d789-14da1EXAMPLE",
    action == AWS::SSM::getTokenForInstanceAccess,
    resource)
when {
    resource.hasTag("Environment") &&
    resource.getTag("Environment") == "Production"
};
```