Permite o acesso aos atributos de uma entidade (ABAC) - 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á.

Permite o acesso aos atributos de uma entidade (ABAC)

O controle de acesso por atributo (ABAC) é uma estratégia de autorização que define permissões com base em atributos. O Verified Permissions permite que sejam anexados atributos a entidades principais, ações e recursos. Esses atributos podem, então, ser referenciados nas cláusulas when e unless das políticas que avaliam os atributos das entidades principais, das ações e dos recursos que compõem o contexto da solicitação.

Os exemplos a seguir usam os atributos definidos no aplicativo hipotético chamado PhotoFlash descrito na seção Exemplo de esquema do Guia de referência da linguagem de políticas Cedar.

Este exemplo mostra como criar uma política que permita a qualquer entidade principal do departamento HardwareEngineering com um nível de trabalho maior ou igual a 5 visualizar e listar fotos no álbum device_prototypes.

permit( principal, action in [Action::"listPhotos", Action::"view"], resource in Album::"device_prototypes" ) when { principal.department == "HardwareEngineering" && principal.jobLevel >= 5 };

Este exemplo mostra como criar uma política que permita à usuária alice visualizar qualquer recurso do tipo de arquivo JPEG.

permit( principal == User::"alice", action == Action::"view", resource ) when { resource.fileType == "JPEG" };

As ações têm atributos de contexto. Você deve passar esses atributos no context de uma solicitação de autorização. Este exemplo mostra como você pode criar uma política que permita alice ao usuário realizar qualquer readOnly ação. Você também pode definir uma appliesTo propriedade para ações em seu esquema. Isso especifica ações válidas para um recurso quando você deseja garantir que, por exemplo, os usuários só possam tentar autorizar ViewPhoto um recurso do tipo. PhotoFlash::Photo

permit( principal == PhotoFlash::User::"alice", action, resource ) when { context has readOnly && context.readOnly == true };

A melhor maneira de definir as propriedades das ações em seu esquema, no entanto, é organizá-las em grupos de ações funcionais. Por exemplo, você pode criar uma ação chamada ReadOnlyPhotoAccess e configurada PhotoFlash::Action::"ViewPhoto" para ser membro de ReadOnlyPhotoAccess um grupo de ação. Este exemplo mostra como você pode criar uma política que conceda a Alice acesso às ações somente para leitura nesse grupo.

permit( principal == PhotoFlash::User::"alice", action, resource ) when { action in PhotoFlash::Action::"ReadOnlyPhotoAccess" };

Este exemplo mostra como criar uma política que permita a todas as entidades principais executar qualquer ação nos recursos para os quais elas tenham o atributo owner.

permit( principal, action, resource ) when { principal == resource.owner };

Este exemplo mostra como criar uma política que permita a qualquer entidade principal visualizar qualquer recurso se o atributo department da entidade principal corresponder ao atributo department do recurso.

nota

Se uma entidade não tiver um atributo mencionado em uma condição de política, a política será ignorada quando uma decisão de autorização for tomada e a avaliação dessa política falhar para essa entidade. Por exemplo, qualquer entidade principal que não tenha um atributo department não poderá receber dessa política acesso a nenhum recurso.

permit( principal, action == Action::"view", resource ) when { principal.department == resource.owner.department };

Este exemplo mostra como criar uma política que permita a qualquer entidade principal executar qualquer ação em um recurso se a entidade principal for o owner do recurso OU se a entidade principal fizer parte do grupo admins do recurso.

permit( principal, action, resource, ) when { principal == resource.owner || resource.admins.contains(principal) };