XACML


XACML
XACMLは、「eXtensible Access ControlMarkupLanguage」の略です。この規格は、宣言型のきめ細かい属性ベースのアクセス制御ポリシー言語、アーキテクチャ、およびポリシーで定義されたルールに従ってアクセス要求を評価する方法を説明する処理モデルを定義しています。 XACML パラダイム
宣言型プログラミング
デベロッパー
構造化情報標準の進歩のための組織(OASIS)
初登場
2001年4月16日; 20年前 (2001-04-16)
ライセンス
オアシス
ファイル名拡張子
.xml、.alfa
Webサイト
www.oasis-open.org
主要な実装 Axiomatics、AuthzForce 方言
アルファ(XACML)
に影響を受けた XML、SAML 影響を受ける
アルファ(XACML)
公開されている標準仕様として、XACMLの目標の1つは、複数のベンダーによるアクセス制御実装間の共通の用語と相互運用性を促進することです。XACMLは、主に属性ベースのアクセス制御システム(ABAC)であり、ポリシーベースのアクセス制御(PBAC)システムとも呼ばれます。このシステムでは、ユーザー、アクション、またはリソースに関連付けられた属性(データのビット)が入力され、特定のユーザーは、特定の方法で特定のリソースにアクセスできます。ロールベースのアクセス制御(RBAC)は、ABACの特殊化としてXACMLに実装することもできます。
XACMLモデルは、承認の管理/定義(PAP)からの意思決定(PDP)からの施行(PEP)の分離をサポートおよび奨励します。アクセス決定がアプリケーション内で(またはローカルマシンのユーザーIDとアクセス制御リスト(ACL)に基づいて)ハードコーディングされている場合、管理ポリシーが変更されたときに決定基準を更新することは非常に困難であり、承認が実施されています。クライアントがアクセス決定から切り離されると、許可ポリシーをその場で更新して、すべてのクライアントにすぐに影響を与えることができます。

コンテンツ
1 歴史
2 建築
2.1 用語 2.2 フロー
3 ポリシー要素
3.1 構造要素 3.2 属性とカテゴリ 3.3 ターゲット 3.43.4 条件 3.5 義務とアドバイス
4 アルゴリズムの組み合わせ
5 関数
5.1 等式、不等式およびその他のマッチング関数 5.2 算術関数 5.3 文字列関数 5.4 論理関数(and、or、not) 5.5 セットとバッグの機能 5.6 正規表現関数 5.7 XPath関数 5.8 高階関数
6 XACML 3.0
6.1 スキーマ 6.2 データ型 6.3 XACML3.0の新機能
6.3.1 新しいプロファイル
6.3.1.1 委任
6.3.2 その他の機能
7 サンプルポリシー
7.1 XACMLでの日付と時刻に基づく認証 7.2 XACMLでの時間ベースの承認
8 サンプルのリクエストとレスポンス
8.1 XACML3.0リクエスト 8.2 XACML3.0の応答
8.2.1 XACML3.0サンプル応答
8.2.2 義務のあるXACML3.0サンプル応答
9 XACML3.0の複数決定プロファイル
9.1 複数決定プロファイルのサンプルJSONリクエスト 9.2 複数決定プロファイルのサンプルJSON応答
10 開発者オリエンテーション
10.1 XACMLのALFAプロファイル 10.2 XACMLのJSONプロファイル
10.2.1 サンプルJSONリクエスト
10.3 JSON応答のサンプル
11 XACMLおよびその他の標準
11.1 XACMLとオープンポリシーエージェント 11.2 XACMLとSAML 11.3 XACMLとOAuth
12 も参照してください
13 参考文献
14 外部リンク

歴史
バージョン1.0は、2003年にOASIS 標準化団体によって承認されました。
バージョン2.0は、2005年2月1日にOASIS標準化団体によって承認されました。

バージョン3.0は、2013年1月にOASISによって承認されました。

