首页 文章

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

提问于
浏览
6

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

NIST RBAC Data Model

我在摘录中没有清楚地理解这一部分 -

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

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

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

谢谢你的时间 .

2 回答

  • 5

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

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

  • 1

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

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

    这里要理解的重要一点是@Imontriux(上面)提到的:

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

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

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

相关问题