在 RBAC 中将“功能”与“范围”分开

信息安全 访问控制 授权 权限 rbac 算盘
2021-08-10 13:34:58

我正在尝试制定一个 RBAC 权限模型,该模型允许将权限与应用这些权限的范围分开。我一直无法找到描述这一点的标准模型。

这是一个例子:

  1. 权限由对资源的操作组成:
    • (查看)(运营报告)
    • (创建)(运营报告)
    • (管理)(发布)
  2. 角色是权限的集合:
    • A(产品经理)可以(管理发布)和(查看运营报告)
    • A(运营经理)可以(创建运营报告)和(查看运营报告)
  3. 可以为用户分配角色:

    (Alice) 和 (Bob) 是 (产品经理)

到目前为止,这是标准的 RBAC-0。现在让我们添加另一个正交层:

  • (Alice)是“酷新产品(CNP)”的(产品经理)
  • (Bob)是“旗舰产品(FSP)”的(产品经理)
  • (查理)是(产品经理)...
  • ...

这似乎是一个相当常见的用例。

在一个简单的实现中,我们可以为每个产品复制角色和权限。所以而不是:

  • (产品经理)
    • (管理)(发布)
    • (查看)(运营报告)

我们现在有:

  • ( CNP产品经理)
    • (管理)(CNP发布)
    • (查看)(CNP行动报告)
  • (全汉产品经理)
    • (管理)(FSP发布)
    • (查看)(FSP运营报告)
  • ...
  • ...

这很快就会失控。我如何对这种情况进行建模以避免指数重复?

1个回答

虽然基于角色的访问控制 (RBAC) 是管理授权的主要模型,但实施 RBAC 有一些限制和后果。

后果之一是角色爆炸,其中需要一个角色的多个版本(重复)来分别管理对同一类的不同数据集的访问。

以角色为中心的基于属性的访问控制是对传统 RBAC 模型的扩展,以最大限度地减少这种 RBAC 限制。

每个与访问控制相关的用户和对象都与一组属性相关联。

属性将访问控制逻辑分配给用户、对象,定义用户和对象如何协同工作,如果相关属性分配给特定用户,则与对象相关的哪些活动可用。

文献中描述了几种 RCABAC 方法:

  1. 使用属性将用户动态分配给角色,例如将预设角色分配给组织结构职位,将角色分配给业务功能以简化角色分配
  2. 将角色视为另一个属性
  3. 用属性限制角色的权限

参考书目

Vincent Hu、David Ferraiolo、Richard Kuhn (NIST)、Adam Schnitzer (BAH)、Kenneth Sandlin、Robert Miller、Karen Scarfone,2014 年,NIST,SP 800-162,基于属性的访问控制 (ABAC) 定义和注意事项指南

Jin, X.、Sandhu, R. 和 Krishnan, R.,2012 年 10 月。RABAC:以角色为中心的基于属性的访问控制。在计算机网络安全的数学方法、模型和架构国际会议上(第 84-96 页)。施普林格,柏林,海德堡。

Rajpoot, QM, Jensen, CD 和 Krishnan, R.,2015 年 7 月。将属性集成到基于角色的访问控制中。在 IFIP 数据和应用程序安全和隐私年度会议上(第 242-249 页)。施普林格,湛。

DR Kuhn、EJ Coyne、TR Weil(2010 年),向基于角色的访问控制添加属性,IEEE 计算机(2010 年 6 月)。

其他链接

NIST,基于角色的访问控制项目