在ABAC模型中过滤集合中拒绝的项



我试图在我的应用程序(微服务架构)中实现ABAC模型,我有一个问题。我有一个用户U,它对集合CollectionX的一个项目X有"拒绝"权限。我不明白,我该如何实现下一种情况——用户U从CollectionX中获得所有物品,但没有物品X。如何在ABAC模型中实现这种情况?

在XACML (ABAC标准)中,自然的方法是使用具有重复类别(多个<属性比;在单个XACML请求中使用相同的类别)。如果PDP支持MDP(例如AuthzForce),您的PEP可以按照以下方式发出XACML请求(这里简化了格式,而不是实际的XACML):>

  • 主题类别(<属性>)/subject-id =用户身份,例如用户U (<属性祝辞)>
  • 资源类别(<属性>)/resource-id =项目1 (<属性比;IncludeInResult>
  • 资源类别(<属性>)/资源-id =项目2 (<属性比;IncludeInResult>
  • …等,用于CollectionX
  • 中的所有项目

所以在同一个XACML请求中,你重复了<属性比;具有资源id>

PDP将作为多个XACML请求处理:

  • 请求1:Subject category/Subject -id = U;资源类别/资源id =项目1 (IncludeInResult=true)
  • 请求2:Subject category/Subject -id = U;资源类别/资源id =项目2 (IncludeInResult=true)
  • …等,用于收集X
  • 中的所有项目

…并回复一个XACML <响应比;有多个><结果>s,上面每个单独的请求一个,只包括IncludeInResult=true的属性(即本例中的资源id):

  • 结果1:Decision=Permit,属性:resource category/resource-id = item 1
  • 结果2:Decision=Permit,属性:resource category/resource-id = item 2
  • 结果N: Decision=Deny,属性:resource category/resource-id = item X
  • …等,用于收集X
  • 中的所有项目

只要PDP支持XACML的JSON Profile(例如AuthzForce),就可以使用XML或JSON。

如果PDP是远程的,我强烈建议在PEP中缓存决策结果。

相关内容

  • 没有找到相关文章

最新更新