建築 非規範的な用語(PAPを除くRFC 2904に準拠)
略語 学期 説明
PAP ポリシー管理ポイント
アクセス許可ポリシーを管理するポイント
PDP ポリシー決定ポイント
アクセス決定を発行する前に、承認ポリシーに対してアクセス要求を評価するポイント
PEP ポリシー施行ポイント
リソースへのユーザーのアクセス要求をインターセプトし、アクセス決定を取得するためにPDPに決定要求を行い(つまり、リソースへのアクセスが承認または拒否され)、受信した決定に基づいて動作するポイント
PIP ポリシー情報ポイント
属性値のソースとして機能するシステムエンティティ(つまり、リソース、サブジェクト、環境)
PRP ポリシー取得ポイント
XACMLアクセス許可ポリシーが保管されている場所(通常はデータベースまたはファイルシステム)。

フロー
image"
  この画像は、XACMLアーキテクチャとサンプルの認証フローを示しています。
ユーザーがリクエストを送信しますが、これはPolicy Enforcement Point(PEP)によってインターセプトされます。
PEPは、要求をXACML許可要求に変換します
PEPは、承認要求をポリシー決定ポイント(PDP)に転送します。
PDPは、構成されているポリシーに対して許可要求を評価します。ポリシーは、ポリシー取得ポイント(PRP)を介して取得され、ポリシー管理ポイント(PAP)によって管理されます。基になるポリシー情報ポイント(PIP)から属性値も取得します。
PDPは決定(許可/拒否/該当なし/不確定)に到達し、それをPEPに返します
ポリシー要素編集

構造要素
XACMLは、次の3つのレベルの要素で構成されています。 PolicySet、 ポリシー、
ルール。
ポリシーセットには、任意の数のポリシー要素とポリシーセット要素を含めることができます。ポリシーには、任意の数のルール要素を含めることができます。

属性とカテゴリ
ポリシー、ポリシーセット、ルール、および要求はすべて、サブジェクト、リソース、環境、およびアクションを使用します。
サブジェクト要素は、アクセスを要求するエンティティです。サブジェクトには1つ以上の属性が
リソース要素は、データ、サービス、またはシステムコンポーネントです。リソースには1つ以上の属性が
アクション要素は、リソースで要求されるアクセスのタイプを定義します。アクションには1つ以上の属性が
環境要素は、オプションで追加情報を提供できます。

ターゲット
XACMLは、ターゲットを提供します。これは、基本的に、特定の要求にポリシーセット、ポリシー、またはルールを適用するために満たす必要のある、サブジェクト、リソース、およびアクションの簡略化された条件のセットです。ポリシーまたはポリシーセットが特定の要求に適用されることが判明すると、そのルールが評価されて、アクセスの決定と応答が決定されます。
ターゲット情報は、適用可能性を確認する方法であるだけでなく、ポリシーにインデックスを付ける方法も提供します。これは、多くのポリシーを保存し、それらをすばやくふるいにかけて適用するポリシーを見つける必要がある場合に役立ちます。そのサービスにアクセスする要求が到着すると、ポリシーはターゲットの制約に基づいてインデックスが付けられるため、PDPはこの要求に適用される可能性のあるポリシーを探す場所を認識します。ターゲットは、それが任意の要求に適用されることを指定する場合もあることに注意して
ポリシーセット、ポリシー、およびルールにはすべて、ターゲット要素を含めることができます。

条件
条件はルールにのみ存在します。条件は本質的に、より広い範囲の関数を使用できるターゲットの高度な形式であり、さらに重要なことに、subject-id == doctor-idのように2つ以上の属性を一緒に比較するために使用できます。条件があれば、義務の分離チェックまたは関係ベースのアクセス制御を実装することができます。

