Security ABAC属性解析

Security ABAC属性解析,security,xacml,abac,pdp,Security,Xacml,Abac,Pdp,我们在ABAC中有一个主语、宾语(资源)和操作(动作)。主题和对象具有用于执行规则的属性 我们可以有多种不同类型的主题以及资源。有些属性与某些类型的资源相关,有些属性在另一种资源的上下文中没有任何意义。在这种情况下,应该如何实现正确的属性模型?例如,我们有A和B类型的资源。对于类型A而言,属性isPublic是相关的,而对于B则不相关。如果PIP将收到请求获取B的isPublic属性,它应该怎么做?不返回任何内容或将导致负面规则解决的内容?同样的问题。如何定义和解析正确的属性模型 根据PDP的要

我们在ABAC中有一个主语、宾语(资源)和操作(动作)。主题和对象具有用于执行规则的属性

  • 我们可以有多种不同类型的主题以及资源。有些属性与某些类型的资源相关,有些属性在另一种资源的上下文中没有任何意义。在这种情况下,应该如何实现正确的属性模型?例如,我们有AB类型的资源。对于类型A而言,属性isPublic是相关的,而对于B则不相关。如果PIP将收到请求获取BisPublic属性,它应该怎么做?不返回任何内容或将导致负面规则解决的内容?同样的问题。如何定义和解析正确的属性模型

  • 根据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
    在上面的问题中,我们传入Alice的角色和部门以及记录的状态和部门。我们假设这就是达成决策所需的全部政策。这在PEP(或应用程序)和PDP之间引入了紧密耦合,但由于PDP不需要外部电源(PIP),因此速度非常快

    极端相反的是只发送“键”属性,例如

    • 艾丽斯能批准记录吗
    在这种情况下,PDP需要为用户属性和reso调用一个PIP