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 4: filtrado de la interfaz de usuario con OPA y Rego
La flexibilidad de OPA y Rego permite filtrar los elementos de la interfaz de usuario. El siguiente ejemplo demuestra cómo una regla parcial de OPA puede tomar decisiones de autorización sobre qué elementos deben mostrarse en una interfaz de usuario con RBAC. Este método es una de las muchas formas diferentes de filtrar los elementos de la interfaz de usuario con OPA.

En este ejemplo, una aplicación web de una sola página tiene cuatro botones. Supongamos que desea filtrar la interfaz de usuario de Bob, Shirley y Alice para que solo vean los botones que corresponden a sus funciones. Cuando la interfaz de usuario recibe una solicitud del usuario, consulta una regla parcial de la OPA para determinar qué botones deben mostrarse en la interfaz de usuario. La consulta pasa lo siguiente como entrada a OPA cuando Bob (con el rolviewer
) realiza una solicitud a la interfaz de usuario:
{ "role": "viewer" }
La OPA utiliza datos externos estructurados para que el RBAC tome una decisión de acceso:
{ "roles": { "viewer": ["viewUsers", "viewData"], "dataViewOnly": ["viewData"], "admin": ["viewUsers", "viewData", "updateUsers", "updateData"] } }
La regla parcial de la OPA utiliza tanto los datos externos como la entrada para producir una lista de acciones permitidas:
user_permissions[permissions] { permissions := data.roles[input.role][_] }
En la regla parcial, OPA usa lo input.role
especificado como parte de la consulta para determinar qué botones deben mostrarse. Bob tiene esa funciónviewer
, y los datos externos especifican que los espectadores tienen dos permisos: viewUsers
yviewData
. Por lo tanto, el resultado de esta regla para Bob (y para cualquier otro usuario que tenga un rol de espectador) es el siguiente:
{ "user_permissions": [ "viewData", "viewUsers" ] }
El resultado para Shirley, que tiene el dataViewOnly
rol, contendría un botón de permisos:. viewData
El resultado para Alice, quien tiene el admin
rol, contendría todos estos permisos. Estas respuestas se devuelven a la interfaz de usuario cuando se solicita user_permissions
OPA. A continuación, la aplicación puede utilizar esta respuesta para ocultar o mostrar los viewUsersButton
caracteresviewDataButton
,updateUsersButton
, y. updateDataButton