説明

Webサービスのアクセス制御システム

【課題】
Webサービスへのアクセス制御の均質な適用及び効率的なアクセス制御ができるシステムを提供することを目的とする。
【解決手段】
Webサービスやメッセージに対してアクセス権を設定するアクセス権設定装置と、Policyを配置するPolicyサーバと、ワークフローに従ってWebサービスを連係して実行するBPELサーバとを備える。ユーザが作成したワークフローを解析して資源の情報を抽出し、それらの資源に対するアクセス権設定を行う。設定されたアクセス権を示すPolicyをPolicyサーバ配置し、そのPolicyからアクセス制御サービスを実行するプログラムを作成する。ワークフローに対してはそのプログラムを呼び出す記述を追加し、そのワークフローとプログラムをBPELサーバに配置する。ワークフロー実行時は、ワークフローに沿って該プログラムを実行することにより、Policyに従ったアクセス制御が実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webサービスにおけるアクセス制御技術に関するものである。
【背景技術】
【0002】
企業の業務システムでは、流通チャンネルとの連携やグループ企業との情報インフラ強化など、企業の内外を問わずシステム間の連携が進んでいる。多くの企業は、システム連携を行うアーキテクチャとして、拡張性・信頼性が高いSOA (Service Oriented Architecture )を採用している。
【0003】
SOAは、複数のWebサービスをワークフロー(記述言語WS-BPEL(Web Services Business Process Execution Language))によって連携させるためのアーキテクチャである。SOAでは、Webサービス同士の柔軟な組み合わせを実現するために、様々な技術が提案されており、その一つにMOM(Message Oriented Middleware)がある。これは、Webサービス同士が互いに相手のインターフェイスを直接呼び出すのではなく、事前に決められたフローの中で共通に利用される特定の話題に関する情報が階層状に記述されている(Topic Hierarchyな)XML形式のメッセージをWebサービス間で受渡す手法である。すなわち、ワークフローエンジンがWebサービスを呼び出す(invoke)ときに、Topic HierarchyなXMLメッセージ全体または一部分から、XSLT (XSL Transformations)などの技術を利用して、呼び出すWebサービスのインターフェイスに適したXMLメッセージを生成し呼び出す。さらに、Webサービスからの応答メッセージを取得したワークフローエンジンは、応答メッセージの情報をTopic HierarchyなXMLメッセージに反映させる。この手法によって、一つのWebサービスのインターフェイス変更は、局所的なメッセージ変換だけで済むので、フロー全体に影響を与えることがなくなる。結果として、MOMはWebサービスの柔軟な変更や組み換えを実現している。
【0004】
このようなSOAを業務系システムに適用するには、Webサービスやメッセージに対するRBAC (Role Based Access Control)は必須であり、そのための標準規格として標準化団体OASIS(Organization for the Advancement of Structured Information Standards)が推進しているXACML (eXtensible Access Control Markup Language)が存在する。
【0005】
図1は、XACMLによるWebサービス122へのアクセス制御方法を説明する図である。Policy Set132には、事前にどの様な主体がどの資源に対してどの様な操作を行うのを許可または不許可するのかを記述したPolicyの集合(XACMLで記述されている)が保管されている。Webサービスクライアントやワークフローエンジンであるアクセスリクエスタ110は、Webサービスサーバ120に対してWebサービス122によるサービスを要求する(Step101)。リクエストを取得したPEP (Policy Enforcement Point)121は、Policyサーバ130のPDP (Policy Decision Point)131に対して許可決定要求を行う。PDP131は、その要求事項とPolicy Set132とを比較し、要求の許可(Permit)または不許可(Deny)の決定をPEP121に応答する(Step102)。PDP131から要求の許可の応答を得たPEP121は、当該アクセスリクエスタ110からの要求に対してWebサービス122の実行を許可する(Step103)。以上のようにして、XACMLはアクセス制御を行う。
【非特許文献1】eXtensible Access Control Markup Language (XACML) Version2.0 Committee draft 04, 6 Dec 2004
【発明の開示】
【発明が解決しようとする課題】
【0006】
上述したようなアクセス制御をSOAに適用する場合、次の2つの問題点がある。
【0007】
第1に、均質なアクセス制御の適用の問題がある。SOAへのアクセス制御適用には、アクセス制御を必要とする全てのWebサービスに対して、Policyに変更があっても柔軟に対応できる均質なPEPを適用する仕組みが必要である。しかしながら、従来のPEPは、図1のように各Webサービスに組み込む形で実装されているため、その品質はWebサービスの開発者に依存する。従って、Policyが変更され新たなWebサービスにアクセス制御を適用したり、PDPへの問い合わせ方法が変更されたりした場合、PEP部分を変更せざるを得ず、そのためWebサービスまでもシステム変更せざるを得ない。このように従来の手法では、均質なアクセス制御の仕組みをWebサービスに適用できないという問題があった。
【0008】
第2に、アクセス権問い合わせのコストについての問題がある。PEPからPDPへの認可決定要求は、属性を持ったユーザである主体(Subject)がWebサービス或いはメッセージの一部または全体の資源(Resources)に対して実行・読み込み・書き込みなどの動作(Actions)を行えるかをXML形式で表現したメッセージを送信する。そのため、非常に複雑なアクセス制御の設定がなされている場合、メッセージのデータ量は大きくなり、ネットワークの負荷の増大やWebサービス実行の遅延などの悪影響を及ぼすという問題があった。
【0009】
本発明の目的は、Webサービスへのアクセス制御の均質な適用及び効率的なアクセス制御ができるシステムを提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明は、Webサービスやメッセージに対してアクセス権を設定するアクセス権設定装置と、Policyを配置するPolicyサーバと、ワークフローに従ってWebサービスを連係して実行するBPELサーバとを備えるWebサービスのアクセス制御システムであって、前記アクセス権設定装置は、ユーザがBPEL(Business Process Execution Language)で作成したワークフローを解析し、該ワークフローからWebサービスに係る資源の情報とメッセージに係る資源の情報を抽出する手段と、抽出したWebサービスに係る資源とメッセージに係る資源に対してどのような主体がどのような動作を行うことを許可または不許可とするかを示すアクセス権設定を行う手段と、設定されたアクセス権を示すPolicyを前記Policyサーバに配置する手段と、前記Policyからアクセス制御サービスを実行するプログラムを作成する手段と、前記ワークフローに対して、前記アクセス制御サービスを実行するプログラムを呼び出す記述を追加する手段と、前記ワークフローと前記アクセス制御サービスを実行するプログラムを前記BPELサーバに配置する手段とを備え、前記BPELサーバは、Webサービスクライアントからのサービス要求に応じて、前記ワークフローに従いWebサービスを連係して実行することにより、Webサービスを呼び出して利用する手段と、Webサービスを連係して実行する際、前記ワークフロー中に追加されている前記アクセス制御サービスを実行するプログラムの呼び出しを行い、これにより前記ワークフローに従って利用するWebサービスやメッセージに対してアクセス制御を行う手段と、前記Webサービスクライアントに前記ワークフローの実行結果を返す手段とを備えることを特徴とする。
【0011】
ワークフローを解析して資源の情報を抽出する際には、例えば、ワークフローのタグvariable, assign, invokeからアクセス制御の対象となる、全てのメッセージとWebサービス及びそれらの関係を抽出するようにする。PolicyはXACMLに基づいて作成すればよい。ワークフローに対して、アクセス制御サービスを実行するプログラムを呼び出す記述を追加するときには、Webサービスを呼び出す部分の前後でアクセス制御が行われるようにタグの挿入及び必要な変更を行えばよい。アクセス制御を行う前にPolicyの変更の有無をPolicyサーバに問い合わせ、Policyの変更があるときには、変更後のPolicyに応じたアクセス制御サービスを実行するプログラムの生成を配置のし直しを行うようにする。
【発明の効果】
【0012】
本発明のアクセス制御システムによれば、次のような効果がある。
【0013】
第1に、均質なアクセス制御の適用が実現される。ログやトランザクション処理などの横断的な関心事項をシステムに自動的に組込むアスペクト指向の考え方をワークフローに適用し、アクセス制御という横断的な関心事をBPELで記述されたワークフローに自動的に組込むことで、アクセス制御を漏れなく適用でき、またワークフローとアクセス制御を分離したことでPolicyの変化に対しても柔軟に対応できる。
【0014】
第2に、アクセス権問い合わせのコストを削減できる。アクセス制御を行うプログラムをPolicy Setから自動的に生成することで、どんなにアクセス制御が複雑であっても、通常ワークフロー中で一度PolicyサーバにPolicy Setの更新の有無を問い合わせるだけで済むようになり、アクセス権の問い合わせのコストを大幅に削減することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明を適用したアクセス制御システムの一実施の形態について説明する。
【0016】
図2は、本発明の実施の形態の一例を示すシステム構成図である。本実施形態のアクセス制御システムは、アクセス制御に関するPolicyを設定するPolicy設定PC240、設定したPolicyを保持するPolicyサーバ220、サービス要求を行うWebサービスクライアント210、BPELで記述されたワークフローを実行するBPELサーバ230、及び、Webサービス251を提供するWebサービスサーバ250を備える。
【0017】
Policy設定PC240は、ネットワークを通した通信を行う通信部241、ユーザがワークフローのBPELでの記述やPolicyの設定を行う入出力部242、及び、各種制御を行う制御部245を備える。制御部245は、ユーザが記述したワークフローの解析及び変更を行うBPEL解析部246、ユーザが設定したPolicyの解析やPolicyサーバへの配置を行うPolicy設定制御部247、並びに、アクセス制御を行うアクセス制御サービスの生成及び配置を行うアクセス制御サービス制御部248を備える。
【0018】
Policyサーバ220は、ネットワークを通した通信を行う通信部221、Policyを保存しておくPolicy Set222、各種制御を行う制御部225、及び、アクセス要求の許認可を決定するPDP226を備える。
【0019】
BPELサーバ230は、ネットワークを通した通信を行う通信部231、及び、各種制御を行う制御部235を備える。制御部235は、BPELで記述されたワークフローを実行するBPEL実行制御部236、及び、アクセス制御を行うアクセス制御部237を備える。なお、BPELサーバ230がワークフローを実行する際に複数のWebサービスを呼び出す場合はそれら複数のWebサービスが存在することになるが、ここでは1台のWebサービスサーバ250の1つのWebサービス251のみを図示して他は省略した。
【0020】
図2のシステムにおいて、Webサービスにアクセス制御を適用して実行する過程は、(1) Policyの設定、(2) アクセス制御の実行、の2つの段階から構成される。
【0021】
まず、(1) Policyの設定について説明する。
【0022】
図3は、Policy設定PC240がPolicyの設定を行う過程を表したフローチャートである。最初にユーザが入出力部242を用いてワークフローをBPELで記述する(ステップ301)。
【0023】
図5(a)に、BPELで記述したワークフローの定義例(BPELインスタンスの例)SimpleProcess.bpelを示す。501は、このワークフローで利用するWebサービスの記述である。この例では、利用するWebサービスとしてsomeWebServiceを記述している。502は、XML型式のメッセージのやりとりに利用する変数の定義の記述である。ここではcommonValueを大域的な変数として使用し、request及びresponseを局所的な変数として使うものとする。各変数には502でそれぞれエレメントが指定されている。エレメントcommonMessage、serviceRequestMessage、serviceResponseMessageは、図5(b)のSimpleProcess.xsdにおいて、それぞれ506、507、508のようにXML Schemaで定義されている。
【0024】
<sequence name="main">から</sequence>までが、ワークフローの処理を定義している。503は、assignBeforeの名前で、変数commonValueからrequestへデータをコピーする処理を定義している。commonValueとrequestはそれぞれのメッセージタイプに応じた構造を持ち、ここではcommonValueの下位の/common/p1からrequestの下位のparameter1へデータコピーすることを定義している。504は、invoke1の名前でWebサービスであるsomeWebServiceを呼び出す処理を定義しているものであり、変数requestを入力としresponseを出力と指定している。505は、assignAfterの名前で、変数responseからcommonValueへデータをコピーする処理を定義している。特に、responseの下位のparameter2からcommonValueの下位の/common/p1へデータコピーし、responseの下位のparameter3からcommonValueの下位の/common/p2へデータコピーすることを定義している。なお、ここではワークフローの処理として503〜505のみを図示したが、これらの処理の前後にも各種の処理が記述されているものである。
【0025】
ステップ301で図5のようなワークフロー定義を作成した後、BPEL解析部246は、このようにBPELで記述されたワークフローから資源(Webサービス及びメッセージ(変数))の情報を抽出する(ステップ302)。具体的には、BPELインスタンスの<partnerLinks>, <variables>から抽出すればよい。例えば図5の例では、Webサービスの資源として「sampleProcessProvider」と「someWebServiceProvider」が抽出され、メッセージをやりとりするための変数の資源として「commonValue」、「request」、及び「response」が抽出される。次に、Policy設定制御部247は、ユーザによって入出力部242を通してこれらの資源に対して設定されたアクセス権に関するPolicyを取得する(ステップ303)。
【0026】
図6に、入出力部242におけるアクセス権設定画面を示す。ステップ302で抽出された資源に対して主体と動作が設定できるようになっている。601はWebサービスの資源に対するアクセス権設定を行うウインドウを示し、602はメッセージ(変数)に対するアクセス権設定を行うウインドウを示す。この例では、図5のBPELインスタンスから抽出したWebサービスの資源「sampleProcessProvider」に対して主体「manager」が「実行許可」され、「sampleProcessProvider」に対して主体「employee」が「実行拒否」され、「someWebServiceProvider」に対して主体「salesManager」が「実行許可」されるように、設定されている。また、「someWebServiceProvider」に対して主体「salesManager」が「実行許可」されているが、この主体がこのWebサービスを実行する場合に使用する変数「commonValue」に関して、「common/p1」に対しては「read」と「write」が許可され、「common/p2」に対しては「write」が許可されるように、アクセス権が設定されている。
【0027】
図7は、図6で設定したPolicyの内容の一部であるメッセージに対するアクセス権をXACMLで記述した例である。701は主体、702は資源、703は上記主体が上記資源に対してどのような動作を行うか、をそれぞれ記述している。この例では、図6の画面での設定に応じて、「salesManager」が「commonValue」の下位の「common/p1」に対して「read」及び「write」が可能であると定義している。なお、「common/p2」については省略したが、図6の設定に応じて、「salesManager」が「commonValue」の下位の「common/p2」に対して「write」可能との記述が、図7と同様にして記述されているものとする。また、Policyにはこの他に、図6の「サービスに対するアクセス権設定」で設定した内容を同様に記述したサービスに対するアクセス権に関するPolicyが存在する。
【0028】
ステップ303で上述したようなPolicy(図7)を作成したら、制御部245は、通信部241を通して当該PolicyをPolicyサーバ220に送信する。Policyを受信したPolicyサーバ220の制御部225は、当該PolicyをPolicy Set222に保存する(ステップ304)。次に、Policy設定PC240のアクセス制御サービス制御部248は、Policyサーバ220のPolicy Set222からPolicyを取得して、当該Policyに従うアクセス制御に必要なアクセス制御サービスを生成する(ステップ305)。BPEL解析部246は、ユーザが作成したワークフロー(図5)に、ステップ305で作成したアクセス制御サービスを実行させるためのコードを記述する(ステップ306)。
【0029】
ステップ305,306の処理について、さらに詳しく説明する。
【0030】
図8は、ステップ305の処理によりアクセス制御サービス制御部248が生成したクラスを示す。予めステップ302のワークフロー解析処理により図5の503のデータコピー処理は解析されており、一方、このデータコピー処理で使用する変数commonValueには図7のようにsalesManagerが使用する際のアクセス制御が定義されている。そこで、アクセス制御サービス制御部248は、ステップ305の処理で、図5の記述503のコピー処理を行う際のアクセス制御を実現するためのクラスを、図8の801のように生成する。このAssignBeforeClass801では、主体がsalesManagerのときのみRequest.Parameter1=CommonValue.Common.P1を実行する関数assignが定義されている。
【0031】
同様にして、アクセス制御サービス制御部248は、ステップ305の処理で、図5の記述505のコピー処理を行う際のアクセス制御を実現するためのクラスを、図8の802のように生成する。このAssignAfterClass802では、主体がsalesManagerのときのみCommonValue.Common.P1=Response.Parameter2とCommonValue.Common.P2=Response.Parameter3を実行する関数assignが定義されている。
【0032】
図9は、BPEL解析部246がステップ306の処理により、図5のBPELインスタンスを変更して、図6のアクセス制御サービスを実行するための仕組みを挿入した例である。901,902,904の記述は、図5の501,502,504と同じである。既にステップ305で図6におけるアクセス権設定に応じたクラスを生成してあるので、これに伴って、someWebServiceを呼び出している部分904の前後の記述を、図5の記述503,505から、図8のアクセス制御プログラムを実行する記述903,905に入れ替えている。
【0033】
以上の処理の後、制御部245は、通信部241からBPELサーバ230のBPEL実行制御部236にステップ306で変更したワークフロー(図9)を配置し、アクセス制御部237にステップ305で作成したアクセス制御サービス(図8)を配置する(ステップ307)。
【0034】
以上で、Policyの設定が完了した。
【0035】
次に、(2)アクセス制御の実行について説明する。
【0036】
図4は、Webサービスクライアント210からのリクエストによりBPELサーバ230がワークフローのプロセスを実行するときのシーケンス図である。図4を用いて、本実施形態のシステムにおけるアクセス制御方法を説明する。
【0037】
Webサービスクライアント210は、BPELサーバ230に対してサービス要求を行う(ステップ401)。BPELサーバ230の制御部235は、そのサービス要求を行ったユーザの認証及び役割の特定を行う(ステップ402)。認証が成功した場合、アクセス制御部237が、Policyサーバ220に対してPolicy更新の有無の確認を行う(ステップ403)。確認要求を受信したPolicyサーバ220の制御部225は、Policy Set222を参照して、変更の有無の応答を返す。Policyに変更がないことを確認した場合は、BPELサーバ230のBPEL実行制御部236が、ワークフローのプロセスを実行する。もし、変更があった場合は、ステップ305と同じアルゴリズムでアクセス制御サービスを生成し、以前のものを更新する(ステップ403)。
【0038】
次に、BPEL実行制御部236は、指定されたワークフロー(例えば図9)に従ってWebサービスを呼び出す。特に、BPEL実行制御部236がWebサービス251を呼び出す(invoke)ときなどには、アクセス制御部237はステップ305で作成したアクセス制御サービス(図8)を用いて、Webサービス及びそのWebサービスに渡すパラメータのアクセス制御を行う(ステップ404)。BPEL実行制御部236は、ステップ404でアクセス制御を行った上で、Webサービスサーバ250上のWebサービス251を呼び出す(ステップ405)。Webサービス251の結果を共通メッセージ(ここでは広域的に用いている変数)に反映させるときも、アクセス制御部237は、アクセス制御を行う(ステップ406)。BPEL実行制御部236は、ワークフローのプロセスの実行結果をWebサービスクライアント210に返す(ステップ407)。
【図面の簡単な説明】
【0039】
【図1】従来のアクセス制御の一実施形態例を示すシステム構成図である。
【図2】本発明の一実施の形態例を示すシステム構成図である。
【図3】Policy設定処理の概要を示すフローチャートである。
【図4】アクセス制御実行時のシーケンス図である。
【図5(a)】ワークフローをBPELで記述した記述例(その1)である。
【図5(b)】ワークフローをBPELで記述した記述例(その2)である。
【図6】サービス及びメッセージに対してアクセス権を設定する画面例である。
【図7】サービス及びメッセージに対して設定されたアクセス権に関するPolicyをXACMLで記述した記述例である。
【図8】アクセス制御サービスを行うプログラム例である。
【図9】アクセス制御の仕組みが組込まれたBPELインスタンスの例である。
【符号の説明】
【0040】
210…Webサービスクライアント、220…Policyサーバ、230…BPELサーバ、240…Policyサーバ、250…Webサービスサーバ。

