1

私は XACML を初めて使用し、ALFA を使用してポリシーを作成しています。私が書こうとしているポリシーは、銀行に 2000 ドルの送金限度額を設定することです。送金する金額がそれを超える場合、操作は拒否されます。

どうすればいいですか?

ありがとう!

4

1 に答える 1

3

使用例は非常に単純です。最初に英語で、次に ALFA で書くことをお勧めします。

  • ユーザーは、 (たとえば、あなたの場合は 2000) ==>許可されている場合にのみaction==transfer、リソースに対して実行できます。type==bank accountamount transferred < the amount limit
  • 他のすべてのケース ==>拒否

ALFA では、上記のポリシーは次のようになります。

namespace policies{
    attribute actionId{
        category = actionCat
        id = "actionId"
        type = string
    }

    attribute resourceType{
        category = resourceCat
        id = "resourceType"
        type = string
    }

    attribute amount{
        category = resourceCat
        id = "amount"
        type = double
    }
    /**
     * The limit could be a subject attribute in the case it's user-specific
     */
    attribute limit{
        category = subjectCat
        id = "limit"
        type = double
    }

    /* 
     * A user can do the `action==transfer` on a resource of `type==bank account` if and only if the `amount transferred 
     * < the amount limit` (e.g. 2000 in your case) ==> **permit**
     * 
     */
     policy transfer{
        target clause actionId == "transfer" and resourceType=="bank account"
        apply firstApplicable
        rule allow{
            condition amount <= limit
            permit
        }
        rule denyTransfer{
            deny
        }
     }
}
于 2014-10-09T06:53:51.513 に答える