Ejemplo 2: RBAC básico con permisos verificados y Cedar - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo 2: RBAC básico con permisos verificados y Cedar

En este ejemplo, se utilizan permisos verificados y Cedar para demostrar el RBAC básico. Como se mencionó anteriormente, la construcción básica de Cedar es una entidad. Los desarrolladores definen sus propias entidades y, si lo desean, pueden crear relaciones entre entidades. El siguiente ejemplo incluye tres tipos de entidades: UsersRoles, yProblems. Studentsy Teachers pueden considerarse entidades de este tipo Role, y cada una de ellas User puede estar asociada a cero o a cualquiera de lasRoles.

Ejemplo de implementación básica de RBAC con Amazon Verified Permissions y Cedar para implementar un PDP

En Cedar, estas relaciones se expresan vinculando el Role Student a User Bob como su matriz. Esta asociación agrupa de forma lógica a todos los usuarios estudiantes en un grupo. Para obtener más información sobre la agrupación en Cedar, consulte la documentación de Cedar.

La siguiente política evalúa la decisión de la acción ALLOW submitProblem, para todos los principales que están vinculados al grupo lógico Students de este tipo. Role

permit ( principal in ElearningApp::Role::"Students", action == ElearningApp::Action::"submitProblem", resource );

La siguiente política evalúa la decisión ALLOW de la acción submitProblem o answerProblem de todos los principios que están vinculados al grupo Teachers lógico de este tipo. Role

permit ( principal in ElearningApp::Role::"Teachers", action in [ ElearningApp::Action::"submitProblem", ElearningApp::Action::"answerProblem" ], resource );

Para evaluar las solicitudes con estas políticas, el motor de evaluación necesita saber si el director al que se hace referencia en la solicitud de autorización es miembro del grupo apropiado. Por lo tanto, la solicitud debe transmitir la información relevante sobre la pertenencia al grupo al motor de evaluación como parte de la solicitud de autorización. Esto se hace a través de la entities propiedad, que le permite proporcionar al motor de evaluación de Cedar los datos sobre los atributos y la pertenencia al grupo del director y el recurso involucrados en la solicitud de autorización. En el siguiente código, la pertenencia a un grupo se indica definiendo User::"Bob" como la llamada a un padreRole::"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": [] } ] } }

En este ejemplo, Bob es el usuario registrado que realiza la answerProblem solicitud. Por lo tanto, Bob es el principal y la entidad es de ese tipoUser. La acción que Bob intenta realizar esanswerProblem. Para evaluar si Bob puede realizar la answerProblem acción, es necesario proporcionar una estructura de entidad que vincule a la entidad User con un valor de Bob y asigne su pertenencia a un grupo mediante la inclusión de una entidad principal comoRole::"Students". Como las entidades del grupo Role::"Students" de usuarios solo pueden realizar la acciónsubmitProblem, esta solicitud de autorización se evalúa como. DENY

Por otro lado, si el tipo User que tiene un valor de Alice y forma parte del grupo Role::"Teachers" intenta realizar la answerProblem acción, la solicitud de autorización se evalúa como talALLOW, ya que la política establece que los directores del grupo pueden realizar la acción answerProblem en todos Role::"Teachers" los recursos. El código siguiente muestra este tipo de solicitud de autorización que se evalúa como. 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": [] } ] } }