如何在实际应用中使用XACML和PIP?

时间:2014-12-22 07:08:45

标签: wso2is xacml xacml3 alfa

如何使用XACML(使用WSO2 PDP)和PIP(如果需要)覆盖以下场景。

  

在二手车应用中,特别是位置,销售人员   允许查看更新汽车价格。他们只能查看汽车   分配给他们。

现在,从的角度,我们可以为销售人员角色创建政策,并根据位置隐藏特定菜单。

但是如何处理方法getCarDetails(Object User){...}

此处基于UserID(销售员),我们将显示该列表。

如何使用规格进行设计?

我对此的理解是:我们可以使用并在此方法之上添加“销售人员”角色。但它只会限制来自不同角色的其他用户。从那里我很困惑,我们应该根据我们的传统应用程序使用数据库调用userid并获取汽车列表或有没有办法获得xacml的细粒度访问?

1 个答案:

答案 0 :(得分:1)

您的问题包含两个问题:

  1. 如何为我的政策建模?
  2. 如何保护我的申请? (执行决定)
  3. 首先,让我们在ALFA中为您的政策建模:

    规则:当且仅当汽车的指定销售员标识符等于请求用户的身份时,销售人员才能查看汽车。

    在ALFA中,这变为:

    namespace com.axiomatics{
        /**
         * A sales person can view a car if and only if the car's assigned salesperson 
         * identifier is equal to the requesting user's identity.
         */
        policy viewCars{
            target clause user.role=="sales person" and actionId == "view" and objectType=="car"
            apply firstApplicable
            /**
             * 
             */
            rule allowAssignedUser{
                permit
                condition car.assignedSalesPerson==user.identifier
            }
        }
    }
    

    这是你的建模排序。

    现在,关于第二个问题:我如何执行授权?除非你正确地记录它们,否则我会反对混合Spring Security和XACML策略管理的角色。

    您可以采取两种方法。

    1. 使用多决策配置文件 - 这是XACML 3.0可选配置文件集的一部分,或
    2. 使用反向查询方法 - 这仅适用于Axiomatics。我不确定WSO2是否支持它。
    3. 多决策配置文件(MDP)定义了如何使用单个请求将中写入的多个授权请求发送到策略决策点(PDP)。这可以节省您多次往返。您将收到的响应将包含与发送的原始请求中的授权请求一样多的决策。您还可以节省运输时间和评估时间。当您知道要保护多少项目以及该数字在1到1,000之间但不是更大时,请使用MDP(当然,这总是值得一试)。您可以在Axiomatics blog上阅读有关MDP的更多信息。在您的情况下,流程如下:

      1. 致电getCarDetails(Object user)
      2. 调用底层数据库以检索所有汽车
      3. 以MDP方式调用PDP以查找找到的所有记录
      4. 仅返回您持有许可证的记录
      5. 主要缺点是,您最终可能会从数据库中接收数千条(如果不是数百万条)记录。然后使用MDP是不切实际的。

        反向查询方法虽然特定于Axiomatics,但却很有趣。它在XACML PDP之上定义了一个新接口,允许您以相反的方式查询授权引擎。而不是问:

        • Alice可以查看汽车#123吗?

        反向查询可让您询问

        • Alice可以查看哪些车?

        响应是一个过滤表达式,例如SQL语句,而不是响应是Permit或Deny,例如。

        • SELECT id FROM cars WHERE assignedSP ='Alice';

        然后,您只需对数据库使用SQL语句进行查询,并仅返回授权数据。无论您的数据库中有多少数据,这都有效。您可以通过此webinar找到有关ARQ SQL的更多信息。