義務とアドバイス
XACML内では、義務と呼ばれる概念を使用できます。義務とは、アクセスが承認される前または後に実行する必要があることに関する、ポリシー決定ポイント(PDP)からポリシー施行ポイント(PEP)への指示です。PEPは、指令に準拠することができない場合は、承認されたアクセスが可能かなければなら実現できません。義務の増強は、正式な要件とポリシーの施行との間のギャップを排除します。義務の例は次のようになります。
アクセス制御ルール:
属性patientID = xでリソースMedicalJournalへのアクセスを許可します
件名がDesignatedDoctorOfPatientと一致する場合
そして行動が読まれる
義務あり
許可について:doLog_Inform(patientID、Subject、time)
拒否時:doLog_UnauthorizedLogin(patientID、Subject、time)
XACMLの義務は、アクセス制御ルールとして実装するのが難しい可能性のある正式な要件(否認防止など)を満たすための効果的な方法になる可能性がさらに、正式な要件は、個別の機能としてではなく、義務としてアクセス制御ポリシーの一部になります。これにより、ポリシーの一貫性が保たれ、IT環境の集中化が容易になります。
義務は、「ガラス破り」のシナリオまたは信頼の昇格に使用できます(「2要素認証なしでは1,000ドルを送金することはできません。ここに2FAページへのリンクがあります」)。
義務に加えて、XACMLは、PEPがアドバイスを実施する義務を負わないという違いを除いて、義務と同一のアドバイスをサポートします(そのためその名前が付けられています)。

アルゴリズムの組み合わせ
互いに矛盾する2つのルール(またはポリシー)がある場合、XACMLではどうなりますか?たとえば、マネージャーがドキュメントを表示できるという最初のルールと、午前9時までは誰も作業できないという2番目のルールを想像してみてリクエストが午前8時にドキュメントを表示しようとしているアリスに関するものである場合はどうなりますか?どのルールが勝ちますか?これは、組み合わせアルゴリズムが私たちに教えていることです。それらは競合を解決するのに役立ちます。
XACMLは、それぞれまたは要素のRuleCombiningAlgIdまたはPolicyCombiningAlgId属性によって識別できるいくつかの結合アルゴリズムを定義します。ルール結合アルゴリズムは、一連のルールの評価の個々の結果を前提として、アクセス決定に到達するための手順を定義します。同様に、ポリシー結合アルゴリズムは、一連のポリシーの評価の個々の結果を前提として、アクセス決定に到達するための手順を定義します。
ここにある真理値表は、アルゴリズムの組み合わせがポリシーを処理および組み合わせる方法を理解するのに役立ちます。

関数
XACMLは、属性を操作して他の属性や値と比較するための関数の長いリスト(300に近い)を定義します。
等式、不等式およびその他のマッチング関数
算術関数
文字列関数
論理関数(and、or、not)
セットとバッグの機能
高階関数
正規表現関数
XPath関数
関数とその識別子は、標準で完全に説明されています。関数はタイプ固有です。つまり、文字列の等式用の関数と整数の等式用の関数が
等式、不等式およびその他のマッチング関数編集

算術関数
これらの関数の正式な定義については、標準を参照して
追加(doubleおよびinteger)
減算(倍精度および整数)
乗算(doubleおよびinteger)
除算(倍精度整数)
mod(doubleおよびinteger)
abs(doubleおよびinteger)
円形

文字列関数
これらの関数の正式な定義については、標準を参照して
文字列-連結
string-starts-with
string-ends-with
文字列-含む
文字列-部分文字列

論理関数(and、or、not)
セットとバッグの機能編集

正規表現関数
XPath関数編集

高階関数
高階関数のリストは以下のとおりです。正式な定義については、XACML標準を参照して
anyOf(urn:oasis:names:tc:xacml:3.0:function:any-of)
パラメータ:anyAtomicOrBag anyAtomicOrBag *
戻り値:ブール値
説明:この関数は、ブール関数と2つ以上の属性値またはバッグを受け取ります。高階関数は、ブール関数を残りのパラメーターに適用します。
例:anyOf(function, allowedRoles, stringOneAndOnly(role))(a)ロールが単一値である場合、(b)属性バッグallowedRolesに単一値属性バッグロール内の値と等しい値が少なくとも1つある場合にtrueを返します。
allOf(urn:oasis:names:tc:xacml:3.0:function:all-of)
パラメータ:anyAtomicOrBag anyAtomicOrBag *
戻り値:ブール値
anyOfAny(urn:oasis:names:tc:xacml:3.0:function:any-of-any)
パラメータ:anyAtomicOrBag anyAtomicOrBag *
戻り値:ブール値
allOfAny(urn:oasis:names:tc:xacml:1.0:function:all-of-any)
パラメータ:bag bag
戻り値:ブール値
anyOfAll(urn:oasis:names:tc:xacml:1.0:function:any-of-all)
パラメータ:bag bag
戻り値:ブール値
allOfAll(urn:oasis:names:tc:xacml:1.0:function:all-of-all)
パラメータ:bag bag
戻り値:ブール値
マップ(urn:oasis:names:tc:xacml:1.0:function:map)
パラメータ:anyAtomicOrBag anyAtomicOrBag *
戻り値:bag
XACML 3.0編集