【特許請求の範囲】
【請求項1】
Webサービスやメッセージに対してアクセス権を設定するアクセス権設定装置と、Policyを配置するPolicyサーバと、ワークフローに従ってWebサービスを連係して実行するBPELサーバとを備えるWebサービスのアクセス制御システムであって、
前記アクセス権設定装置は、
ユーザがBPEL(Business Process Execution Language)で作成したワークフローを解析し、該ワークフローからWebサービスに係る資源の情報とメッセージに係る資源の情報を抽出する手段と、
抽出したWebサービスに係る資源とメッセージに係る資源に対してどのような主体がどのような動作を行うことを許可または不許可とするかを示すアクセス権設定を行う手段と、
設定されたアクセス権を示すPolicyを前記Policyサーバに配置する手段と、
前記Policyからアクセス制御サービスを実行するプログラムを作成する手段と、
前記ワークフローに対して、前記アクセス制御サービスを実行するプログラムを呼び出す記述を追加する手段と、
前記ワークフローと前記アクセス制御サービスを実行するプログラムを前記BPELサーバに配置する手段と
を備え、
前記BPELサーバは、
Webサービスクライアントからのサービス要求に応じて、前記ワークフローに従いWebサービスを連係して実行することにより、Webサービスを呼び出して利用する手段と、
Webサービスを連係して実行する際、前記ワークフロー中に追加されている前記アクセス制御サービスを実行するプログラムの呼び出しを行い、これにより前記ワークフローに従って利用するWebサービスやメッセージに対してアクセス制御を行う手段と、
前記Webサービスクライアントに前記ワークフローの実行結果を返す手段と
を備えることを特徴とするアクセス制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5(a)】
image rotate

【図5(b)】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2007−4520(P2007−4520A)
【公開日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願番号】特願2005−184429(P2005−184429)
【出願日】平成17年6月24日(2005.6.24)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】