如何更新XACML / ALFA政策?

时间:2014-10-15 06:19:54

标签: xacml alfa

我在ALFA写了政策,其中:

  • 如果转帐金额 大于 转帐限额,则该请求应为拒绝

我想知道如何指定特定的转移限制。从管理员的角度来看,如果将来我想更新转移限制,应该在哪里以及如何完成?

例如。我想将当前转移限额设置为 $ 2000 。如果我愿意,我该如何做,然后如何更新转移限制?

3 个答案:

答案 0 :(得分:1)

要添加David提到的内容,您可以在数据库单元格中设置此值,并将其值更新为ABA / XACML离线值(使用您组织中的其他进程)。然后,可以在评估时通过告知您的PDP使用SQL" withdrawalLimit"

从特定数据库查询select limit from ....来查询该值。

答案 1 :(得分:0)

因此,这是XACML的优势,因为规则在策略中定义,您可以动态更新访问控制规则。可能已在XACML策略中配置了传输限制。您可以使用编辑XACML策略来更新它。然后,此更新必须受到PDP运行时的影响,并且会根据它切断请求。

ALFA插件可以轻松更新XACML策略属性,而不仅仅是更新原始策略。希望你能找到它。但是,如果您更新XACML策略,它也可以工作。

答案 2 :(得分:0)

很高兴看到你正在取得进步。在您的情况下,ALFA中的授权策略如下所示:

namespace com.axiomatics.banking{
    attribute actionId{
        category = actionCat
        id = "actionId"
        type = string
    }
    attribute resourceType{
        category = resourceCat
        id = "resourceType"
        type = string
    }
    attribute amount{
        category = resourceCat
        id = "amount"
        type = double
    }

    /**
     * Policy to transfer money
     */
    policy transferMoney{
        target clause actionId=="transfer" and resourceType=="money"
        apply firstApplicable
        /**
         * Deny access if amount is greater than 2000
         */
        rule checkAmount{
            target clause amount > 2000
            deny
        }
        /**
         * Grant access
         */
        rule allow{
            permit
        }
    }
}

请注意,在我的示例中,我使用否定规则拒绝访问。这很好,例如,如果我想在该规则中添加AdviceObligation来表明拒绝原因。

现在你的问题与政策结构没有多大关系,而是与属性的价值有关。在XACML中,您有两种选择。之一:

  • 你"硬编码"政策中的价值,或
  • 您将值外化并将其置于策略信息点(PIP)中,该点可以是数据库,Web服务,LDAP ...将值外部化的好处是您现在可以更新值而无需改变政策。该政策变得更加通用。此外,它意味着您可以拥有特定于用户的限制。

在后一种情况下,您的规则变为:

    /**
     * Deny access if amount is greater than the user's withdrawal limit
     */
    rule checkAmount{
        condition amount > withdrawalLimit
        deny
    }

在Axiomatics策略服务器中,您可以配置PIP /属性连接器以根据用户ID检索值。

HTH, 大卫。