スキーマ
http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd

データ型
http://www.w3.org/2001/XMLSchema#anyURI
http://www.w3.org/2001/XMLSchema#base64Binary
http://www.w3.org/2001/XMLSchema#boolean
http://www.w3.org/2001/XMLSchema#date
http://www.w3.org/2001/XMLSchema#dateTime
http://www.w3.org/2001/XMLSchema#dayTimeDuration
http://www.w3.org/2001/XMLSchema#double
http://www.w3.org/2001/XMLSchema#hexBinary
http://www.w3.org/2001/XMLSchema#integer
http://www.w3.org/2001/XMLSchema#string
http://www.w3.org/2001/XMLSchema#time
http://www.w3.org/2001/XMLSchema#yearMonthDuration
urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name
urn:oasis:names:tc:xacml:1.0:data-type:x500Name
urn:oasis:names:tc:xacml:2.0:data-type:dnsName
urn:oasis:names:tc:xacml:2.0:data-type:ipAddress
urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression
XACML3.0の新機能編集

新しいプロファイル
XACML 3.0では、管理委任、XACMLのJSONプロファイル(要求/応答)、XACMLのRESTプロファイル、XACMLの複数決定プロファイルなどが導入されています。

委任
委任の実装は、XACML3.0の新機能です。委任メカニズムは、アクセスポリシーの分散管理をサポートするために使用されます。これにより、権限(委任者)は、ルートポリシーの変更を必要とせずに、自身の権限または他の誰かの権限の全部または一部を別のユーザー(委任)に委任できます。
これは、この委任モデルでは、委任権がアクセス権から分離されているためです。代わりに、これらは管理制御ポリシーと呼ばれます。アクセス制御と管理ポリシーは、次のシナリオのように連携して機能します。
企業の多くのサービスのパートナーシップは、アクセス制御システムによって保護されています。システムは、リソースを保護し、委任を許可するために、次の中央ルールを実装します。
アクセス制御ルール: アクセスを許可します
属性WebServiceを持つリソースへ
件名が従業員で、アクションが読み取りまたは書き込みの場合。
管理制御ルール: アクセス制御ルール#1の委任を許可する
属性コンサルタントを持つ被験者に。 条件:
委任は6か月以内に期限切れになる必要が
リソースに属性StrictlyInternalを含めることはできません。(属性は、LDAPカタログなどの外部ソースからフェッチできます。)
コンサルタントが会社に入ると、コンサルタントのスーパーバイザーがローカルで委任を発行して、コンサルタントがシステムに直接アクセスすることを許可できます。
委任者(このシナリオではスーパーバイザー)は、限られた一連のアクセス権をコンサルタントに委任する権利しか持たない場合が

その他の機能
XACML 3.0の他の新機能は、http: //www.webfarmr.eu/2010/07/enhancements-and-new-features-in-xacml-3-axiomatics/にリストされています。
XACML TCは、変更のリストもここで公開しています:http://wiki.oasis-open.org/xacml/DifferencesBetweenXACML2.0AndXACML3.0

サンプルポリシー

XACMLでの日付と時刻に基づく認証
このルールは、use-it-lose-itアクセス制御パラダイムを実装します。ユーザーが30日間ログインしないと、アクセスできなくなります。
擬似コードの場合:currentDateTime> lastLogin + 30日である場合は拒否します
<説明>使用するか失う:このポリシーは、lastLoginが今日の日付から30日以上離れている場合にアクセスを拒否します < Target /> P30D < /ルール>

