

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

# Permissões verificadas da Amazon e termos e conceitos da linguagem da política Cedar
<a name="terminology"></a>

Você deve entender os seguintes conceitos para usar o Amazon Verified Permissions.

**Topics**
+ [Modelo de autorização](#term-authorization-model)
+ [Solicitação de autorização](#term-authorization-request)
+ [Resposta de autorização](#term-authorization-response)
+ [Políticas consideradas](#term-considered-policies)
+ [Dados de contexto](#term-context-data)
+ [Políticas determinantes](#term-determining-policies)
+ [Dados da entidade](#term-entity-data)
+ [Permissões, autorização e entidades principais](#term-permissions-authorization-principals)
+ [Aplicação de políticas](#term-policy-enforcement)
+ [Armazenamentos de políticas](#term-policy-store)
+ [Apelido do repositório de políticas](#term-policy-store-alias)
+ [Nome da política](#term-policy-name)
+ [Nome do modelo de política](#term-policy-template-name)
+ [Políticas atendidas](#term-satisfied-policies)
+ [Diferenças entre as permissões verificadas da Amazon e a linguagem de política do Cedar](terminology-differences-avp-cedar.md)

**Conceitos da linguagem de política Cedar**
+ [Autorização](https://docs.cedarpolicy.com/overview/terminology.html#authorization)
+ [Entidade](https://docs.cedarpolicy.com/overview/terminology.html#entity)
+ [Grupos e hierarquias](https://docs.cedarpolicy.com/overview/terminology.html#term-group)
+ [Namespaces](https://docs.cedarpolicy.com/policies/validation.html#namespaces)
+ [Política](https://docs.cedarpolicy.com/overview/terminology.html#policy)
+ [Modelo de política](https://docs.cedarpolicy.com/overview/terminology.html#policy-template)
+ [Esquema](https://docs.cedarpolicy.com/overview/terminology.html#schema)

## Modelo de autorização
<a name="term-authorization-model"></a>

O *modelo de autorização* descreve o escopo das [solicitações de autorização](#term-authorization-request) feitas pela aplicação e é a base para avaliar essas solicitações. Ele é definido com base nos diferentes tipos de recursos, das ações realizadas nesses recursos e dos tipos de entidades principais que realizam essas ações. Ele também considera o contexto em que essas ações estão sendo realizadas.

O *controle de acesso baseado em função (RBAC)* é uma base de avaliação na qual as funções são definidas e associadas a um conjunto de permissões. Essas funções podem, então, ser atribuídas a uma ou mais identidades. A identidade atribuída adquire as permissões associadas à função. Se as permissões associadas à função forem modificadas, a modificação afetará automaticamente qualquer identidade à qual a função tenha sido atribuída. O Cedar pode oferecer suporte às decisões do RBAC por meio do uso de grupos de entidades principais.

O *controle de acesso baseado em função (RBAC)* é uma base de avaliação na qual as permissões associadas a uma identidade são determinadas pelos atributos dessa identidade. O Cedar pode oferecer suporte às decisões do ABAC por meio do uso de condições de política que fazem referência aos atributos da entidade principal.

A linguagem de política Cedar permite a combinação do RBAC e do ABAC em uma única política, fazendo com que as permissões sejam definidas para um grupo de usuários, que têm condições baseadas em atributos.

## Solicitação de autorização
<a name="term-authorization-request"></a>

Uma *solicitação de autorização* é uma solicitação feita ao Verified Permissions por uma aplicação para avaliar um conjunto de políticas, a fim de determinar se uma entidade principal pode realizar uma ação em um recurso para um determinado contexto.

## Resposta de autorização
<a name="term-authorization-response"></a>

A *resposta de autorização* é a resposta à [solicitação de autorização](#term-authorization-request). Inclui uma decisão de permitir ou negar, além de informações adicionais, como IDs as políticas determinantes.

## Políticas consideradas
<a name="term-considered-policies"></a>

As *políticas consideradas* são o conjunto completo de políticas selecionadas pelo Verified Permissions para inclusão ao avaliar uma [solicitação de autorização](#term-authorization-request).

## Dados de contexto
<a name="term-context-data"></a>

Os *dados de contexto* são valores de atributos que fornecem informações adicionais a serem avaliadas.

## Políticas determinantes
<a name="term-determining-policies"></a>

As *políticas determinantes* são aquelas que determinam a [resposta da autorização](#term-authorization-response). Por exemplo, se houver duas [políticas atendidas](#term-satisfied-policies), em que uma é a negação e a outra é a permissão, a política de negação será a política determinante. Se houver várias políticas de permissão atendidas e nenhuma política de proibição atendida, haverá várias políticas determinantes. Caso nenhuma política corresponda e a resposta seja uma negação, não haverá políticas determinantes.

## Dados da entidade
<a name="term-entity-data"></a>

Os *dados da entidade* são dados sobre a entidade principal, a ação e o recurso. Os dados de entidade relevantes para a avaliação da política são a associação ao grupo em toda a hierarquia de entidades e os valores de atributo da entidade principal e do recurso.

## Permissões, autorização e entidades principais
<a name="term-permissions-authorization-principals"></a>

O Verified Permissions gerencia *permissões* e *autorizações* refinadas nas aplicações personalizadas criadas por você.

A *entidade principal* é o usuário de uma aplicação, seja ele um ser humano ou uma máquina, que tem uma identidade vinculada a um identificador, como um nome de usuário ou um ID de máquina. O processo de autenticação determina se a entidade principal é, de fato, a identidade que afirma ser.

Associado a essa identidade está um conjunto de *permissões* de aplicação que determina o que essa entidade principal tem permissão para fazer nessa aplicação. A *autorização* é o processo de avaliação dessas permissões para determinar se uma entidade principal tem permissão para realizar uma ação específica na aplicação. Essas permissões podem ser expressas como [políticas](https://docs.cedarpolicy.com/overview/terminology.html#policy).

## Aplicação de políticas
<a name="term-policy-enforcement"></a>

A *aplicação da política* é o processo de aplicar a decisão de avaliação na aplicação, fora do Verified Permissions. Se a avaliação do Verified Permissions retornar uma negação, a aplicação garantirá que a entidade principal foi impedida de acessar o recurso.

## Armazenamentos de políticas
<a name="term-policy-store"></a>

Um *armazenamento de políticas* é um contêiner de políticas e modelos. Cada armazenamento contém um esquema, que é usado para validar as políticas adicionadas ao armazenamento. Por padrão, cada aplicação tem seu próprio armazenamento de políticas, mas vários aplicações podem compartilhar um único armazenamento de políticas. Quando uma aplicação faz uma solicitação de autorização, ele identifica o armazenamento de políticas usado para avaliar essa solicitação. Os armazenamentos de políticas são uma maneira de isolar um conjunto de políticas e, portanto, podem ser usados em uma aplicação multilocatária para reter os esquemas e políticas de cada locatário. Uma única aplicação pode ter armazenamentos de políticas separados para cada locatário.

Ao avaliar uma [solicitação de autorização](#term-authorization-request), o Verified Permissions considera apenas o subconjunto das políticas contidas no armazenamento que são relevantes para a solicitação. A relevância é determinada com base no *escopo* da política. O escopo identifica a entidade principal e o recurso específicos aos quais a política se aplica, bem como as ações que a entidade principal pode realizar no recurso. A definição do escopo ajuda a melhorar o desempenho ao restringir o conjunto de políticas consideradas.

## Apelido do repositório de políticas
<a name="term-policy-store-alias"></a>

Um *alias de armazenamento de políticas* é um nome amigável para um repositório de políticas. Você pode usar um alias de armazenamento de políticas para identificar um repositório de políticas em qualquer operação de Permissões Verificadas que aceite um `policyStoreId` parâmetro. Os aliases do repositório de políticas são AWS recursos independentes com seus próprios. ARNs Cada alias é associado a um repositório de políticas por vez, e vários aliases podem ser associados ao mesmo repositório de políticas. Para obter mais informações, consulte [Aliases da loja de políticas de permissões verificadas da Amazon](policy-store-aliases.md).

## Nome da política
<a name="term-policy-name"></a>

Um *nome de política* é um nome amigável opcional para uma política. Os nomes das políticas devem ser exclusivos para todas as políticas no repositório de políticas e prefixados com`name/`. Você pode usar um nome de política no lugar do ID da política em operações do plano de controle que aceitam um `policyId` parâmetro. Os nomes podem ser definidos ao criar ou atualizar uma política. Somente `GetPolicy` e `ListPolicies` retorne o nome na saída.

## Nome do modelo de política
<a name="term-policy-template-name"></a>

Um *nome de modelo de política* é um nome amigável opcional para um modelo de política. Os nomes dos modelos de política devem ser exclusivos para todos os modelos de política no repositório de políticas e prefixados com`name/`. Você pode usar um nome de modelo de política no lugar do ID do modelo de política em operações do plano de controle que aceitam um `policyTemplateId` parâmetro. Os nomes podem ser definidos ao criar ou atualizar um modelo de política. Somente `GetPolicyTemplate` e `ListPolicyTemplates` retorne o nome na saída.

## Políticas atendidas
<a name="term-satisfied-policies"></a>

*Políticas atendidas* são as políticas que correspondem aos parâmetros da [solicitação de autorização](#term-authorization-request).

# Diferenças entre as permissões verificadas da Amazon e a linguagem de política do Cedar
<a name="terminology-differences-avp-cedar"></a>

O Amazon Verified Permissions usa o mecanismo de linguagem de política Cedar para realizar suas tarefas de autorização. No entanto, existem algumas diferenças entre a implementação nativa do Cedar e a implementação do Cedar encontrada no Verified Permissions. Este tópico identifica essas diferenças.

## Definição de namespace
<a name="differences-namespaces"></a>

A implementação do Cedar no Verified Permissions tem as seguintes diferenças em relação à implementação nativa do Cedar:
+ O Verified Permissions oferece suporte somente a um [namespace em um esquema](https://docs.cedarpolicy.com/schema/schema.html#namespace) definido em um armazenamento de políticas.
+ As permissões verificadas não permitem que você crie um [namespace](https://docs.cedarpolicy.com/schema/schema.html#namespace) que seja uma string vazia ou inclua os seguintes valores:`aws`,`amazon`, ou. `cedar`

## Suporte do modelo de política
<a name="differences-schema"></a>

O Verified Permissions e o Cedar permitem espaços reservados no escopo apenas para `principal` e `resource`. No entanto, o Verified Permissions também requer que nem `principal` nem `resource` sejam irrestritos.

A política a seguir é válida no Cedar, mas é rejeitada pelo Verified Permissions porque `principal` não tem restrições.

```
permit(principal, action == Action::"view", resource == ?resource);
```

Os dois exemplos a seguir são válidos no Cedar e no Verified Permissions porque tanto `principal` quanto `resource` têm restrições.

```
permit(principal == User::"alice", action == Action::"view", resource == ?resource);
```

```
permit(principal == ?principal, action == Action::"a", resource in ?resource);
```

## Suporte ao esquema
<a name="differences-templates"></a>

O Verified Permissions requer que todos os nomes de chave JSON do esquema sejam strings não vazias. O Cedar permite strings vazias em alguns casos, como para propriedades ou namespaces.

## Definição de grupos de ação
<a name="differences-action-groups"></a>

Os métodos de autorização do Cedar requerem uma lista das entidades a serem consideradas durante a avaliação de uma solicitação de autorização com base nas políticas.

Você pode definir as ações e os grupos de ação usados pela sua aplicação no esquema. No entanto, o Cedar não inclui o esquema como parte de uma solicitação de avaliação. Em vez disso, o Cedar usa o esquema somente para validar as políticas e os modelos de políticas que você envia. Como o Cedar não faz referência ao esquema durante as solicitações de avaliação, mesmo que você tenha definido grupos de ação no esquema, você também deve incluir a lista de todos os grupos de ação como parte da lista de entidades que você deve passar para as operações da API de autorização.

O Verified Permissions faz isso para você. Todos os grupos de ação definidos em seu esquema são automaticamente anexados à lista de entidades que você passa como parâmetro para as operações `IsAuthorized` ou `IsAuthorizedWithToken`.

## Formatação de entidades
<a name="differences-entities"></a>

A formatação JSON de entidades em Permissões verificadas usando o `entityList` parâmetro difere do Cedar das seguintes maneiras:
+ No Verified Permissions, um objeto JSON deve ter todos os seus pares de chave-valor encapsulados em um objeto JSON com o nome `Record`.
+ Uma lista JSON no Verified Permissions deve ser encapsulado em um par de chave-valor JSON em que o nome da chave é `Set` e o valor é a lista JSON original do Cedar.
+ Para os nomes de tipo `String`, `Long` e `Boolean`, cada par de chave-valor do Cedar é substituído por um objeto JSON no Verified Permissions. O nome do objeto é o nome da chave original. No objeto JSON, há um par de chave-valor em que o nome da chave é o nome de tipo do valor escalar (`String`, `Long` ou `Boolean`) e o valor é o valor da entidade do Cedar.
+ A formatação de sintaxe das entidades do Cedar e das entidades do Verified Permissions difere nos seguintes aspectos:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/verifiedpermissions/latest/userguide/terminology-differences-avp-cedar.html)

**Example - Listas**  
Os exemplos a seguir mostram como uma lista de entidades é expressa em Cedar e Permissões Verificadas, respectivamente.  

```
[
  {
    "number": 1
  },
  {
    "sentence": "Here is an example sentence"
  },
  {
    "Question": false
  }
]
```

```
{
  "Set": [
    {
      "Record": {
        "number": {
          "Long": 1
        }
      }
    },
    {
      "Record": {
        "sentence": {
          "String": "Here is an example sentence"
        }
      }
    },
    {
      "Record": {
        "question": {
          "Boolean": false
        }
      }
    }
  ]
}
```

**Example - Avaliação de políticas**  
Os exemplos a seguir mostram como as entidades são formatadas para avaliar uma política em uma solicitação de autorização no Cedar e no Verified Permissions, respectivamente.  

```
[
    {
        "uid": {
            "type": "PhotoApp::User",
            "id": "alice"
        },
        "attrs": {
            "age": 25,
            "name": "alice",
            "userId": "123456789012"
        },
        "parents": [
            {
                "type": "PhotoApp::UserGroup",
                "id": "alice_friends"
            },
            {
                "type": "PhotoApp::UserGroup",
                "id": "AVTeam"
            }
        ]
    },
    {
        "uid": {
            "type": "PhotoApp::Photo",
            "id": "vacationPhoto.jpg"
        },
        "attrs": {
            "private": false,
            "account": {
                "__entity": {
                    "type": "PhotoApp::Account",
                    "id": "ahmad"
                }
            }
        },
        "parents": []
    },
    {
        "uid": {
            "type": "PhotoApp::UserGroup",
            "id": "alice_friends"
        },
        "attrs": {},
        "parents": []
    },
    {
        "uid": {
            "type": "PhotoApp::UserGroup",
            "id": "AVTeam"
        },
        "attrs": {},
        "parents": []
    }
]
```

```
[
    {
        "Identifier": {
            "EntityType": "PhotoApp::User",
            "EntityId": "alice"
        },
        "Attributes": {
            "age": {
                "Long": 25
            },
            "name": {
                "String": "alice"
            },
            "userId": {
                "String": "123456789012"
            }
        },
        "Parents": [
            {
                "EntityType": "PhotoApp::UserGroup",
                "EntityId": "alice_friends"
            },
            {
                "EntityType": "PhotoApp::UserGroup",
                "EntityId": "AVTeam"
            }
        ]
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::Photo",
            "EntityId": "vacationPhoto.jpg"
        },
        "Attributes": {
            "private": {
                "Boolean": false
            },
            "account": {
                "EntityIdentifier": {
                    "EntityType": "PhotoApp::Account",
                    "EntityId": "ahmad"
                }
            }
        },
        "Parents": []
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::UserGroup",
            "EntityId": "alice_friends"
        },
        "Parents": []
    },
    {
        "Identifier": {
            "EntityType": "PhotoApp::UserGroup",
            "EntityId": "AVTeam"
        },
        "Parents": []
    }
]
```

## Limites de comprimento e tamanho
<a name="differences-length-limits"></a>

O Verified Permissions oferece suporte ao armazenamento sob a forma de armazenamentos de políticas que reterão seu esquema, políticas e modelos de políticas. Esse armazenamento faz com que o Verified Permissions aplique alguns limites de comprimento e tamanho que não são relevantes para o Cedar.


| Objeto | Limite do Verified Permissions (em bytes) | Limite do Cedar | 
| --- | --- | --- | 
| Tamanho da política¹ | 10.000  | Nenhum | 
| Descrição da política em linha | 150  | Não aplicável ao Cedar | 
| Tamanho do modelo de política | 10.000  | Nenhum | 
| Tamanho do esquema | 100.000  | Nenhum | 
| Tipo de entidade | 200  | Nenhum | 
| ID da apólice | 64  | Nenhum | 
| ID do modelo de política | 64  | Nenhum | 
| ID da entidade | 200  | Nenhum | 
| ID do armazenamento de políticas | 64  | Não aplicável ao Cedar | 

¹ No Verified Permissions, há um limite para políticas por armazenamento de políticas com base no tamanho combinado de entidades principais, ações e recursos de políticas criadas no armazenamento de políticas. O tamanho total de todas as políticas relacionadas a um único recurso não pode exceder 200.000 bytes. Para políticas vinculadas a modelos, o tamanho do modelo de política é contabilizado somente uma vez, mais o tamanho de cada conjunto de parâmetros usados para instanciar cada política vinculada a modelo.