Security ABAC属性解析
我们在ABAC中有一个主语、宾语(资源)和操作(动作)。主题和对象具有用于执行规则的属性Security ABAC属性解析,security,xacml,abac,pdp,Security,Xacml,Abac,Pdp,我们在ABAC中有一个主语、宾语(资源)和操作(动作)。主题和对象具有用于执行规则的属性 我们可以有多种不同类型的主题以及资源。有些属性与某些类型的资源相关,有些属性在另一种资源的上下文中没有任何意义。在这种情况下,应该如何实现正确的属性模型?例如,我们有A和B类型的资源。对于类型A而言,属性isPublic是相关的,而对于B则不相关。如果PIP将收到请求获取B的isPublic属性,它应该怎么做?不返回任何内容或将导致负面规则解决的内容?同样的问题。如何定义和解析正确的属性模型 根据PDP的要
关于第一个问题,发送规则决策不需要的附加属性不会影响决策。看看PDP做出的XACML决定:
ddc4a53f-1c98-403c-81ce-938c97645d7d
6.
2018-07-24T02:39:21.907Z
0
用户+用户名%3D%22pdp用户%22%2C+角色%3D%22pdp用户%22
127.0.0.1:49502
肥皂
f6a721ba-058e-44df-9434-ec1505e99ddc
http://www.w3.org/TR/1999/REC-xpath-19991116
1.
管理
userone@user.com
秘密消息
否认
21
在我的本地主机上的一个示例项目中,我在特定规则的主题中查找的唯一属性是属性com.axiomatics.seniority
是否等于1或2。这意味着ADMIN
是提供的额外属性。然而,这并不影响决策
关于你的第二个问题,我不确定我是否完全理解,但我确实知道你关心PDP的性能。一般来说,PDP决策的性能——将XACML的内存和软件实现放在一边——取决于您的策略。如果发生拒绝,您将希望在您的策略中尽快获得“拒绝”
关于在PEP中设置属性,我发现使用一个函数根据将要发生的决策类型设置默认属性是很有帮助的,如:
@Override
public void uiDecisionSetDefaultAttributes() {
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
attrCatAry.add("SUBJECT");
attrTypeAry.add("INTEGER");
attrIdAry.add("com.axiomatics.seniority");
Integer userId = null;
try {
userId = userRepository.findByEmail(auth.getName()).getSeniority();
} catch (Exception e) {
log.info(e.toString());
}
attrValAry.add(userId);
}
完全公开-我为之工作,我的答案基于完全符合XACML标准的软件,如Axiomatics软件 关于第一个问题,发送规则决策不需要的附加属性不会影响决策。看看PDP做出的XACML决定:
ddc4a53f-1c98-403c-81ce-938c97645d7d
6.
2018-07-24T02:39:21.907Z
0
用户+用户名%3D%22pdp用户%22%2C+角色%3D%22pdp用户%22
127.0.0.1:49502
肥皂
f6a721ba-058e-44df-9434-ec1505e99ddc
http://www.w3.org/TR/1999/REC-xpath-19991116
1.
管理
userone@user.com
秘密消息
否认
21
在我的本地主机上的一个示例项目中,我在特定规则的主题中查找的唯一属性是属性com.axiomatics.seniority
是否等于1或2。这意味着ADMIN
是提供的额外属性。然而,这并不影响决策
关于你的第二个问题,我不确定我是否完全理解,但我确实知道你关心PDP的性能。一般来说,PDP决策的性能——将XACML的内存和软件实现放在一边——取决于您的策略。如果发生拒绝,您将希望在您的策略中尽快获得“拒绝”
关于在PEP中设置属性,我发现使用一个函数根据将要发生的决策类型设置默认属性是很有帮助的,如:
@Override
public void uiDecisionSetDefaultAttributes() {
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
attrCatAry.add("SUBJECT");
attrTypeAry.add("INTEGER");
attrIdAry.add("com.axiomatics.seniority");
Integer userId = null;
try {
userId = userRepository.findByEmail(auth.getName()).getSeniority();
} catch (Exception e) {
log.info(e.toString());
}
attrValAry.add(userId);
}
完全公开-我为之工作,我的答案基于完全符合XACML标准的软件,如Axiomatics软件
根据PDP的要求,我们是否应传递所有可能的属性?据我所知,这将提高性能,因为它将允许按策略的目标筛选出许多策略
在ABAC中,您可以选择提前将所有属性从PEP传递到PDP。例如,你可以说:
- Alice销售部经理能否批准销售部草稿中的记录#123
- 艾丽斯能批准记录吗