Beispiel 2: Basic RBAC mit verifizierten Berechtigungen und Cedar - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiel 2: Basic RBAC mit verifizierten Berechtigungen und Cedar

In diesem Beispiel werden Verified Permissions und Cedar verwendet, um grundlegende RBAC-Funktionen zu demonstrieren. Wie bereits erwähnt, ist das grundlegende Konstrukt von Cedar eine Entität. Entwickler definieren ihre eigenen Entitäten und können optional Beziehungen zwischen Entitäten erstellen. Das folgende Beispiel umfasst drei Arten von Entitäten: UsersRoles, undProblems. Studentsund Teachers können als Entitäten des Typs betrachtet werden, Role, und jede User kann mit Null oder einer der folgenden Entitäten verknüpft werdenRoles.

Beispiel für eine grundlegende RBAC-Implementierung mit Amazon Verified Permissions und Cedar zur Implementierung eines PDP

In Cedar werden diese Beziehungen dadurch ausgedrückt, dass das Objekt mit dem User Bob als Role Student übergeordnetem Element verknüpft wird. Diese Zuordnung gruppiert logisch alle studentischen Benutzer in einer Gruppe. Weitere Informationen zur Gruppierung in Cedar finden Sie in der Cedar-Dokumentation.

Die folgende Richtlinie gilt als Grundlage für die Entscheidung ALLOW für die Aktion submitProblem, für alle Prinzipale, die mit der logischen Gruppe Students des Typs verknüpft sind. Role

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

Die folgende Richtlinie bewertet die Entscheidung ALLOW für die Aktion submitProblem oder für alle PrinzipaleanswerProblem, die mit der logischen Gruppe Teachers des Typs verknüpft sind. Role

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

Um Anfragen mit diesen Richtlinien auswerten zu können, muss das Evaluierungsmodul wissen, ob der in der Autorisierungsanfrage angegebene Hauptbenutzer Mitglied der entsprechenden Gruppe ist. Daher muss die Anwendung im Rahmen der Autorisierungsanfrage die entsprechenden Informationen zur Gruppenmitgliedschaft an die Evaluierungs-Engine weitergeben. Dies erfolgt über die entities Eigenschaft, die es Ihnen ermöglicht, der Cedar Evaluation Engine Attribut- und Gruppenmitgliedschaftsdaten für den Prinzipal und die Ressource zur Verfügung zu stellen, die am Autorisierungsaufruf beteiligt waren. Im folgenden Code wird die Gruppenzugehörigkeit dadurch gekennzeichnet, dass ein Elternteil angerufen hatRole::"Students". User::"Bob"

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

In diesem Beispiel ist Bob der angemeldete Benutzer, der die answerProblem Anfrage stellt. Daher ist Bob der Principal und die Entität ist vom TypUser. Die Aktion, die Bob auszuführen versucht, istanswerProblem. Um zu beurteilen, ob Bob die answerProblem Aktion ausführen kann, müssen Sie eine Entitätsstruktur angeben, die die Entität User mit einem Wert von verknüpft Bob und ihr Gruppenmitgliedschaft zuweist, indem sie eine übergeordnete Entität als Role::"Students" auflistet. Da Entitäten in der Benutzergruppe nur die Aktion ausführen Role::"Students" dürfensubmitProblem, wird diese Autorisierungsanfrage wie folgt ausgewertet. DENY

Wenn andererseits der TypUser, der den Wert hat Alice und Teil der Gruppe ist, Role::"Teachers" versucht, die answerProblem Aktion auszuführen, wird die Autorisierungsanfrage als ausgewertetALLOW, da die Richtlinie vorschreibt, dass Prinzipale in der Gruppe die Aktion answerProblem für alle Ressourcen ausführen Role::"Teachers" dürfen. Der folgende Code zeigt diese Art von Autorisierungsanfrage, die zu ausgewertet wird. 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": [] } ] } }