<参照先URL>
http://xacmlinfo.com/2012/07/12/what-is-new-with-xacml-3-0/
- 属性情報のカスタマイズ
XACML 2.0では、カテゴリは、subject(主体者)、resource(リソース)、action(操作)、enviromentの4つに分かれていた。XACML3.0では、カテゴリを自由にカスタマイズできるようになった。
たとえば、XACML2.0では、以下のポリシーを使用できるが、事前に定義されたカテゴリしか使用できない。1
<
ResourceAttributeDesignator
AttributeId
=
"urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
/>
XACML3.0のポリシーでは、以下のように、Category属性にカテゴリの種類を指定する。これにより、新しいカテゴリを定義できるようになった。1
<
AttributeDesignator
AttributeId
=
"urn:oasis:names:tc:xacml:1.0:resource:resource-id"
Category
=
"resource"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
/>
- 義務情報(Obligation)の表現の向上
PDPからPEPに伝える義務情報の表現が向上した。
たとえば、PDPは、認可拒否した理由をPEPからユーザにメールで通知したかったとしよう。この場合、XACML2.0では、静的にユーザのメードアドレスをobligation要素に設定する必要がある。1
<
Obligation
ObligationId
=
"send-email"
FulfillOn
=
"Deny"
>
2
<
AttributeAssignment
AttributeId
=
"email"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>user@foo.com</
AttributeAssignment
>
3
</
Obligation
>
1
<
Obligation
ObligationId
=
"send-email"
FulfillOn
=
"Deny"
>
2
<
AttributeAssignment
AttributeId
=
"text"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>please send email to user</
AttributeAssignment
>
3
</
Obligation
>
XACML3.0では、動的な手法により、PIPから属性情報を取得することが可能である。それゆえ、Obligation要素としては、PDPはPEPに対して、「user@foo.com宛のEメールを送信してください」という情報を含めることが可能である。1
<
ObligationExpression
ObligationId
=
"send-email"
FulfillOn
=
"Deny"
>
2
<
AttributeAssignmentExpression
AttributeId
=
"email"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>
3
<
AttributeDesignator
AttributeId
=
"email"
Category
=
"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
MustBePresent
=
"false"
/>
4
</
AttributeAssignmentExpression
>
5
</
ObligationExpression
>
- Adviceの新規追加
XACML3.0では、Obligationと同様の要素としてAdvice要素が新規に規定された。Obligation要素との違いは、ObligationはPEPでは義務として必ず従う必要があったが、Adviceの場合、PEPは従うか否かを選択することが可能となった。 - Targetの表現の向上
XACML2.0では、Target要素において、同じ種類のカテゴリ同士でしか、ORとANDの関係を定義できない。しかし、XACML3.0では、AllOf要素とAnyOf要素を使用することにより、異なるカテゴリに関してもORとANDの関係を定義できるようになった。
たとえば、XACML2.0では、resourceとしてfoo1とfoo2をAND関係とし、bar1とbar2のactionをOR関係として定義できる。しかし、foo1のresourceとbar1のactionをOR関係として定義することはできない。
XACML3.0では、以下のように、fooのresourceとbar1のactionのAND関係を定義することが可能である。01
<
Target
>
02
<
AnyOf
>
03
<
AllOf
> ←AND関係
04
<
Match
MatchId
=
"urn:oasis:names:tc:xacml:1.0:function:string-regexp-match"
>
05
<
AttributeValue
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>foo</
AttributeValue
>
06
<
AttributeDesignator
MustBePresent
=
"false"
07
Category
=
"
urn:oasis:names:tc:xacml:3.0:attribute-category:resource
"
08
AttributeId
=
"urn:oasis:names:tc:xacml:1.0:resource:resource-id"
09
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
/>
10
</
Match
>
11
<
Match
MatchId
=
"urn:oasis:names:tc:xacml:1.0:function:string-equal"
>
12
<
AttributeValue
13
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>bar1</
AttributeValue
>
14
<
AttributeDesignator
MustBePresent
=
"false"
15
Category
=
"
urn:oasis:names:tc:xacml:3.0:attribute-category:action
"
16
AttributeId
=
"urn:oasis:names:tc:xacml:1.0:action:action-id"
17
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
/>
18
</
Match
>
19
</
AllOf
>
20
<
AllOf
>
21
<
Match
MatchId
=
"urn:oasis:names:tc:xacml:1.0:function:string-equal"
>
22
<
AttributeValue
23
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
>bar2</
AttributeValue
>
24
<
AttributeDesignator
MustBePresent
=
"false"
25
Category
=
"urn:oasis:names:tc:xacml:3.0:attribute-category:action"
26
AttributeId
=
"urn:oasis:names:tc:xacml:1.0:action:action-id"
27
DataType
=
"http://www.w3.org/2001/XMLSchema#string"
/>
28
</
Match
>
29
</
AllOf
>
30
</
AnyOf
>
31
</
Target
>
- 評価関数および判定アルゴリズムの追加
文字列の評価関数について、以下が追加された。
urn:oasis:names:tc:xacml:3.0:function:string-starts-with
urn:oasis:names:tc:xacml:3.0:function:string-ends-with
urn:oasis:names:tc:xacml:3.0:function:string-contains
urn:oasis:names:tc:xacml:3.0:function:string-substring
時刻を扱う評価関数について、以下が追加された。
urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-equal
urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-equal
urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration
既存の判定アルゴリズム(deny-overrides , permit-overrides, ordered-deny-overrides and ordered-permit-overrides)に加えて、以下の判定アルゴリズムが追加された。
urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit
urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit
urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-denyurn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny - XPathデータタイプの対応
XACML 3.0では、XPathデータタイプが追加された。XACML2.0では、XPathは文字列としてしか扱われていなかった。 - XACMLリクエスト/レスポンスの表現の向上
XACML2.0では、Subject、Resource、ActionおよびEnvironmentしか認可要求のリクエストに含めることができなかった。XACML 3.0では、多様な属性のカテゴリを定義できるため、リクエストに多様なカテゴリを含むことができる。 - XACMLリクエストの一括認可要求対応
PEPは、PDPに対する認可要求において、複数のリクエストを含めることが可能である。PEPとPDP間の性能向上につながると考える。 - ポリシー管理プロファイルの追加
XACML3.0では、だれが認可ポリシーを管理することができるかを規定するポリシーを定義することができる。
たとえば、太郎は、リソースXに関するXACMLポリシーのみを発行することができるなど。