8

当使用 LDAP 存储实现 RBAC 模型时(我使用 Apache Directory 1.0.2 作为测试平台),一些参与者显然可以映射到特定的对象类:

  • 资源 - 我没有看到一个清晰的映射。applictionEntity 似乎只是为了这个目的而切线
  • 权限 - 权限可以被视为单一用途的角色;显然我没有考虑 LDAP 权限,因为它们管理对 LDAP 对象和属性的访问,而不是对资源的 RBAC 权限
  • 角色 - 直接映射到 groupOfNames 或 groupOfUniqueNames,对吗?
  • 用户 - 人

在过去,我看到过在目录中不以任何方式处理资源的模型,并且权限和角色被映射到 Active Directory 组。

有没有更好的方式来代表这些演员?讨论模式的良好映射和意图的文档怎么样?

4

2 回答 2

4

RBAC 不是 RBAC 不是 RBAC,纸面上的 RBAC 很难,但在现实生活中几乎不可能实现。

每个人对 RBAC 都有自己的“想法”,并且大多数人对与 RBAC 相关的每一件事都使用不同的术语。通常,从 LDAP 实现的角度来看,您很少拥有所有“部分”来在 LDAP 中正确实现。

简单来说,“零件”是:

S = 主题 = 一个人或自动代理或用户

P = 权限 = 对目标资源访问模式的批准

T = 目标资源 = 您要为其分配权限的对象

角色至少需要关联权限和用户。目标资源可能完全在 LDAP 之外。因此,它可能是 Tomcat 服务器上的应用程序,或者只是读取 LDAP 服务器中“其他”条目的权利。

因此,通常您在 LDAP 中要做的最好的事情是设置一个具有用户列表的对象,如果 LDAP 中有一些资源,请为这些目标资源分配适当的目录权限。

然后是小问题的实现。

我们现在需要一个策略来实现我们的角色。因此,如果没有关于如何使用它的策略,我们的角色(我们将其称为 USER-READ-ONLY)是没有用的。

在我们的例子中,我们可以说 USER-READ-ONLY 角色可以读取我们组织中的任何内容。

所以我们现在有一个政策。此策略存储在哪里?策略的数字表示存储在“策略信息点”或 PIP 中。

我们如何解释 PIP 提供的政策?策略由策略决策点 (PDP) 解释。

谁决定主题(用户)是否可以访问资源?政策执行点 (PEP)。

将所有这些策略内容放在一起,我们最终得到策略的数字表示,由策略信息点提供给策略决策点,然后将决策传递给允许或拒绝访问的策略执行点。

那么在我们的 RBAC 故事中,PIP、PDP 和 PEP 在哪里?好吧,如果目标资源在 LDAP 目录中,那么它就是 PIP 的 LDAP 目录(我们可能对其进行了硬编码并且没有抽象,PIP 和 PEP 也是如此,这很容易。

但如果是我们的 Tomcat 应用程序,它必须是 Tomcat 应用程序内的一个可以中断的方法,知道必须使用一个方法说“我有这个主题(用户)并且他想要访问这个目标资源(库存)来执行这个权限(只读)”。

当然,所有这些东西都有一些标准。(Google XAML、RFC3198、ISO10181-3、NIST)但它们是与实际实现有很大差距的标准。

所以请记住,RBAC 的真正实现很难。

当然,恕我直言,我们应该了解 RBAC,研究论文并将其作为战略方向,但在广泛的供应商和应用程序基础上的实际实施,我们还没有实现。

-吉姆

于 2012-10-12T09:40:27.657 回答
0

查看 Fortress,它是使用 LDAP 的 ANSI RBAC (INCITS 359) 的真实开源实现。 http://iamfortress.org/

是的,实施起来相当困难,但我们已经在这个问题上工作了 10 多年。;-)

于 2014-02-25T23:49:29.170 回答