<参照先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<ResourceAttributeDesignatorAttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"DataType="http://www.w3.org/2001/XMLSchema#string"/>
XACML3.0のポリシーでは、以下のように、Category属性にカテゴリの種類を指定する。これにより、新しいカテゴリを定義できるようになった。1<AttributeDesignatorAttributeId="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<ObligationObligationId="send-email"FulfillOn="Deny">2<AttributeAssignmentAttributeId="email"DataType="http://www.w3.org/2001/XMLSchema#string">user@foo.com</AttributeAssignment>しかし、すべてのXACMLリクエストに対して同じユーザになることはないと考えられる。そのため、現実的には、obligation要素にメールアドレスのような静的な情報を含めることはできない。Obligation要素としては、「ユーザにメールアドレスで認可結果を連絡してください」という旨の情報を含めることになる。3</Obligation>1<ObligationObligationId="send-email"FulfillOn="Deny">2<AttributeAssignmentAttributeId="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<ObligationExpressionObligationId="send-email"FulfillOn="Deny">2<AttributeAssignmentExpressionAttributeId="email"DataType="http://www.w3.org/2001/XMLSchema#string">3<AttributeDesignatorAttributeId="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<MatchMatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">05<AttributeValueDataType="http://www.w3.org/2001/XMLSchema#string">foo</AttributeValue>06<AttributeDesignatorMustBePresent="false"07Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"08AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"09DataType="http://www.w3.org/2001/XMLSchema#string"/>10</Match>11<MatchMatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">12<AttributeValue13DataType="http://www.w3.org/2001/XMLSchema#string">bar1</AttributeValue>14<AttributeDesignatorMustBePresent="false"15Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"16AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"17DataType="http://www.w3.org/2001/XMLSchema#string"/>18</Match>19</AllOf>20<AllOf>21<MatchMatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">22<AttributeValue23DataType="http://www.w3.org/2001/XMLSchema#string">bar2</AttributeValue>24<AttributeDesignatorMustBePresent="false"25Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"26AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"27DataType="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ポリシーのみを発行することができるなど。