XACMLでの時間ベースの承認
このルールは、現在の時刻が午前9時より大きく午後5時未満の場合にアクセスを許可します。
9〜5の場合に許可 09:00:00 17:00:00
サンプルのリクエストとレスポンス編集

XACML3.0リクエスト


表示


doc#123


Alice

XACML3.0の応答

XACML3.0サンプル応答
NotApplicable < / xacml-ctx:Decision>
< / xacml-ctx:Result>

義務のあるXACML3.0サンプル応答
以下には、Obligationブロックが含まれています。義務は、意思決定フローを充実させるための意思決定とともに返される可能性のあるステートメントです。この例では、PEPはアクセスが許可されたことをログに記録する必要が
許可< / xacml-ctx:Decision>
< xacml-ctx:Obligations>


http://www.axiomatics.com/automatic-unique-id/18a9eae9-c92b-4087-b2ac-c5a33d7ff477

XACML3.0の複数決定プロファイル
デフォルトでは、PDPは一度に1つのリクエストを処理します(例:「アリスはアイテム#1を表示できますか?」)。その後、PDPは単一の決定で応答します。ただし、「アリスはアイテム#1、#2、#3を表示/編集/削除できますか?」など、一度に複数のリクエストを送信する必要がある場合がXACMLの複数決定プロファイルは、このユースケースを可能にします。PDPは通常、すべての組み合わせの結果を実行します。つまり、前述の例では、1つの応答で1 x 3 x 3 = 9の決定が返されます。

複数決定プロファイルのサンプルJSONリクエスト
MDPを有効にする方法は、1つのオブジェクト(または単にオブジェクト)の配列ではなく、任意のカテゴリのオブジェクトの配列を送信することです。たとえば、AccessSubjectはオブジェクトですが、Resourceはオブジェクトの配列です。後者は、プロファイルをサポートするPDPでMDPプロセスをトリガーします。決定を関連する属性値に関連付けることができるように、応答でXACML属性とその値を返すようにPDPに指示するIncludeInResult属性の使用にも注意して
{ “”Request”” : { “”ReturnPolicyIdList”” : true 、 “”AccessSubject”” : {
“”Attribute”” : [{
“”AttributeId”” : “”com.acme.user.username”” 、
“”Value”” : “”Alice””
}] }、 “”Resource “” : [{
“”属性 “” : [{
“”属性ID “” : “” com.acme.objectType “” 、
“”値 “” : “”レコード “”
}、 {
“”属性ID “” : “” com.acme.record.recordId “” 、
“”値 “” : “”123″” 、
“”IncludeInResult”” : true
}] }、{
“”Attribute”” : [{
“”AttributeId”” : “”com.acme.objectType”” 、
“”Value”” : “”record””
}、 {
“”AttributeId”” : “”com.acme .record.recordId “” 、
“” Value “” : “” 124 “” 、
“” IncludeInResult “” : true
}] }、{
“” Attribute “” : [{
“” AttributeId “” : “” com.acme.objectType “” 、
“” Value “” : “” record “”
} 、 {
“”AttributeId”” : “”com.acme.record.recordId”” 、
“”Value”” : “”125″” 、
“”IncludeInResult”” : true
}] }]、 “”Action”” : [{
“”Attribute”” : [{
“”AttributeId”” : “”com.acme.action”” 、
“”Value”” : “”view”” 、
“”IncludeInResult”” : true
}] }、{
“”Attribute”” : [{
“”AttributeId”” : “”com.acme.action”” 、
“”Value”” : “”edit “” 、
“” IncludeInResult “” : true
}] }、{
“” Attribute “” : [{
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” delete “” 、
“” IncludeIn 結果 “” : true
}] }] } }

複数決定プロファイルのサンプルJSON応答
{ “”Response”” : [ {
“”Decision”” : “”Deny”” 、
“”Status”” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“” AssociatedAdvice “” : {
“” Id “” : “” com.acme.message “” 、
“” AttributeAssignment “” : [ {
“” AttributeId “” : “” com.acme.messageContent “” 、
“” Value “” : “”アクセスが拒否されました-クリアランスが不十分です。 “” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”3″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 125 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” view “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierリスト “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”AssociatedAdvice”” : {
“”Id”” : “”com.acme.message”” 、
“”AttributeAssignment “” : [ {
“” AttributeId “” : “” com.acme.messageContent “” 、
“” Value “” : “”アクセスが拒否されました-クリアランスが不十分です。 “” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”2″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 124 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” view “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierリスト “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”Category”” : [ {
“”CategoryId”” : “”urn:oasis:names:tc: xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 123 “” 、
“” DataType “” : “” http://www.w3 .org / 2001 / XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme .action “” 、
“” Value “” : “” edit “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierList “” : {
“” PolicyIdReference “” : {
“” Id “” : “”c6b75be8-f3cb-4bda-9b63-812a1f7e5fae”” 、
“”バージョン”” : “”1″” }、 “”PolicySetIdReference”” : [ {
“”Id”” : “”1016337f-f5f8-4ed4-bd4e-9a2be01fa211″” 、
“”バージョン”” : “”1 “”
}、 { “” Id “” : “” http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”ステータスコード “” : {
“”値 “” : “” urn:oasis:names:tc:xacml:1.0:status:ok “” } }、
“”カテゴリ “” : [ {
“”カテゴリID “” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:resource”” 、
“”Attribute”” : {
“”AttributeId”” : “”com.acme.record.recordId”” 、
“”Value”” : “”123″” 、
“”DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“” Attribute “” : {
“”AttributeId”” : “”com.acme.action”” 、
“”Value”” : “”delete”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””} } ]、 “”PolicyIdentifierList”” : {
“”PolicyIdReference”” : {
“”Id”” : “”c6b75be8-f3cb-4bda-9b63-812a1f7e5fae”” 、
“”Version”” : “”1″” }、 “”PolicySetIdReference”” : [ {
“”Id”” : “”1016337f-f5 f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” ID “” : “” http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン”” : “”1.0″”} ]
} }、 {
“”決定”” : “”拒否”” 、
“”ステータス”” : {
“”ステータスコード”” : {
“”値”” : “”urn:oasis:names:tc:xacml:1.0:status :ok “” } }、
“” AssociatedAdvice “” : {
“” Id “” : “” com.acme.message “” 、
“” AttributeAssignment “” : [ {
“” AttributeId “” : “” com.acme.messageContent “” 、
“” Value “” : “”アクセスが拒否されました-不十分ですクリアランス。”” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”3″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 125 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” delete “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifi erList “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“” Version “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”AssociatedAdvice”” : {
“”Id”” : “”com.acme.message”” 、
“”AttributeAssignment “” : [ {
“” AttributeId “” : “” com.acme.messageContent “” 、
“” Value “” : “”アクセスが拒否されました-クリアランスが不十分です。 “” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”3″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 125 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” edit “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierリスト “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”AssociatedAdvice”” : {
“”Id”” : “”com.acme.message”” 、
“”AttributeAssignment “” : [ {
“” AttributeId “” : “” com.acme.messageContent “” 、
“” Value “” : “”アクセスが拒否されました-クリアランスが不十分です。 “” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”2″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 124 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” delete “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifi erList “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“” Version “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”決定 “” : “”拒否 “” 、
“”ステータス “” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”Category”” : [ {
“”CategoryId”” : “”urn:oasis:names:tc: xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 123 “” 、
“” DataType “” : “” http://www.w3 .org / 2001 / XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme .action “” 、
“” Value “” : “” view “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierList “” : {
“” PolicyIdReference “” : {
“” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” }、 “” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} }、 {
“”Decision”” : “”Deny”” 、
“”Status”” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok”” } }、
“”AssociatedAdvice”” : {
“”Id”” : “”com.acme.message”” 、
“”AttributeAssignment”” : [ {
“”AttributeId””: “”com.acme.messageContent”” 、
“”値”” : “”アクセスが拒否されました-クリアランスが不十分です。”” 、
“”Category”” : “”urn:oasis:names:tc:xacml:3.0:attribute-category:environment”” 、
“”DataType”” : “”http://www.w3.org/2001/XMLSchema#string””
}、 { “” AttributeId “” : “” com.acme.user.clearance “” 、
“” Value “” : “” 1 “” 、
“” Category “” : “” urn:oasis:names:tc:xacml:1.0:subject-category:access-subject “” 、
“” DataType “” : “”http://www.w3.org/2001/XMLSchema#integer””
}、 { “”AttributeId”” : “”com.acme.record.classification”” 、
“”値”” : “”2″” 、
“”カテゴリ”” : 「URN: oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#integer “”} ] }、 “” Category “” : [ {
“” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:resource “” 、
“” Attribute “” : {
“” AttributeId “” : “” com.acme.record.recordId “” 、
“” Value “” : “” 124 “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “” } }、 { “” CategoryId “” : “” urn:oasis:names:tc:xacml:3.0:attribute-category:action “” 、
“”属性”” : {
“” AttributeId “” : “” com.acme.action “” 、
“” Value “” : “” edit “” 、
“” DataType “” : “” http://www.w3.org/2001/XMLSchema#string “”} } ]、 “” PolicyIdentifierリスト “” : {
“” PolicyIdReference “” : [ {
“” Id “” : “” 311a93c0-6e4c-47a0-8e05-76feb39f25e0 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” c6b75be8-f3cb-4bda-9b63-812a1f7e5fae “” 、
“”バージョン “” : “” 1 “” } ]、
“” PolicySetIdReference “” : [ {
“” Id “” : “” 1016337f-f5f8-4ed4-bd4e-9a2be01fa211 “” 、
“”バージョン “” : “” 1 “”
}、 { “” Id “” : “” http ://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54 “” 、
“”バージョン “” : “” 1.0 “”} ]
} } ] }

開発者オリエンテーション
2013年と2014年に、XACML技術委員会は、開発者の統合を容易にするための新しいプロファイルの設計に焦点を合わせました。これらには以下が含まれます:
EMCのRemonSinnemaによって書かれたXACMLのRESTプロファイル
AxiomaticsのDavidBrossardによって書かれたXACMLのJSONプロファイル
AxiomaticsのPabloGiambiagi、Srijith Nair、DavidBrossardによって書かれたXACMLのALFAプロファイル
3つのプロファイルはすべて、カリフォルニア州モントレーで開催されたCloud Identity Summit2014で展示されました。これらのプロファイルを使用すると、きめ細かい承認をアプリケーションに統合することがはるかに簡単になります。

XACMLのALFAプロファイル
ALFAは、Abbreviated Language forAuthorizationの略です。これは、ポリシーベースのアクセス制御ポリシーを実装するために使用される軽量の構文です。例については、メインの記事を参照して

XACMLのJSONプロファイル
XACMLのJSONプロファイルは、PEPとPDP間の統合を簡素化します。

サンプルJSONリクエスト
{ “”Request”” : {
“”AccessSubject”” : {
“”Attribute”” : [ {
“”AttributeId”” : “”com.acme.user.employeeId”” 、
“”Value”” : “”Alice””} ] }、 “”Resource”” : {
“”Attribute”” : [ {
“”AttributeId”” : “”com.acme.record.recordId”” 、
“”Value”” : “”123″”
}、 { “”AttributeId”” : “”com.acme.object.objectType”” 、
“”Value”” : “”record””} ] }、 “”アクション”” : {
“”属性”” : [ {
“”属性ID “” : “”com.acme.action.actionId”” 、
“”値”” : “”ビュー””} ] }、 “”環境”” : {
“”属性”” : []
} } }

JSON応答のサンプル
{ “”Response”” : { “”Decision”” : “”Permit”” 、 “”Status”” : {
“”StatusCode”” : {
“”Value”” : “”urn:oasis:names:tc:xacml:1.0:status:ok””
} } } }

XACMLおよびその他の標準

XACMLとオープンポリシーエージェント
Open Policy Agent(OPA)は、ポリシー決定ポイント、外部化された承認、およびポリシー言語(REGO)を提供するという点でXACMLに似ています。XACMLが対応する汎用、API中心、またはデータ中心ではなく、インフラストラクチャ認証(Kubernetes、Istioなど)を専門としています。

XACMLとSAML
Example of cross-enterprise federation where two enterprises federate using SAML and two Security Token Services (STS), establishing a circle of trust. The SAML in this picture is used for identity exchange / virtualization. The XACML is used server-side to determine whether access should be granted to the application functionality (functional access control) and the data behind it (data access control).
  2つの企業がSAMLと2つのセキュリティトークンサービス(STS)を使用してフェデレーションし、信頼の輪を確立する、企業間のフェデレーションの例。この図のSAMLは、ID交換/仮想化に使用されます。XACMLはサーバー側で使用され、アプリケーション機能(機能的アクセス制御)とその背後にあるデータ(データアクセス制御)にアクセスを許可するかどうかを決定します。
SAMLは、認証に使用されるIDSSOおよびフェデレーション標準です。SAMLは、異なるアプリケーション間で共通のIDトークン形式として使用されます。SAMLとXACMLはどちらもOASISによって定義されています。SAMLとXACMLは、SAMLを使用してID情報/仮想IDを伝送し、XACMLを使用してポリシーを介してアクセス制御ロジックを駆動する相互運用性を備えた設計になっています。

XACMLとOAuth
OAuth2.0は認証標準と見なされています。XACMLとは異なりますが、その起源、目的、および用途が異なります。OAuthについて:
委任されたアクセス制御:ユーザーである私は、自分が所有するリソースへの別のユーザーまたはサービスへのアクセスを委任します。たとえば、OAuthを介して、Twitter(サービス)にFacebookのウォール(リソース)に投稿する機能を付与します。
パスワードのアンチパターンの処理。 2つのサービスを統合する場合は常に、従来のレガシーモデルでは、サービスBにサービスAのユーザー資格情報を提供して、サービスBがサービスAのふりをする必要がこれにはもちろん多くのリスクが 。OAuthを使用すると、これらのパターンの問題が解消され、ユーザーはサービスAのユーザーに代わってサービスBが実行できることを制御できます。
HTTPベースのサービス/リソース
所有者(ユーザー)の承認の管理
XACMLは、ユーザーの承認、委任されたアクセス、またはパスワード管理を処理しません。XACMLは単に以下を提供します。
前述のポリシー決定ポイント(PDP)とポリシー施行ポイント(PEP)の概念を備えたアクセス制御アーキテクチャ。
OAuthを介して処理/定義された同意を使用できるポリシーを含む幅広いアクセス制御ポリシーを表現するためのポリシー言語。
XACMLとOAuthを組み合わせて、承認に対するより包括的なアプローチを提供できます。

も参照してください
ロールベースのアクセス制御
属性ベースのアクセス制御
強制アクセス制御
随意アクセス制御PERMIS GeoXACML
モデル主導のセキュリティ
承認

参考文献
^ 最高、カール(2001年4月16日)。「OASISTCの参加募集:XACML」。OASIS 。取得した31年10月2016。
^ 「pure-xacml」。www.axiomatics.com 。
^ OASIS標準として承認されたeXtensibleAccess Control Markup Language(XACML)V3.0、OASIS標準として承認されたeXtensible Access Control Markup Language(XACML)V3.0。
^ http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-cs-01-en.pdf ^ http://www.oasis-open.org/committees/xacml/ ^ 「XACML結合アルゴリズムを理解する」。www.axiomatics.com 。
^ XACMLv3.0管理ポリシーバージョン1.0
^ 「OAuth:仕組み」。PingIdentity 。

外部リンク
eXtensible AccessControlマークアップ言語
OASISXACML委員会のウェブサイト
IBMの2つのソフトウェア特許に関する問題のOASIS宣言”