使用LDAP存储实现RBAC模型时(我使用Apache Directory 1.0.2作为测试平台),某些actor显然可以映射到特定的objectClasses:
过去我见过模型,其中资源没有以任何方式在目录中处理,权限和角色被映射到Active Directory组。
有没有更好的方式来代表这些演员?如何讨论模式的良好映射和意图?
答案 0 :(得分:4)
RBAC不是RBAC不是RBAC而RBAC在纸面上很难,但在现实生活中几乎不可能实现。
每个人都有自己的RBAC“想法”,大多数人都会对与RBAC相关的每件事使用不同的术语。通常,从LDAP实现的角度来看,很少有所有“部分”在LDAP中进行正确的实现。
简单来说,“零件”是:
S =主题=个人或自动代理或用户
P = Permissions =批准访问目标资源的方式
T =目标资源=您要为其分配权限的对象
角色至少需要关联权限和用户。 目标资源可能完全在LDAP之外。因此它可以是Tomcat服务器上的应用程序,也可以是读取LDAP服务器中“其他”条目的权限。
通常,您在LDAP中所做的最好的事情就是设置一个包含用户列表的对象,如果有一些资源在LDAP中,则为这些目标资源分配正确的目录权限。
然后实施的问题很少。
我们现在需要一个实施我们角色的政策。因此,如果没有关于如何使用它的政策,我们的角色,我们将其称为USER-READ-ONLY。
在我们的案例中,我们可以说USER-READ-ONLY Role可以读取组织中的任何内容。
所以我们现在有一个政策。该政策存储在哪里?策略的数字表示存储在“策略信息点”或PIP中。
我们如何解释PIP提供的政策?政策由政策决策点(PDP)解释。
谁决定主题(用户)是否可以访问资源?政策执行点(PEP)。
将所有这些政策内容放在一起,我们最终得到政策的数字表示,由政策信息点提供给政策决策点,然后决策点将决策传递给允许或拒绝访问的政策执行点。 / p>
所以在我们的RBAC故事中,PIP,PDP和PEP在哪里? 好吧,如果目标资源在LDAP目录中,那么它是作为PIP的LDAP目录(我们可能硬编码并且不是抽象的,PIP同样也是PEP,也是PEP,这很容易。
但是如果它是我们的Tomcat应用程序,它必须是Tomcat应用程序中的一个可以中断的方法知道必须使用一种方法来说“我有这个主题(用户)并且他想要访问这个目标资源(库存)到执行此权限(只读)“。
当然,所有这些东西都有一些标准。 (Google XAML,RFC3198,ISO10181-3,NIST)但它们是标准,在实际实施方面存在很大差距。
所以请记住,RBAC的真正实现很难。
当然,恕我直言,我们应该了解RBAC,研究论文并将其作为战略方向,但是在广泛的供应商和应用程序中实际实现,我们还没有。
-Jim
答案 1 :(得分:0)
查看Fortress,它是使用LDAP的ANSI RBAC(INCITS 359)的真实开源实现。 http://iamfortress.org/
是的,实施起来相当困难,但我们已经解决了这个问题超过10年。 ; - )