Esempio 4: filtraggio dell'interfaccia utente con OPA e Rego - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio 4: filtraggio dell'interfaccia utente con OPA e Rego

La flessibilità di OPA e Rego supporta la capacità di filtrare gli elementi dell'interfaccia utente. L'esempio seguente dimostra come una regola parziale OPA può prendere decisioni di autorizzazione su quali elementi devono essere visualizzati in un'interfaccia utente con RBAC. Questo metodo è uno dei tanti modi diversi per filtrare gli elementi dell'interfaccia utente con OPA.

Filtraggio dell'interfaccia utente con OPA e Rego

In questo esempio, un'applicazione Web a pagina singola ha quattro pulsanti. Supponiamo che tu voglia filtrare l'interfaccia utente di Bob, Shirley e Alice in modo che possano vedere solo i pulsanti che corrispondono ai loro ruoli. Quando l'interfaccia utente riceve una richiesta dall'utente, interroga una regola parziale OPA per determinare quali pulsanti devono essere visualizzati nell'interfaccia utente. La query trasmette quanto segue come input a OPA quando Bob (con il ruoloviewer) effettua una richiesta all'interfaccia utente:

{ "role": "viewer" }

OPA utilizza dati esterni strutturati per RBAC per prendere una decisione di accesso:

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

La regola parziale OPA utilizza sia i dati esterni che l'input per produrre un elenco di azioni consentite:

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

Nella regola parziale, OPA utilizza quanto input.role specificato come parte della query per determinare quali pulsanti devono essere visualizzati. Bob ha il ruolo e viewer i dati esterni specificano che gli spettatori hanno due autorizzazioni: e. viewUsers viewData Pertanto, l'output di questa regola per Bob (e per tutti gli altri utenti che hanno un ruolo di spettatore) è il seguente:

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

L'output per Shirley, che ha il dataViewOnly ruolo, conterrebbe un pulsante di autorizzazione:. viewData L'output di Alice, che ha il admin ruolo, conterrebbe tutte queste autorizzazioni. Queste risposte vengono restituite all'interfaccia utente quando viene richiesta l'OPA. user_permissions L'applicazione può quindi utilizzare questa risposta per nascondere o visualizzare iviewUsersButton, viewDataButtonupdateUsersButton, e. updateDataButton