Diferenças entre as permissões verificadas da Amazon e a linguagem de política do Cedar - Amazon Verified Permissions

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

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 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 definido em um armazenamento de políticas.

  • As permissões verificadas não permitem que você crie um namespace que seja uma string vazia ou inclua os seguintes valores:aws,amazon, ou. cedar

Suporte do modelo de política

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

As permissões verificadas exigem que todos os nomes de JSON chave do esquema sejam cadeias de caracteres não vazias. O Cedar permite strings vazias em alguns casos, como para propriedades ou namespaces.

Suporte ao tipo de extensão

As Permissões Verificadas oferecem suporte aos tipos de extensão Cedar nas políticas, mas atualmente não oferecem suporte para incluí-los na definição de um esquema por meio do console de Permissões Verificadas.

Os tipos de extensão incluem os tipos de dados de ponto fixo (decimal) e de endereço IP (ipaddr).

JSONFormato de cedro para entidades

No momento, as Permissões verificadas exigem que você passe a lista de entidades a serem consideradas em uma solicitação de autorização usando a estrutura definida para o EntitiesDefinition, que é uma matriz de EntityItemelementos. Atualmente, as Permissões Verificadas não oferecem suporte à aprovação da lista de entidades a serem consideradas em uma solicitação de autorização no JSONformato Cedar. Para requisitos específicos de formatação das entidades para uso no Verified Permissions, consulte Formatação de entidades.

Definição de grupos de ação

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ções como parte da lista de entidades que você deve passar para as operações de autorização. API

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 JSON formatação das entidades nas Permissões Verificadas difere do Cedar das seguintes maneiras:

  • Nas Permissões verificadas, um JSON objeto deve ter todos os seus pares de valores-chave agrupados em um JSON objeto com o nome de. Record

  • Uma JSON lista em Permissões verificadas deve ser agrupada em um par JSON de valores-chave em que o nome da chave é Set e o valor é a JSON lista original do Cedar.

  • ParaString,Long, e nomes Boolean de tipo, cada par de valores-chave do Cedar é substituído por um JSON objeto em Permissões verificadas. O nome do objeto é o nome da chave original. Dentro do JSON objeto, há um par de valores-chave em que o nome da chave é o nome do tipo do valor escalar (StringLong, ouBoolean) e o valor é o valor da entidade Cedar.

  • A formatação de sintaxe das entidades do Cedar e das entidades do Verified Permissions difere nos seguintes aspectos:

    Formato do Cedar Formato do Verified Permissions
    uid Identifier
    type EntityType
    id EntityId
    attrs Attributes
    parents Parents
exemplo - Listas

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

Cedar
[ { "number": 1 }, { "sentence": "Here is an example sentence" }, { "Question": false } ]
Verified Permissions
{ "Set": [ { "Record": { "number": { "Long": 1 } } }, { "Record": { "sentence": { "String": "Here is an example sentence" } } }, { "Record": { "question": { "Boolean": false } } } ] }
exemplo - 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.

Cedar
[ { "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": [] } ]
Verified Permissions
[ { "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

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.