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: Users
Roles
, undProblems
. Students
und 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
.

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