在基于角色的访问控制(RBAC)中使用会话

时间:2012-11-19 10:44:58

标签: rbac

我试图了解基于RBAC模型的访问控制。我提到了以下链接。

NIST RBAC Data Model

我没有清楚地理解这部分,如摘录中所述 -

*“每个会话是一个用户到可能多个角色的映射,即用户建立会话,在该会话期间用户激活他或她被分配的角色的一些子集。每个会话与单个用户和每个用户都与一个或多个会话相关联。函数session_roles为我们提供了会话激活的角色,函数user_sessions为我们提供了与用户关联的会话集。用户可用的权限是分配给用户的权限。在所有user.s会话中激活的角色。“*

问题 - 会话如何用于激活角色?用户/组和角色之间的关系将作为管理数据插入。那么,session如何激活用户的角色子集?

P.S - >我早些时候问了这个问题here,但没有回答。可能这个问题太基本了,但我很想了解它。任何用例或链接肯定会有所帮助。

感谢您的时间。

2 个答案:

答案 0 :(得分:5)

在RBAC中,管理员通过将角色分配给角色来授予权限,此外还通过为用户分配角色来授予权限。如您所知,为了使用户能够使用特定权限,他必须至少分配一个提供所述解决方案的角色。

因此每个用户都有一组分配给他的角色。在会话期间,他可以选择激活(或停用)任何这些角色,但不能激活其他角色。激活的角色确定在会话期间给定时间用户可以使用哪些权限。例如,这对于动态分离占空比约束是有用的,其中两个角色A和B可以分配给同一用户U,但不能一起使用。因此,如果你想使用A,他必须在激活A之前停用B.

答案 1 :(得分:1)

根据我实施RBAC的经验,我几乎避免使用多会话的动态管理。

起初它听起来像一个非常整洁和灵活的想法,但当你质疑谁激活/停用角色(以及何时)时,我意识到复杂性和安全风险不值得努力(我的个人意见)。 / p>

这里需要了解的重要事项以及@Imontriux(上图)提到的内容:

  

“这对于动态分离职责很有用   约束,其中两个角色A和B可以分配给同一个用户   U,但不能一起使用。因此,如果你想使用A,他会   必须在激活A之前停用B.“

大多数情况下,必须应用职责约束的分离,为了兑现这一点,我只选择每个用户一次只有/管理一个有效会话。如果用户想要在不同的角色集下进行身份验证,他/她负责退出并重新登录。

它几乎简化了我的很多代码。这是我选择的折衷方案,可以轻松应对。