連載 ビジネスWebサービス最新事情(4)
OASIS SAMLとXACMLの構造を知る


Webサービスをビジネスで利用するために、高度なセキュリティやトランザクション処理、複数のWebサービスの連携などを実現するさまざまな仕様が策定されようとしている。本連載では、これらの仕様を理解するための解説を行っていく。(編集局)

日本アイオナテクノロジーズ(株)

服部 和彦
2003/10/25

シングル・サイン・オンを実現するSAML

 OASISが策定しているSAML仕様は、セキュリティ・アサーションと呼ばれるセキュリティ情報の記述とやりとりのための形式をXMLベースで標準化することで、実装やセキュリティ・ドメインによらない非常に広範囲な認証・認可システムの実現のための基盤を提供しています。

 このようなシステムを構成する強い動機となるのは、実装やセキュリティ・ドメインをまたぐシングル・サイン・オン(SSO)の実現です。SSOを実装した製品は以前から存在しますが、基盤となる標準仕様が存在しなかったため、特定の実装やセキュリティ・ドメイン内でのみSSOを実現するものでした。SAMLはこの制限を取り払い、実装やセキュリティ・ドメインをまたぐSSOを実装するための基盤技術として注目されています。SAMLが提供するのはSSOの基盤部分のみであるため、Liberty Alliance.NET Passportなど、SAMLをベースにしたいくつかのSSOフレームワーク仕様が別に策定されています。

図1 SAMLの構造(SAML 1.1 Core仕様書より抜粋)

 SAML仕様が提供する機能は主に「認証」(本人かどうかの確認)、「属性」(認証されたユーザーに対する属性情報の提供)、および「認可決定」(認証情報と属性情報から、特定のリソースへのアクセス権があるかどうかを判断する)の3つです。仕様は認証情報を記述する形式を定めた「SAMLアサーション」と、それらのやりとりの方法を定めた「SAMLプロトコル」という2つの部分から構成され、3つの機能それぞれに対するアサーションとプロトコルが定められています。

 実際に認証や属性情報の提示を行うシステムは「SAMLオーソリティ」と呼ばれ、認可決定およびそれに基づくアクセス制御を行うシステムはそれぞれ「ポリシー決定点」(PDP)、「ポリシー実行点」(PEP)と呼ばれます。SAMLが規定するのはこれらのシステム間やクライアントとのやりとりの方法とフォーマットのみであるため、実装は自由に行うことができます。

 SAMLはセキュリティ情報のやりとりに関して実装に依存しない上位構造のみを規定しているため、下位構造に当たる部分に何らかの実装が必要になります。それは具体的な認証・認可方法とSAMLプロトコルの下位トランスポートです。これらは実装により任意に選択することができますが、仕様内で定められているものには以下のものがあります。

  • 認証
    パスワード、Kerberos、セキュア・リモート・パスワード(SRP)、ハードウェア・トークン、SSLクライアント認証、X.509公開鍵、PGP公開鍵、SPKI公開鍵、XKMS公開鍵、XML電子署名
  • アクセス制御
    読み/書き/実行/削除/制御(否定付き)、HTTP GET/HEAD/PUT/POST、UNIXファイル・パーミッション
  • トランスポート(SAMLバインディング仕様)
    SAML/SOAPバインディング、WebブラウザSSOプロファイル(SAMLアーティファクトおよびHTTP POST)

OASIS XACMLは認可の内部処理を標準化する

 SAMLでは、認証・属性・認可情報の記述形式(アサーション)とそれらをやりとりする方法(プロトコル)に焦点が絞られていましたが、XACMLが対象にしているのは、SAMLで触れられていない認可の内部処理(SAMLにおけるPDPでの処理)に関する部分に当たります。この部分はセキュリティ関連の中でも特にOSやプラットフォームなどの実装に依存しやすく、実装に依存しない標準が存在しませんでした。XACMLはこの問題を解決するために策定された標準仕様です。

 XACMLが提供する機能は大きく分けて2つありますが、アプローチとしてはSAMLとよく似ています。アクセス制御ルールの記述に関する部分(ポリシー言語)と、認可処理要求とその結果のやりとりに関する部分(コンテキスト)です。

