我正在尝试在我的应用程序(微服务体系结构)中实现ABAC模型,但我有一个问题。我有一个用户U,它对集合CollectionX的一个项目X有‘拒绝’权限。我不明白,我如何实现下一种情况-用户U从CollectionX获取所有没有项目X的项目。我如何在ABAC模型中实现这种情况?
发布于 2021-11-09 17:10:17
在XACML (ABAC标准)中,最自然的方法是使用Multiple Decision profile (MDP) with repeated categories (单个XACML请求中具有相同类别的多个< Attributes >)。如果PDP支持MDP (例如AuthzForce),您的PEP可以发出XACML请求,如下所示(为简洁起见,此处的简化形式不是实际的XACML):
资源主题类别(< Attributes >) /-id=用户身份,例如用户U (< Attribute >)资源资源类别(< Attributes >) /
中的所有项目
因此,在同一个XACML请求中,您将为集合中的每个项目重复资源类别的< Attributes >元素和一个资源-id< Attribute >(使用IncludeInResult=true)。
PDP会将其作为多个XACML请求进行处理:
资源请求1:主题类别/主题-id= U;资源类别/-id=项目1资源2:主题类别/主题-id= U;资源类别/
中的所有项等
..。并使用多个< Result >回复XACML < Response >,上面的每个请求对应一个,仅包括带有资源的属性(即本例中的IncludeInResult=true -id):
资源类别结果1: Decision=Permit,属性:资源类别/-id=物料1
中的所有项等
只要PDP支持XACML的JSON Profile (例如AuthzForce),你就可以用XML或JSON来做这件事。
如果PDP是远程的,我强烈建议在PEP中缓存决策结果。
https://stackoverflow.com/questions/69677887
复制相似问题