Beispiel 4: UI-Filterung mit OPA und Rego - 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 4: UI-Filterung mit OPA und Rego

Die Flexibilität von OPA und Rego unterstützt die Möglichkeit, UI-Elemente zu filtern. Das folgende Beispiel zeigt, wie eine OPA-Teilregel Autorisierungsentscheidungen darüber treffen kann, welche Elemente in einer Benutzeroberfläche mit RBAC angezeigt werden sollen. Diese Methode ist eine von vielen verschiedenen Möglichkeiten, UI-Elemente mit OPA zu filtern.

UI-Filterung mit OPA und Rego

In diesem Beispiel hat eine einseitige Webanwendung vier Schaltflächen. Nehmen wir an, Sie möchten die Benutzeroberfläche von Bob, Shirley und Alice filtern, sodass sie nur die Schaltflächen sehen können, die ihren Rollen entsprechen. Wenn die Benutzeroberfläche eine Anfrage vom Benutzer erhält, fragt sie eine OPA-Teilregel ab, um zu bestimmen, welche Schaltflächen auf der Benutzeroberfläche angezeigt werden sollen. Die Abfrage übergibt Folgendes als Eingabe an OPA, wenn Bob (mit der Rolleviewer) eine Anfrage an die Benutzeroberfläche stellt:

{ "role": "viewer" }

OPA verwendet externe Daten, die für RBAC strukturiert sind, um eine Zugriffsentscheidung zu treffen:

{ "roles": { "viewer": ["viewUsers", "viewData"], "dataViewOnly": ["viewData"], "admin": ["viewUsers", "viewData", "updateUsers", "updateData"] } }

Die OPA-Teilregel verwendet sowohl die externen Daten als auch die Eingabe, um eine Liste der zulässigen Aktionen zu erstellen:

user_permissions[permissions] { permissions := data.roles[input.role][_] }

In der Teilregel verwendet OPA die als Teil der Abfrage input.role angegebenen Werte, um zu bestimmen, welche Schaltflächen angezeigt werden sollen. Bob hat die Rolleviewer, und die externen Daten geben an, dass Zuschauer über zwei Berechtigungen verfügen: viewUsers undviewData. Daher sieht die Ausgabe dieser Regel für Bob (und für alle anderen Benutzer, die eine Zuschauerrolle haben) wie folgt aus:

{ "user_permissions": [ "viewData", "viewUsers" ] }

Die Ausgabe für Shirley, die die dataViewOnly Rolle innehat, würde eine Schaltfläche mit Berechtigungen enthalten:viewData. Die Ausgabe für Alice, die die admin Rolle innehat, würde all diese Berechtigungen enthalten. Diese Antworten werden an die Benutzeroberfläche zurückgegeben, wenn nach OPA gefragt wird. user_permissions Die Anwendung kann diese Antwort dann verwenden, um die,viewUsersButton, viewDataButton und die ein- oder auszublenden. updateUsersButton updateDataButton