図2 XACMLの処理の流れ(XACML 1.0仕様書より抜粋、クリックで拡大します)

  • PIP
    Policy Information Point。属性情報を提供するシステムであり、SAMLにおける属性オーソリティに当たる
  • PAP
    Policy Administration Point。ポリシー言語で設定されたルールを基に、ポリシーを生成するシステム
  • Context Handler
    コンテキスト(=プロトコル)を処理するシステム
  • Obligations Service
    PEPがポリシー実行に際して同時に行うべき責務(obligation)を実行するシステム

 XACMLコンテキストは、SAMLにおけるプロトコルと同じものです。つまりXACML処理系への認可要求とそれに対する結果はXACMLコンテキストの形でやりとりされます。XACMLコンテキストは要求と結果の形式のみを定めているため、任意の実装にマッピング可能です。例えばPDPとPEPの間のやりとりをSAMLでやりとりする場合、XSLTなどを使ってXACMLコンテキストとSAML認可プロトコルの間の変換を行えばよいことになります。

図3 XACMLポリシー言語モデル(XACML 1.0仕様書より抜粋、クリックで拡大します)

 XACML仕様の大部分を占めているのはポリシー言語の定義の部分です。非常にきめ細かなアクセス制御ルールを記述できるように設計されており、以下のような要素が定義されています。

  • Rule
    認可に関する規則。対象(Target)とそれに対する認可の結果(Effect)を含む。オプションとして条件(Condition)を付けることができる。XACMLにおけるアクセス制御の最小単位
  • Target
    認可を行う対象。誰が(主体:Subject)、何に対して(資源:Resource)、何を行うことができるか(動作:Action)からなる
  • Subject
    認可対象となる主体の属性記述を行う
  • Resource
    認可対象となる資源の属性記述を行う
  • Action
    認可対象となる動作の属性記述を行う
  • Effect
    規則の結果。許可(Permit)または拒否(Deny)で記述される
  • Condition
    対象に関する属性以外の条件を記述する
  • Policy
    複数の規則をまとめたもの。PAPが規則結合アルゴリズム(RuleCombiningAlgorithm)に従って生成する。オプションとして責務(Obligation)を付けることができる
  • RuleCombiningAlgorithm
    複数の規則をまとめるための方法。Deny-overrides、Permit-overrides、First-applicableの3つから選択できる
  • Obligation
    PEPがポリシー実行時に併せて実行すべき責務
  • PolicySet
    複数のポリシーをまとめたもの。PAPがポリシー結合アルゴリズム(PolicyCombiningAlgorithm)に基づいて生成する。オプションとして責務(Obligation)を付けることができる
  • PolicyCombiningAlgorithm
    複数のポリシーをまとめるための方法。規則結合アルゴリズムと同じ3つのアルゴリズムから選択できる

 XACMLの認可決定は、主に認可要求で受け取ったコンテキストに含まれる対象と、PAPで生成されたポリシーに含まれる対象の属性を比較評価することで行われます。従ってポリシー言語で記述される対象の各要素(主体、資源、動作)の属性には、コンテキストに含まれる対象の属性とどういう比較評価を行うかを詳しく記述することになります。XACMLでは、文字列関数、算術関数、論理関数、集合関数など、この記述に用いることができる多くの評価関数を用意しており、それらはW3Cが定めるMathML 2.0およびXQuery 1.0 and XPath 2.0 Functions and Operators仕様をベースにしています。

 今回は、Webサービスのセキュリティ関連仕様のうち、OASIS SAMLとOASIS XACMLの仕組みを解説しました。前回紹介したOASIS WS-SecurityとW3C XKMSを合わせ、これでWebサービスセキュリティ関連の主だった4つの仕様を理解できたと思います。次回はコレオグラフィ言語(WSCIとBPEL4WS)について解説します。(次回へ続く

関連記事

 ・XML暗号化の基礎と実践 前編 XML暗号化と正規化と電子署名
 ・XML暗号化の基礎と実践 後編 XML暗号化と電子署名の実践
 ・SOAPのセキュリティはどうなっている?
 ・【連載】Webサービスのセキュリティ


バックナンバー

 1 .複雑化するWebサービスの仕様群を整理する
 2. Webサービスのキュリティ技術を詳解する
 3. OASIS WS-SecurityとXKMSの構造を知る
 4. OASIS SAMLとXACMLの構造を知る
 5. Webサービスを連携させるコレオグラフィ
 6. 混迷するWebサービス・トランザクション制御
 7. BtoB基盤となるWebサービス・トランザクション(最終回)


ビジネスWebサービス最新事情


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間