PIP应该如何解析正确的属性值?它应该能够解析属性值是什么类型的接口?例如,我需要获得用户角色,在本例中,我只需要为用户id传递一个属性。现在让我们把这个任务变得更加复杂。如果我有可能更改用户角色的上下文,那么这里仅使用一个用户id是不够的。在这种情况下,我需要传递我们试图获得用户角色的访问级别。
因此,在这个例子中,我们可以看到,这个接口每次都会改变,唯一合适的就是接受一切。
在这种情况下,PIP通常是如何实现的?
更新
示例:我们有以下层次结构:
Level 0 1 2
Organization < tenants < documents. 符号<表示右边是左操作数的子操作数。
用户可能在每个级别上都有角色管理或用户。如果用户在n级别上具有管理角色,那么他能够访问该级别和级别n+1、n+2、n+3.上的任何内容。同时,用户将在所有级别n-1、n-2、n-3.上都有角色用户。
示例:
user admin admin
Organization < tenants < documents这是第一部分。第二部分是关于文件。比方说,我们有一些属性,比如publicTenant和publicDocument.在不同层次上彼此之间的分辨率是不相关的,不仅需要对userId的了解,而且还需要了解我们工作的层次和资源属性(如organizationId、tenantId和documentId ),以便正确地解析用户的角色,以及资源属性。
如何在ABAC中正确地实现这一点?目前的解决方案是混合ACL/RBAC/ABAC。ACL和RBAC隐藏在ABAC下,用作主体的属性,但这并不正确。
发布于 2018-07-29 00:19:57
以下方法基于XACML模型。如果您需要一个更好地处理请求中缺少一些资源属性的解决方案,请告诉我们。我可以更新我的答案,但是解决方案更复杂,因为它增加了对空/未定义属性的更多检查。
我使用了一个简化的语法,但是您可以通过以下几个约定轻松地将其转换为XACML:
PolicySet应该是这样的:
- Policy 'Organization Level' - Rule 'Admin Role': Permit if _subject.organization-level-role_ = 'Admin'
- Rule 'User Role': Permit if _subject.organization-level-role_ = 'User' and ... other conditions to restrict what the User role can do at organization level ... (if too complex to fit in a Rule, you can change these Rules to Policies and the enclosing Policy to a PolicySet)
- Policy 'Tenant Level' - Rule 'Admin Role': Permit if _subject.tenant-level-role_ = 'Admin'
- Rule 'User Role': Permit if _subject.tenant-level-role_ = 'User' and ... other conditions to restrict what the User role can do at tenant level ... (if too complex to fit in a Rule, you can change these Rules to Policies and the enclosing Policy to a PolicySet)
- Policy 'Document level' - Rule 'Admin Role': Permit if _subject.document-level-role_ = 'Admin'
- Rule 'User Role': Permit if _subject.document-level-role_ = 'User' and ... other conditions to restrict what the User role can do at document level ...
为此,您需要实现一个或多个PIP来解决以下主题属性(您可以在一个PIP中完成所有操作,特别是如果所有的用户角色都由同一个系统管理,这取决于您):
关于和平执行方案执行情况的几点评论:
https://stackoverflow.com/questions/51516016
复制相似问题