

# Entendendo as políticas do Cedar
<a name="policy-understanding-cedar"></a>

O Policy in AgentCore usa políticas do Cedar para controlar o acesso às ferramentas do AgentCore Gateway. Esta seção explica a estrutura política, a semântica de avaliação e os principais conceitos do Cedar.

**Topics**
+ [Exemplo de política](#policy-example)
+ [Estrutura da política](#policy-structure)
+ [Efeitos políticos](#policy-effects)
+ [Negação padrão](#policy-default-deny)
+ [Avaliação da autorização](#policy-authorization-evaluation)
+ [Independência política](#policy-independence)
+ [Algoritmo de avaliação política](#policy-evaluation-algorithm)

## Exemplo de política
<a name="policy-example"></a>

Considere uma ferramenta de processamento de reembolso com os seguintes requisitos:
+ Somente o usuário “John” pode processar reembolsos
+ Os reembolsos são limitados a $500 ou menos

A política da Cedar que impõe esses requisitos:

```
permit(
  principal is AgentCore::OAuthUser,
  action == AgentCore::Action::"RefundTool___process_refund",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:your-region:your-account-id:gateway/refund-gateway"
)
when {
  principal.hasTag("username") &&
  principal.getTag("username") == "John" &&
  context.input.amount < 500
};
```

Essa política permite o processamento de reembolsos somente quando o usuário é “John” e o valor do reembolso é inferior a $500.

## Estrutura da política
<a name="policy-structure"></a>

As políticas de cedro consistem em três componentes principais:

1.  **Efeito** - determina se o acesso deve ser permitido ou negado (`permit`ou`forbid`)

1.  **Escopo** - especifica o principal, a ação e o recurso aos quais a política se aplica

1.  **Condição** - Define a lógica adicional que deve ser satisfeita (`when`ou`unless`) e pode se referir aos parâmetros da ferramenta (por meio do contexto) e ao token OAuth (por meio das tags)

## Efeitos políticos
<a name="policy-effects"></a>

As políticas do Cedar usam dois efeitos para controlar o acesso:
+  `permit`- Permite que a ação prossiga
+  `forbid`- Nega a ação

## Negação padrão
<a name="policy-default-deny"></a>

Todas as ações são negadas por padrão. Se nenhuma política corresponder a uma solicitação, o Cedar retornará DENY. Você deve escrever explicitamente políticas de permissão para permitir ações.

## Avaliação da autorização
<a name="policy-authorization-evaluation"></a>

O Cedar usa um modelo de avaliação de proibição-substituição-permissão:

1. A Cedar avalia todas as políticas que se aplicam à solicitação

1. Se alguma política de proibição corresponder, o resultado será DENY

1. Se pelo menos uma política de permissão corresponder e nenhuma política de proibição corresponder, o resultado será PERMITIR

1. Se nenhuma política corresponder, o resultado será DENY (negação padrão)

## Independência política
<a name="policy-independence"></a>

Cada política da Cedar é avaliada de forma independente. A avaliação de uma política depende apenas de:
+ O escopo (principal, ação, recurso)
+ O contexto e as tags

As políticas não fazem referência nem dependem de outras políticas.

## Algoritmo de avaliação política
<a name="policy-evaluation-algorithm"></a>

Quando uma solicitação é avaliada, o mecanismo de política determina a decisão de autorização usando o seguinte algoritmo:

1. Se alguma `forbid` política corresponder à solicitação, a decisão será DENY.

1. Se nenhuma `forbid` política corresponder à solicitação e pelo menos uma `permit` política corresponder, a decisão será PERMITIR.

1. Se `forbid` nenhuma `permit` das políticas corresponder à solicitação, a decisão será DENY.

Esse modelo de avaliação impõe uma postura **padrão de negação**.

Uma `forbid` política nunca pode resultar em uma decisão de PERMITIR. A `unless` cláusula em uma `forbid` política especifica as condições sob as quais essa `forbid` política não se aplica; ela **não** concede permissão e não substitui uma política correspondente. `permit`