本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例 5:使用已验证权限和 Cedar 进行用户界面筛选
您还可以使用已验证的权限根据授权的操作对用户界面元素实施 RBAC 筛选。对于具有上下文敏感用户界面元素的应用程序来说,这非常有价值,这些元素可能与特定用户或租户相关联,如果是多租户 SaaS 应用程序。
在以下示例中Users,Roleviewer不允许执行更新。对于这些用户,用户界面不应呈现任何更新按钮。
在此示例中,单页 Web 应用程序有四个按钮。哪些按钮可见取决于当前登录应用程序的用户。Role在单页 Web 应用程序呈现 UI 时,它会查询 “已验证权限” 以确定用户有权执行哪些操作,然后根据授权决定生成按钮。
以下策略指定值为Role的类型viewer可以同时查看用户和数据。此策略的ALLOW授权决策需要viewData或viewUsers操作,还需要将资源与Data或类型相关联Users。ALLOW决定允许 UI 呈现两个按钮:viewDataButton和viewUsersButton。
permit ( principal in GuiAPP::Role::"viewer", action in [GuiAPP::Action::"viewData", GuiAPP::Action::"viewUsers"], resource ) when { resource in [GuiAPP::Type::"Data", GuiAPP::Type::"Users"] };
以下策略指定值为Role的类型viewerDataOnly只能查看数据。此策略的ALLOW授权决策需要viewData采取行动,还需要与该类型关联的资源Data。ALLOW决定允许 UI 呈现按钮viewDataButton。
permit ( principal in GuiApp::Role::"viewerDataOnly", action in [GuiApp::Action::"viewData"], resource in [GuiApp::Type::"Data"] );
以下策略指定值为Role的类型admin可以编辑和查看数据和用户。此策略的ALLOW授权决策需要updateDataupdateUsers、viewData,或的操作viewUsers,并且还需要将资源与Data或类型相关联Users。ALLOW决定允许 UI 呈现所有四个按钮:updateDataButtonupdateUsersButton、viewDataButton、和viewUsersButton。
permit ( principal in GuiApp::Role::"admin", action in [ GuiApp::Action::"updateData", GuiApp::Action::"updateUsers", GuiApp::Action::"viewData", GuiApp::Action::"viewUsers" ], resource ) when { resource in [GuiApp::Type::"Data", GuiApp::Type::"Users"] };