

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

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