安全架构 - 驱动 UI 和特权(权利)的设置 - 基于角色,每个用户帐户

Posted

技术标签:

【中文标题】安全架构 - 驱动 UI 和特权(权利)的设置 - 基于角色,每个用户帐户【英文标题】:Security Architecture - Settings to drive UI and Priveledges (Rights) - Role-Based, per User-Account 【发布时间】:2011-07-09 01:03:42 【问题描述】:

大公司如何实现他们的安全要求,这些要求集中并用于驱动人们可以做的事情(允许调用某个网络服务、提交订单等)以及驱动 UI(禁用按钮、菜单选项,单个表单域)?

我正在考虑 RBAC 架构:用户 -> 角色、角色 -> 权限。

具有基于许多单独字段-帐户-用户-角色-数量阈值的权限的复杂应用程序将具有许多很多“角色”,并且随着角色数量的增加,管理这些变得复杂。

管理所有这些可能的选项似乎令人生畏,而我之前的经验是在应用程序中硬编码此类逻辑。

例如:If (User.Roles("IsAccounting")) btnEditOrder.enabled = false;

我的任务是设计/实现一个安全服务/架构,它将用作任何/所有应用程序(所有 .NET,但一些 GUI 和一些面向过程)的通用身份验证/授权点。

这是不可能开箱即用的,因为围绕客户帐户的业务组织和基于财务金额的权限层级。

例如:John 是用户,他可以查看和提交帐户“Microsoft”和“Google”的请求。 Mike 可以查看“Microsoft”和“Google”请求,但只能提交“Google”请求。

帐户/用户数量庞大且多变。

如果我遵循 RBAC,将有数百个“角色”来容纳所有必需的权利(特权)。这无济于事,因为最终目标是提供易于管理的 GUI 工具,以便管理人员可以将其直接下属分配给适当的角色。

我正在考虑使用以下 API(伪代码粗略草案)来实现这个安全部分:

UserContext securityContext = Security.GetContext(userID, userPwd);

在应用程序中的用法是这样的: if (securityContext.RequestManager.CanSubmitRequest("Google")) ...

这样会有成千上万的“Can(params)”方法来检查权限,这并不容易管理或使用这种模式。

感谢任何链接/想法/指针。

这是一家 .NET 商店,但我从 .NET(成员资格/AzMan)中看到的任何内容都无法满足我们所需的粒度和委派要求。 ActiveDirectory / Oracle LDAP 集成会很好,但不是必需的。

旧(当前)系统使用 LDAP 对用户进行身份验证,但所有授权都在内部完成并存储在经典的“用户、角色、权限”表中。

【问题讨论】:

【参考方案1】:

我们有几乎相同的要求,我们在大组织中有多个应用程序,我们不得不

保护多个应用程序的身份验证和授权 并从同一个中心位置管理所有这些应用程序,没有 无论这些应用程序是 .net 还是非 .net、基于 GUI 或进程 面向,

运行的应用程序可能基于 Internet 或 Intranet

应用程序应支持 AD 用户或联合用户 身份验证和授权

应用大量“基于角色”或“基于权限”的安全性或 自定义。

例如。启用/禁用功能 - 如启用按钮、禁用按钮、隐藏某些菜单、更改控件的背景颜色或更改 .net 组件的任何 .net 支持的属性等。

用于身份验证和授权的安全 Web 服务或 wcf 服务

通过组为多租户应用程序应用基于角色的安全性 和用户管理

管理组织的多个应用程序的用户 中心位置

跟踪用户的操作或审核。

【讨论】:

以上是关于安全架构 - 驱动 UI 和特权(权利)的设置 - 基于角色,每个用户帐户的主要内容,如果未能解决你的问题,请参考以下文章

测试和设置(或其他原子RMW操作)是否是任何架构上的特权指令?

框架设计

linux用户管理

无法创建映射网络驱动器,可以PING的到。重新启动系统服务中的workstation服务和重启电脑都不行。

系统安全组件

容器安全-Capabilities