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á.
Exemplo 2: RBAC básico com permissões verificadas e Cedar
Este exemplo usa Permissões Verificadas e Cedar para demonstrar o RBAC básico. Conforme mencionado anteriormente, a construção básica do Cedar é uma entidade. Os desenvolvedores definem suas próprias entidades e, opcionalmente, podem criar relacionamentos entre entidades. O exemplo a seguir inclui três tipos de entidades: Users
Roles
, Problems
e. Students
e Teachers
podem ser consideradas entidades do tipo Role,
e cada uma User
pode ser associada a zero ou a qualquer uma dasRoles
.

Em Cedar, essas relações são expressas vinculando o Role
Student
ao User
Bob
como seu pai. Essa associação agrupa logicamente todos os usuários estudantes em um grupo. Para obter mais informações sobre agrupamento no Cedar, consulte a documentação do Cedar
A política a seguir avalia a decisão ALLOW
da ação submitProblem,
para todos os diretores vinculados ao grupo lógico Students
do tipo. Role
permit ( principal in ElearningApp::Role::"Students", action == ElearningApp::Action::"submitProblem", resource );
A política a seguir avalia a decisão ALLOW
da ação submitProblem
ouanswerProblem
, de todos os diretores vinculados ao grupo lógico Teachers
do tipo. Role
permit ( principal in ElearningApp::Role::"Teachers", action in [ ElearningApp::Action::"submitProblem", ElearningApp::Action::"answerProblem" ], resource );
Para avaliar solicitações com essas políticas, o mecanismo de avaliação precisa saber se o principal referenciado na solicitação de autorização é membro do grupo apropriado. Portanto, o aplicativo deve passar informações relevantes de associação ao grupo para o mecanismo de avaliação como parte da solicitação de autorização. Isso é feito por meio da entities
propriedade, que permite que você forneça ao mecanismo de avaliação do Cedar dados de atributo e associação ao grupo para o principal e o recurso envolvido na chamada de autorização. No código a seguir, a associação ao grupo é indicada pela definição User::"Bob"
de ter um pai chamadoRole::"Students"
.
{ "policyStoreId": "ELEARNING_POLICYSTOREID", "principal": { "entityType": "ElearningApp::User", "entityId": "Bob" }, "action": { "actionType": "ElearningApp::Action", "actionId": "answerProblem" }, "resource": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "entities": { "entityList": [ { "identifier": { "entityType": "ElearningApp::User", "entityId": "Bob" }, "attributes": {}, "parents": [ { "entityType": "ElearningApp::Role", "entityId": "Students" } ] }, { "identifier": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "attributes": {}, "parents": [] } ] } }
Neste exemplo, Bob é o usuário logado que faz a answerProblem
solicitação. Portanto, Bob é o principal e a entidade é do tipoUser
. A ação que Bob está tentando realizar éanswerProblem
. Para avaliar se Bob pode realizar a answerProblem
ação, você precisa fornecer uma estrutura de entidade que vincule a entidade User
a um valor de Bob
e atribua sua associação ao grupo listando uma entidade mãe comoRole::"Students"
. Como as entidades do grupo Role::"Students"
de usuários só podem realizar a açãosubmitProblem
, essa solicitação de autorização é avaliada como. DENY
Por outro lado, se o tipo User
que tem um valor de Alice
e faz parte do grupo Role::"Teachers"
tentar realizar a answerProblem
ação, a solicitação de autorização será avaliadaALLOW
, pois a política determina que os diretores do grupo Role::"Teachers"
tenham permissão para realizar a ação answerProblem
em todos os recursos. O código a seguir mostra esse tipo de solicitação de autorização que avalia a. ALLOW
{ "policyStoreId": "ELEARNING_POLICYSTOREID", "principal": { "entityType": "ElearningApp::User", "entityId": "Alice" }, "action": { "actionType": "ElearningApp::Action", "actionId": "answerProblem" }, "resource": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "entities": { "entityList": [ { "identifier": { "entityType": "ElearningApp::User", "entityId": "Alice" }, "attributes": {}, "parents": [ { "entityType": "ElearningApp::Role", "entityId": "Teachers" } ] }, { "identifier": { "entityType": "ElearningApp::Problem", "entityId": "SomeProblem" }, "attributes": {}, "parents": [] } ] } }