クライアント アプリケーションを XACML 2.0 承認サービスの使用から新しい XACML 3.0 サービスの使用に移行することを検討しています。
クライアント アプリを XACML 2.0 リクエストから XACML 3.0 リクエストに移行する際に、どのような変更や問題が発生しますか?
クライアント アプリの XACML 2.0 と XACML 3.0 の最大の違いは、authz 要求の属性の構造が XACML 3.0 で大幅に変更されたことです。
XACML 2.0 では、属性は XML 要素タグを使用して、サブジェクト、リソース、環境、またはアクションのカテゴリに編成されていました。
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os access_control-xacml-2.0-context-schema-os.xsd">
<Subject>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>Julius Hibbert</AttributeValue>
</Attribute>
</Subject>
<Resource>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#anyURI">
<AttributeValue>http://medico.com/record/patient/BartSimpson</AttributeValue>
</Attribute>
</Resource>
<Action>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>read</AttributeValue>
</Attribute>
</Action>
<Environment/>
</Request>
XACML 3.0 では、これらのカテゴリは XML 要素タグの代わりに XML 属性を使用して示されます。
<?xml version="1.0" encoding="utf-8"?>
<Request xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd" ReturnPolicyIdList="false" CombinedDecision="false" xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Julius Hibbert</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://medico.com/record/patient/BartSimpson</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" />
</Request>
たとえば、XACML 2.0の<Subject>
要素は<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
XACML 3.0 になります。リソース、環境、およびアクションのカテゴリについても同様です。
この構造変更により、リクエストを処理するための処理モデルが簡素化され、スキーマ検証に違反することなく、アプリケーション固有またはドメイン固有のカスタム カテゴリでモデルを簡単に拡張できます。
ポリシー定義で使用するために、XACML 3.0 で定義された新しいデータ型と関数があります。AnyURI データ型は、文字列データ型とは異なります。2.0 の結合アルゴリズムのいくつかは非推奨になり、不確定な状態がポリシー デシジョン ツリーを介して伝播する方法をより正確に定義する新しい 3.0 の同等のアルゴリズムが優先されました。古い結合アルゴリズムは、「レガシー」アーティファクトとして引き続き含まれています。
XACML 2.0 のリクエストとポリシーは、情報を失うことなく機械的に XACML 3.0 形式に変換できます。単純な許可/拒否応答に固執する場合、3.0 応答を 2.0 形式に戻すことは可能です。
違いの公式リストについては、OASIS XACML TC wiki を確認してください。
手短に...
XACML 2.0 と XACML 3.0 の主な違いは、次のような新機能にあります。
この情報は、OASIS の XACML TC wiki ページにまとめられています。TC は、Oracle、IBM、Axiomatics などの主要な組織によって支援されています。XACML 3.0 仕様の編集者は、Axiomatics の CTO である Erik Rissanen です。
また、Kuppinger Cole は、「XACML 3.0 を使用したポリシー ベースのアクセス コントロール」というトピックに関するウェビナーを配信しました。
最後に「#XACML 3.0の機能強化と新機能」で新機能をまとめました。
XACML3の機能について理解するためのもう1つの便利なWebページである可能性があります。