(57)【要約】【課題】  ポリシーを用いたデータソース（ＸＭＬ文章等）へのアクセス制御を行うにあたって、計算量を抑えたアクセス制御判定方法を提供する。【解決手段】  本発明のアクセス制御装置は、ポリシーを用いて、ユーザのアクセスの可否を判断する際に、ユーザからのデータソースへのアクセスを所定のパスで表現し、アクセス制御判定装置が、所定のパスから、記憶したポリシーのうち該当するポリシーを検索し、所定のパスから、アクセス許可値を計算し、この所定のパス及びポリシー検索部が検索したポリシーから、アクセス効果値を計算し、このアクセス許可値、アクセス効果値から、ユーザのデータソースへのアクセスの可否を判定する。【選択図】        図１
2006155104.tif 000002
【特許請求の範囲】
【請求項１】
ユーザがデータソースへアクセスする際に、前記ユーザに依存してアクセスの可否を判定するアクセス制御判定装置であって、
前記ユーザからの前記データソースへのアクセスを所定のパスで表現するアクセス受付部と、
パス言語で表現された制御パス、及びアクセスの可否を表した制御効果からなるポリシーを記憶したポリシー記憶部と、
前記所定のパスから、前記ポリシーのうち該当するポリシーを検索するポリシー検索部と、
前記所定のパスから、アクセス許可値を計算するアクセス許可値計算部と、
前記所定のパス及び前記ポリシー検索部が検索したポリシーから、アクセス効果値を計算するアクセス効果値計算部と、
前記アクセス許可値、及び前記アクセス効果値から、前記ユーザの前記データソースへのアクセスの可否を判定するアクセス判定部と、
を備えた、アクセス制御判定装置。
【請求項２】
請求項１に記載のアクセス制御判定装置であって、このアクセス制御装置が、コンピュータで実現されたアクセス制御判定装置。
【請求項３】
請求項１に記載のアクセス制御装置であって、前記ポリシー検索部が検索したポリシーの集合を、前記アクセス効果値計算部が、前記制御パスの長さ順にアクセス効果値を計算するアクセス制御判定装置。
【請求項４】
請求項１に記載のアクセス制御装置であって、前記データソースが構造化文章であるアクセス制御判定装置。
【請求項５】
請求項１に記載のアクセス制御装置であって、前記アクセス許可値と前記アクセス効果値とが、数字を用いて表現され、この数字を用いてアクセス制御判定部が、アクセスの可否を判定するアクセス制御装置。
【請求項６】
請求項１に記載のアクセス制御装置であって、前記アクセス許可値と前記アクセス効果値とが、優先順位が定義された文字を用いて表現され、この文字を用いてアクセス制御判定部が、アクセスの可否を判定するアクセス制御装置。
【請求項７】
請求項１に記載のアクセス制御装置であって、前記パス言語が、XPathであるアクセス制御装置。
【請求項８】
ユーザ端末、及びアクセス制御判定装置が通信回線ネットワークに接続され、前記ユーザ端末を用いるユーザがデータソースへアクセスする際に、このユーザに依存してアクセスの可否を判定するアクセス制御方法であって、
前記アクセス制御判定装置のアクセス受付部が、前記ユーザからの前記データソースへのアクセスを所定のパスで表現するステップと、
前記アクセス制御判定装置のポリシー記憶部が、パス言語で表現された制御パス、及びアクセスの可否を表した制御効果からなるポリシーを記憶するステップと、
前記アクセス制御判定装置のポリシー検索部が、前記所定のパスから、前記ポリシーのうち該当するポリシーを検索するステップと、
前記アクセス制御判定装置のアクセス許可値計算部が、前記所定のパスから、アクセス許可値を計算するステップと、
前記アクセス制御判定装置のアクセス効果値計算部が、前記所定のパス及び前記ポリシー検索部が検索したポリシーから、アクセス効果値を計算するステップと、
前記アクセス制御判定装置のアクセス判定部が、前記アクセス許可値、及び前記アクセス効果値から、前記ユーザの前記データソースへのアクセスの可否を判定するステップと、
を含む、アクセス制御判定方法。
【請求項９】
請求項８に記載のアクセス制御判定方法であって、このアクセス制御方法が、コンピュータで実現されるアクセス制御判定方法。
【請求項１０】
請求項８に記載のアクセス制御方法であって、
前記アクセス効果値を計算するステップが、前記ポリシー検索部が検索したポリシーの集合を、前記アクセス効果値計算部が、前記制御パスの長さ順にアクセス効果値を計算するアクセス制御判定方法。
【請求項１１】
請求項８に記載のアクセス制御方法であって、前記データソースが構造化文章であるアクセス制御判定方法。
【請求項１２】
請求項８に記載のアクセス制御方法であって、
前記アクセス許可値を計算するステップでは、数字を用いてアクセス許可値を計算し、
前記アクセス効果値を計算するステップでは、数字を用いてアクセス効果値を計算し、
前記アクセスの可否を判定するステップでは、この数字を用いたアクセス許可値及び数字を用いたアクセス効果値を用いて、アクセス制御判定部が、アクセスの可否を判定するアクセス制御方法。
【請求項１３】
請求項８に記載のアクセス制御方法であって、
前記アクセス許可値を計算するステップでは、優先順位が定義された文字を用いてアクセス許可値を計算し、
前記アクセス効果値を計算するステップでは、優先順位が定義された文字を用いてアクセス効果値を計算し、
前記アクセスの可否を判定するステップでは、この文字を用いたアクセス許可値及び文字を用いたアクセス効果値を用いて、アクセス制御判定部が、アクセスの可否を判定するアクセス制御方法。
【請求項１４】
請求項８に記載のアクセス制御方法であって、前記パス言語が、XPathであるアクセス制御方法。
【請求項１５】
ユーザ端末、及びアクセス制御判定装置が通信回線ネットワークに接続され、前記ユーザ端末を用いるユーザがデータソースへアクセスする際に、前記ユーザに依存してアクセスの可否を判定するアクセス制御判定方法を実現するプログラムであって、
前記アクセス制御判定装置のアクセス受付部が、前記ユーザからの前記データソースへのアクセスを所定のパスで表現するステップと、
前記アクセス制御判定装置のポリシー記憶部が、パス言語で表現された制御パス、及びアクセスの可否を表した制御効果からなるポリシーを記憶するステップと、
前記アクセス制御判定装置のポリシー検索部が、前記所定のパスから、前記ポリシーのうち該当するポリシーを検索するステップと、
前記アクセス制御判定装置のアクセス許可値計算部が、前記所定のパスから、アクセス許可値を計算するステップと、
前記アクセス制御判定装置のアクセス効果値計算部が、前記所定のパス及び前記ポリシー検索部が検索したポリシーから、アクセス効果値を計算するステップと、
前記アクセス制御判定装置のアクセス判定部が、前記アクセス許可値、及び前記アクセス効果値から、前記ユーザの前記データソースへのアクセスの可否を判定するステップと、
を含む、アクセス制御方法を実現するプログラム。
【請求項１６】
請求項１５に記載のアクセス制御判定方法を実現するプログラムであって、
前記アクセス効果値を計算するステップが、前記ポリシー検索部が検索したポリシーの集合を、前記アクセス効果値計算部が、前記制御パスの長さ順にアクセス効果値を計算するアクセス制御判定方法を実現するプログラム。
【請求項１７】
請求項１５に記載のアクセス制御判定方法を実現するプログラムであって、前記データソースが構造化文章であるアクセス制御判定方法を実現するプログラム。
【請求項１８】
請求項１５に記載のアクセス制御判定方法を実現するプログラムであって、
前記アクセス許可値を計算するステップでは、数字を用いてアクセス許可値を計算し、
前記アクセス効果値を計算するステップでは、数字を用いてアクセス効果値を計算し、
前記アクセスの可否を判定するステップでは、この数字を用いたアクセス許可値及び数字を用いたアクセス効果値を用いて、アクセス制御判定部が、アクセスの可否を判定するアクセス制御判定方法を実現するプログラム。
【請求項１９】
請求項１５に記載のアクセス制御判定方法を実現するプログラムであって、
前記アクセス許可値を計算するステップでは、優先順位が定義された文字を用いてアクセス許可値を計算し、
前記アクセス効果値を計算するステップでは、優先順位が定義された文字を用いてアクセス効果値を計算し、
前記アクセスの可否を判定するステップでは、この文字を用いたアクセス許可値及び文字を用いたアクセス効果値を用いて、アクセス制御判定部が、アクセスの可否を判定するアクセス制御判定方法を実現するプログラム。
【請求項２０】
請求項１５に記載のアクセス制御判定方法を実現するプログラムであって、前記パス言語が、XPathであるアクセス制御判定方法を実現するプログラム。
【請求項２１】
請求項１５に記載のアクセス制御判定方法を実行するプログラムを記録したコンピュータ読取可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ポリシーを用いたアクセス制御効果の判定方法に関する。さらに詳しくは、ユーザが、データベース・サーバに記憶されたデータへアクセスする際の効果を判定する手段およびその方法に関する。
【背景技術】
【０００２】
従来より、処理を行うデータを取得するために、このデータが記憶されたデータベース・サーバへアクセスすることが行われている。この際、ユーザはクライアントとなるコンピュータ端末を使用し、ＬＡＮ（Local  Area  Network）やインターネットを経由して、データベース・サーバへアクセスし、データを取得する。ここで記憶されるデータは、例えばＸＭＬ（eXtensible  Markup  Language）やＨＴＭＬ（Hyper  Text  Markup  Language）によって記述される。特に、ＸＭＬにて記述された文書は、ＸＭＬ文書と呼ばれる。ＸＭＬ文書は、その文書に対して情報を提供する者の意図に従った、階層を備えた構造化を行うことができる階層構造文書として知られている。このようなＸＭＬ文書は、遺伝子のゲノム情報のような大規模なデータベースから、医療カルテのような小規模なデータベースまで幅広く使用されている。
【０００３】
ここで、データベースの管理者は、このＸＭＬ文書に対して、あるユーザがデータベースにアクセスした場合に、このアクセスをユーザによっては拒否する設定を行う場合がある。例えば、病院の医療カルテのデータベース管理者は、患者が自らの医療カルテのデータにアクセスできないように規制する必要がある。
【０００４】
具体的には、ポリシーと呼ばれる規則を用いて、アクセス制御を行う方法が知られている。ポリシーとは、例えば、ユーザの名前や役職、部署等に基づいて決定される。
【０００５】
そして、このポリシーを用いて、Windows（登録商標）ファイルシステムが採用しているように、ファイルやフォルダごとにアクセス制御を行う。これにより、許可がないユーザやユーザのグループが、該当ファイルやフォルダにアクセスするのを防止できる。
【０００６】
しかしながら、あるユーザに対して、そのファイル内の一部の部分にのみアクセスを許可し、残る部分についてはアクセスを拒否するという制御が要請される場合がある。
【０００７】
例えば、医療カルテが一つのＸＭＬ文書ファイルとして作成され、データベースに記憶されている場合を想定する。このとき、医師はカルテの情報の全てにアクセスできるが、インターン生は患者の診断情報にしかアクセスできないことが好ましい。しかし、上述のアクセス制御の方法では、ファイル単位にしかポリシーを設定できないため、そのＸＭＬ文書の一部分のみについてアクセスを制御することはできない。
【０００８】
このような問題を解決する方法として、ＸＭＬ文書の内部構造単位でアクセスを可能にする制御装置が知られている（特許文献１）。特許文献1には、ＸＭＬ文書内にポリシーを組み込むことで、文書の内部構造単位でアクセス制御装置が示されている。特許文献１のＸＭＬ文書は、データベースのデータそのものであるレコードと、そのレコード各々に対して設定されるポリシーとを含んでいる。ユーザがＸＭＬ文書の一部分へアクセスした場合に、アクセス制御装置は、組み込まれたポリシーを読み込んでアクセスを制御する。
【０００９】
しかしながら、このアクセス制御装置は、データベースのレコードが多い場合には適当ではない。なぜなら、データベースのレコードが増えると、このレコードのアクセスを規制するポリシーも増え、ＸＭＬ文書が巨大化するからである。
【００１０】
例えば、遺伝子のゲノム情報ではＸＭＬ文書のレコードのデータ量は、１ギガバイト以上のサイズになる場合がある。そのうえ、このＸＭＬ文書に対して、企業や学術団体等の多数のユーザがアクセスする。そのため、アクセスする多数のユーザの各々に対して、ポリシーの設定を行う必要があり、ポリシーのデータ量は、膨大なデータ量になる。したがって、レコードのデータ量、ポリシーのデータ量ともに膨大になり、ＸＭＬ文書のファイルは巨大化する。
【００１１】
そこで、ポリシーをＸＭＬ文書から分離し、データベース化する方法が知られている（非特許文献１）。非特許文献１には、ポリシーをテーブル型データベース（以下、「テーブルマップ式データベース」」で構成する方法が開示されている。テーブルマップ式データベースとは、ＸＭＬ文書の特定の部分を指定するパス式と、このパス式に対応する条件とからなるポリシーにより構成される。ユーザがアクセスすると、アクセス制御装置が、このアクセス要求に対するパス式を算出する。そして、アクセス制御装置は、このパス式に対応した効果を、テーブルから読み出し、そのパス式で指定されたＸＭＬ文書の部分のアクセスの可否を判定する。
【特許文献１】特開２００１−２７３２８５号公報
【非特許文献１】戚乃箴，工藤道治、「XMLデータベースのためのパステーブルを用いたアクセス制御モデル」、コンピュータセキュリティ研究会、情報処理学会、２００３年１１月１４日
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述のような、テーブルマップ式データベースを使用した場合に、このユーザがＸＭＬ文章の部分にアクセスすることの可否を判断するポリシー（テーブルマップ式の場合のポリシーを、以下「エントリー」とする）が、１つではなく、複数のエントリーが検索される場合がある。例えば、経理部に所属するDanielが、／経理部／給料明細書にアクセスした場合を想定する。システムは、１つ目のポリシーとして、「Danielは、／経理部以下のパスには全てアクセス可能」というポリシーを検索する。さらに、２つ目のポリシーとして、「Danielは、／経理部／給料明細書にアクセス不可」というポリシーも検索する。このように、複数のポリシーが検索された場合には、複数のエントリーをそれぞれ個別に検討して、ユーザのアクセスの可否を判断する。したがって、多数のポリシーが設定されたシステムでは、システムが検索したエントリーが莫大な量となる場合があり、この場合には、アクセス可否を判定するための計算量が多くなってしまう。
【００１３】
一方、テーブルマップ式以外にも、マッチング式と呼ばれる木構造を用いたポリシーにより、アクセスを判断する方法がある。この方法では、ポリシーを木構造データとして構成することにより、ポリシーのデータ量をテーブルマップ式に比べて削減することができる方法である。
【００１４】
このマッチング式を用いた場合であっても、検索されたポリシーが多数であった場合には、アクセスの可否の判定のための計算量は多くなる。このことを、図６を用いて説明する。図６は、マッチング式において、アクセスの可否を判定するためのアルゴリズムとして一例を示した。ここで、ＸＭＬ文章の部分を特定するために、パス言語を用いている。つまり、Ｐｉがパス（ポリシーで制御される対象に関する指標であって、例えば、制御される対象となるユーザ名や、制御される対象となるＸＭＬ文章の中の場所の情報を含んだ指標）であり、Ｐｉ＝／ｅ１／ｅ２／ｅ３／・・・／ｅｉ＋１の、各ｅｉが、ノード（上述の、ユーザ名や、ＸＭＬ文章の中の場所）に該当する。ポリシーは、このパスと、アクセス制御効果Ｑとからなる。アクセス制御効果とは、アクセス可能、アクセス不可能等のアクセスの可否に関する情報である。
【００１５】
図６では、パスがｎのノードから構成され、アクセス制御効果の数（ポリシーの数）がＱである場合のアルゴリズムを示した。ここでは、ノードの数だけ計算がループし、さらに、このループの中にアクセス制御効果の数だけ計算がループするため、全ての計算量としては、ｎ｜Ｑ｜となる。つまり、ポリシーを用いてアクセス制御を行うにあたって、そのアクセスの可否であるアクセス制御効果の確認は、ｎ｜Ｑ｜回の計算をする。これは、ポリシーの量が多いデータベース、あるいは、ノードの数が多いデータベース（大規模なＸＭＬ文章であり、後述するObjectが多いデータベース）の場合には、計算量が莫大な量となり、データベース効率が低下する。
【００１６】
本発明は、上述の課題を鑑み、ポリシーを用いたデータソース（ＸＭＬ文章等）へのアクセス制御を行うにあたって、計算量を極力抑えた判定方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
ユーザがデータソースへアクセスする際に、このユーザに依存してアクセスの可否を判定するアクセス制御判定装置であって、
前記ユーザからの前記データソースへのアクセスを所定のパスで表現するアクセス受付部と、
パス言語で表現された制御パス、及びアクセスの可否を表した制御効果からなるポリシーを記憶したポリシー記憶部と、
前記所定のパスから、前記ポリシーのうち該当するポリシーを検索するポリシー検索部と、
前記所定のパスから、アクセス許可値を計算するアクセス許可値計算部と、
前記所定のパス及び前記ポリシー検索部が検索したポリシーから、アクセス効果値を計算するアクセス効果値計算部と、
前記アクセス許可値、及び前記アクセス効果値から、前記ユーザの前記データソースへのアクセスの可否を判定するアクセス判定部と、
を備えた、アクセス制御判定装置。
【００１８】
この発明によれば、ポリシーを用いて、ユーザのアクセスの可否を判断する際に、アクセス制御判定装置のアクセス受付部が、ユーザからのデータソースへのアクセスを所定のパスで表現し、アクセス制御判定装置のポリシー記憶部が、パス言語で表現された制御パス、及びアクセスの可否を表した制御効果からなるポリシーを記憶し、アクセス制御判定装置のポリシー検索部が、所定のパスから、記憶したポリシーのうち該当するポリシーを検索し、アクセス制御判定装置のアクセス許可値計算部が、所定のパスから、アクセス許可値を計算し、アクセス制御判定装置のアクセス効果値計算部が、この所定のパス及びポリシー検索部が検索したポリシーから、アクセス効果値を計算し、アクセス制御判定装置のアクセス判定部が、アクセス許可値、及びアクセス効果値から、ユーザのデータソースへのアクセスの可否を判定する。
【００１９】
したがって、この発明によれば、アクセスの可否を判定する際には、アクセス許可値とアクセス効果値とを計算するだけでよい。すなわち、アクセス制御効果の計算量を、アクセス効果値を計算する数＋アクセス許可値を計算する数、すなわち、アクセス制御効果の数（ポリシーの数）にアクセス許可値の計算（１回）を加えた｜Ｑ＋１｜に抑えることができる。これにより、従来の計算量ｎ｜Ｑ｜よりも少ない計算で、アクセスの可否の判定を行うことが可能である。
【発明の効果】
【００２０】
この発明によれば、アクセスの可否を判定する際には、アクセス許可値とアクセス効果値とを計算するだけでよい。すなわち、アクセス制御効果の計算量を、アクセス効果値を計算する数＋アクセス許可値を計算する数、すなわち、アクセス制御効果の数（ポリシーの数）にアクセス許可値の計算（１回）を加えた｜Ｑ＋１｜に抑えることができる。これにより、従来の計算量ｎ｜Ｑ｜よりも少ない計算で、アクセスの可否の判定を行うことが可能である。
【発明を実施するための最良の形態】
【００２１】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
【００２２】
図１に示すように、アクセス制御判定システム１は、複数のユーザ端末２０と、これらのユーザ端末２０と通信回線ネットワーク３０を介して接続されるアクセス制御判定装置１０と、同様に、通信回線ネットワーク３０を介してアクセス制御判定装置１０と接続されるデータソース記憶手段３１とを備えている。
【００２３】
ユーザ端末２０は、図２に示すように、ＣＲＴディスプレイや液晶ディスプレイ等の表示手段２１と、キーボードやテンキー、マウス等の入力手段２２と、ハードディスク、メモリ等の記憶手段２３と、ＣＰＵ等の制御手段２４と、通信回線ネットワーク３０に接続されるネットワーク・カード等の通信手段２５とを備えている。ユーザ端末２０は、ユーザが、通信回線ネットワーク３０を介して、データソースとなるデータへのアクセスを行うクライアント機能を備える。ユーザ端末２０は、ユーザがデータソースの部分へのアクセスを行う場合に、このデータソースの部分への読み出し、書き込み、更新等のアクションを行うためのアクセス要求を送信する。ここで、ユーザ端末２０は、コンピュータ端末であってもよいし、携帯情報端末であってもよい。
【００２４】
通信回線ネットワーク３０は、アクセス制御判定装置１０とユーザ端末２０とを接続するネットワークである。通信回線ネットワーク３０は、ＬＡＮ（Local  Area  Network）であってもよいし、インターネットであってもよい。
【００２５】
データソース記憶手段３１は、ＸＭＬ文書等のデータソースが記憶されている装置である。例えば、データソース記憶手段３１は、ハードディスクのような記憶手段であってもよい。また、データソース記憶手段３１は、図１に示すように、アクセス制御判定装置１０の外部に設置されていてもよいし、アクセス制御判定装置１０の内部に設置されていてもよい。データソースはファイルとして記憶されたＸＭＬ文書等であってよく、データソースの部分とは、ＸＭＬ文書等のデータソースの一部の領域のことである。例えば、ＸＭＬ文書内のタグで囲まれた領域である。
【００２６】
アクセス制御判定装置１０は、図３に示すように、通信部１１と、アクセス受付部１２と、ポリシー検索部１３と、ポリシー記憶部１６と、アクセス判定機構５００とを備え、アクセス判定機構５００は、アクセス許可値計算部１４と、アクセス効果値計算部１５と、アクセス判定部１７とを備えている。
【００２７】
アクセス制御判定装置１０は、通常のコンピュータであってよい。すなわち、アクセス制御判定装置１０が、中央演算装置（以下「ＣＰＵ」）、記憶メモリ、入出力インターフェース、大容量記憶装置、入出力装置（ディスプレイ、スピーカ、キーボード、マウス）を備えていることで、アクセス制御判定装置１０の機能が実現されてもよい。
【００２８】
通信部１１は、通信回線ネットワーク３０に接続され通信を行う。通信部１１は、ネットワーク・インターフェースであってよく、モデムやＬＡＮカード、ＬＡＮボード等であってよい。
【００２９】
アクセス受付部１２は、ユーザからのＸＭＬ文章の部分に対するアクセスを受け付ける装置である。ユーザ端末２０のクライアント機能から、データソースへのアクセスが行われる。このアクセスを受け付けるのが、アクセス受付部１２である。アクセス受付部１２は、アクセスしたユーザ名、ユーザの部署、アクセスされるＸＭＬ文書の場所等の情報から、ノードを特定し、ノードからパス式を作成する。作成したパス式をポリシー検索部１３に伝える。
【００３０】
ポリシー検索部１３は、アクセス受付部１２が作成したパス式に基づいて、該当するポリシーをポリシー記憶部１６から検索する。すなわち、ポリシー検索部１３は、パス式を構成する個々のノードに対応したポリシーを、ポリシー記憶部１６から検索する。
【００３１】
ポリシー記憶部１６は、ポリシーが記憶された装置である。通常のハードディスクやメモリ等の手段であってよく、ＤＶＤ、ＣＤ等の記憶媒体に記憶する手段であってもよい。ポリシー記憶部１３に記憶されたポリシーから、ポリシー検索部１３が該当するポリシーを検索する。
【００３２】
アクセス判定機構５００は、図３に示すようにアクセス制御判定装置１０の内部に備えられていてもよいし、異なるハードウェア装置（コンピュータ等）として、アクセス制御判定装置１０の外部に備えられていてもよい。
【００３３】
アクセス許可値計算部１４は、アクセス許可値を計算する手段である。ここで、アクセス許可値とは、アクセスの許可をするための基準となる値である。アクセス許可値計算部１４は、アクセス受付部１２が作成したパス式に基づいて、アクセス許可値を計算する。アクセス許可値計算部１４は、この計算結果をアクセス判定部１７へ伝える。
【００３４】
アクセス効果値計算部１５は、アクセス効果値を計算する手段である。ここで、アクセス効果値とは、アクセス受付部１２が作成したパス式と、ポリシー検索部１３が検索したポリシーとから計算される値である。アクセス効果値計算部１５は、この計算結果をアクセス判定部１７へ伝える。
【００３５】
アクセス判定部１７は、アクセス許可値計算部１４が計算したアクセス許可値と、アクセス効果値計算部１５が計算したアクセス効果値とから、アクセスの可否を判定する手段である。アクセス判定部１７は、アクセスの可否を判定した後に、アクセスの可否に基づいて、データソース記憶手段３１にアクセスして、判定をしたＸＭＬ文書の部分の情報をユーザ端末２０に対して提供してもよい。
【００３６】
アクセス制御判定装置１０の各手段が実行する具体的な動作を、図４のフローチャートを用いて説明する。
【００３７】
最初に、ユーザ端末２０からデータソース記憶手段３１に記憶されたデータソース（ＸＭＬ文章等）のある部分に対して、アクセスしたいという要求がアクセス制御判定装置１０に送信される（Ｓ０１）。ユーザ端末２０のように、通信回線ネットワーク３０を介して、アクセス制御判定装置１０に、この要求が送信されてもよいし、アクセス制御判定装置１０が、キーボード等の入力手段を備えているため、通信回線ネットワーク３０を介さずに、直接的に、ユーザからの要求がアクセス制御判定装置１０に伝えられてもよい。
【００３８】
アクセス制御判定装置１０のアクセス受付部１２は、ユーザ端末２０からの要求を受信して、この要求を所定のパスで表現する（Ｓ０２）。パスとは、この要求に関する情報を集約した文字列である。ここで、要求に関する情報とは、例えば、アクセスを行うユーザの所属、名前や、アクセスを行うデータソースの場所の情報等である。
【００３９】
このパス情報から、アクセス制御判定装置１０のポリシー検索部１３は、パスに適したポリシーをポリシー記憶部１６から検索する（Ｓ０３）。パスに適したポリシーは、１つだけ検索されるとは限らない。すなわち、１つのパスに対して、検索されるポリシーが複数存在するという場合もある。
【００４０】
次に、アクセス判定機構５００のアクセス許可値計算部１４が、アクセス許可値を計算する（Ｓ０４）。アクセス許可値は、アクセス受付部１２が表現したパスのみから計算される。
【００４１】
一方、アクセス効果値計算部１５は、ポリシー検索部１３が検索したポリシーと、アクセス受付部１２が表現したパスからアクセス効果値を計算する（Ｓ０５）。ポリシー検索部１３が検索したポリシーが複数である場合には、検索されたポリシーの全てを用いてアクセス効果値を計算する。
【００４２】
アクセス判定部１７は、上述のステップで計算されたアクセス許可値とアクセス効果値とを用いて、アクセスの可否を判定する（Ｓ０６）。具体的には、アクセス許可値とアクセス効果値との値（文字列）を比較して判定を行う。アクセス判定部１７は、ユーザのアクセスが不可と判断した場合には、処理を行わず終了してもよいし、アクセスが不可である情報をユーザ端末２０に送信してもよい。
【００４３】
アクセス判定部１７が、ユーザのアクセスが可能と判断した場合には、データソース記憶手段３１にアクセスして、アクセス要求のあったデータソース部分の表示を、ユーザ端末２０の表示手段２１に行う（Ｓ０７）。
【００４４】
[XPath]  本発明で用いる「パス」の例としてXPathについて説明する。XPathは、アクセスの制御を行う対象を定義づけるために用いられる。つまり、XPathは、ＸＭＬ文書の特定の部分を指し示す構文を規定する。さらに具体的には、XPathを用いることで、XML文書中にインデックスなどが埋め込まれていなくとも、文書中の任意の位置を指し示すことができる。
【００４５】
一般的なポリシーの例として、「Aliceは、人事情報を閲覧できるが、秘密情報は閲覧できない。Bobは、人事情報も秘密情報も閲覧できない」というポリシーが入力されたとする。このポリシーを単純化するため、以下の表１に示されたパス式言語により記述されたアクセス制御ポリシーを使用する。ここで、表１のパス式言語の一部として、XPath（XML  Path  Language）を用いることができる。
【００４６】
【表１】
2006155104.tif 000003
【００４７】
最初に、表１を用いてパス式言語の説明をする。Subject-Typeは、Subjectが、どのような種類であるかを定める。例えば、Subject-TypeをUserIDとして、Subjectをユーザ名とすることが可能である。その他に、Subject-TypeをGroupとし、Subjectをグループ名とすることも可能である。また、Objectは、アクセス制御を行う対象である。実際にユーザがアクセスを行うデータソースの位置もしくは部分を示す。Objectで指定されるパス式の各要素を、パス値とする。Mode-Actionは、SubjectとObjectとの条件を満たした場合の、判定の内容である。判定の内容とは、例えば、アクセス許可、拒否、という内容であってもよいし、読み出すためのアクセス可能、又は拒否という内容でもよい。本実施例では、ユーザがデータを読み出す際の判定について説明するが、ユーザが書き込むためのアクセスの可否の判定や、更新するためのアクセスの可否の判定、削除するためのアクセスの可否の判定についても同様に適用される。
【００４８】
Mode-Actionの、＋Rとは、Objectで指定する部分以下の階層のノード全てを閲覧可能であることを示す。これに対して、＋rは、その階層のノードのみ閲覧可能であることを示す。Mode-Actionにて+Rを採用した場合には、上位ノードが全ての下位ノードのMode-Actionを決定することができる。
【００４９】
本明細書中では、下位ノードから見た上位ノードは、親のノード、祖先のノードと記載し、上位ノードから見た下位ノードは、子のノード、子孫のノードと記載する。
【００５０】
さらに、Mode-Actionは、必ずしも判定の結論でなくてもよい。例えば、データソースからのデータ値を用いてアクセスの可否を判断する条件の場合には、Mode-Actionは、データ値が満たすべき述語式であってもよい。
【００５１】
述語式は、データ値をデータソースから読み出して、そのデータ値からアクセス制御を行う場合の判断式である。この述語式の条件を満たす場合には、このノードに設定されたMode-Actionの判定内容が採用される。つまり、述語式では、条件変数Xに対応するデータ値を、データソースから読み出し、このデータ値が述語式の内容を満たす（例えば、１００より大きい場合）は、アクセスを可能・不可能とする判定を行うことを意味する。
【００５２】
アクセス制御ポリシーは、１つまたは複数のルールにより構成される。例えば、１のルールは、以下のように表される。
【００５３】
【数１】
2006155104.tif 000004
【００５４】
上述のAliceとBobのポリシーは、アクセス制御ポリシーを使用すると以下の（式２）のように記述される。ここで、人事情報はＸＭＬ文書内のパス/site/peopleに示されるところに位置し、秘密情報は、同様に/site/secretで示されるところに位置するとする。（式２）では、３つのルールをアクセス制御ポリシーで記述している。
【００５５】
【数２】
2006155104.tif 000005
【００５６】
例えば、ユーザ（Alice）がアクセスされるノードのObjectのパス表現が、/site/people/aliceのときは、全体のパスとして（USERID,Alice,/site/people/alice）と表される。このパス表現に対して、ポリシー検索部１３が、該当するポリシーを検索する。（式２）の中では、ポリシー検索部１３は、<USERID,Alice,/site/people,+R>を検索する。
【００５７】
【数３】
2006155104.tif 000006
【００５８】
（式３）で示したように、Objectに“//”を含む場合がある。この場合には、例えばAliceは、/a/c/の下にどんな階層があっても、その下の階層である/dにアクセスできる。すなわち、“//”は、３番目の階層がどんなパス値であっても、その下の/dに対してアクセス可能ということを意味する。
【００５９】
このObjectに“//”を含む場合の例として、アクセス制御ポリシーは<UserID,Seki,/a,+r>,<UID,Seki,/a//c,-R>と二つがあり、アクセスされるノードのパス表現は/a/b/c/dのとき、適用するポリシー（制御パスと制御効果のペア）は<UserID,Seki,/a,+r>と、<UID,Seki,/a//c,-R>である。特に、//が制御ポリシーに含まれるとき、制御パスは制御ポリシーのオブジェクト（/a//c）がP（/a/b/c/d）の上でマッチした部分である、（/a/b/c）となる。
【００６０】
このように、XPathを用いて、アクセス制御ポリシーを記述でき、これをポリシー記憶部１６に記憶する。ポリシー検索部１３は、アクセス受付部１２が表現したアクセスされたパスから、ポリシー記憶部１６に記憶されたポリシーに対して、該当するポリシーを検索する。
【００６１】
［ポリシーの検索、アクセス制御の判定技術］既存の技術として、ポリシーを検索しアクセス判定を行う機構としては、以下の表２に示すような研究が行われている。
【００６２】
【表２】
2006155104.tif 000007
【００６３】
テーブルマップ式の技術は、上述の非特許文献１に記載されている。これに加えて、例えばT.Yu,  D.Srivastava,  L.V.S.  Lakshmanan,  and  H.V.Jagadish,  “Compressed  Accessibility  Map:Efficient  Access  Control  for  XML”,in  VLDB,2002に記載されており、テーブルを用いてアクセスの判定を行う。フィルターリング式は、例えばM.Altinel  and  M.Franklin,“Efficient  filtering  of  XML  documents  for  selective  dissemination  of  information,”,in  VLDB,2000に記載されている技術であり、アクセス可能な部分だけをポリシーで定義する技術である。オートマン式では、例えば、M.Murata,A.Tozawa  M.Kudo  and  H.Satoshi,“XML  Access  Control  Using  Static  Analysis”,  in  ACM  CCS,2003に記載されている技術であり、複雑なアクセス制御ポリシーの設定が可能である技術である。マッチング式は、アクセス制御ポリシーを木構造に変換してアクセス制御を行う方法であり、例えば、特願２００４−１９１４２５に記載されている方法である。
【００６４】
これらの様々な方式を用いて、アクセス制御を行う際に、アクセス要求から表現したXPathから複数のポリシーが検索され、この複数のポリシーに基づいて判定を行う場合がある。この場合には、複数のポリシーを１つずつ計算する必要が生じる。本発明では、この複数のポリシーの計算を効率的に行う方法を提案する。
【００６５】
したがって、本発明では、表２に記載したアクセス制御以外の方法であっても、上述のように複数のポリシーの個々を計算して、アクセスの判定を決定するときには、適用可能である。
【００６６】
［前提条件］  本発明で提案した方法の前提条件について説明する。前提条件としては、（１）複数のポリシーから生じる矛盾の解決方法と、（２）ディフォルトの制御効果についての二点である。
【００６７】
（１）について説明する。複数のポリシーが検索されると、この複数のポリシーの間で、矛盾が生じる場合がある。つまり、一つのノードに対して、同時に「アクセス許可」と「アクセス拒否」とが制御されるときに、この矛盾が生じる。管理者は、この矛盾が生じたときには、「アクセス拒否」または「アクセス許可」のいずれかを優先するように、アクセス判定部１７にこの優先順位を記憶させる。これにより、矛盾が生じた場合には、どちらの効果を優先させるかを、アクセス判定部１７が判断することができる。
【００６８】
（２）について説明する。アクセス制御ポリシーに制御されないノードに対しては、「アクセス許可」または「アクセス拒否」のどちらかを採用するかを、定義づけておく必要がある。これが、ディフォルトの制御効果である。一般的には、安全性を保障するシステムでは、「アクセス拒否」がディフォルト制御効果として採用される。
【００６９】
［計算方法、判定方法］
ポリシー検索部１３により複数のポリシーが検索された後に、アクセス制御判定機構５００は、アクセス許可値とアクセス効果値とを計算する。アクセス制御判定装置１０のアクセス許可値計算部１４がアクセス許可値を計算する。アクセス許可値とは、アクセスしようとするノードへ到達するために許可される最小の値である。一方、アクセス制御判定装置１０のアクセス効果値計算部１５がアクセス効果値を計算する。アクセス効果値は、検索されたアクセス制御ポリシーに基づいて計算される。
【００７０】
計算されたアクセス許可値とアクセス制御値とに基づいて、アクセス判定部１７がアクセスの判定を行う。具体的には、アクセス効果値≧アクセス許可値（アクセス許可値、アクセス効果値を数字で表現した場合）であるときにアクセスは許可される。
【００７１】
［計算の順番］
アクセス判定部１７はポリシー検索部１３から得られた多数のポリシー（制御パス、制御効果）の集合を入力として受け取り、これらの制御効果の間の競合の解決を行い、制御結果を判定する。競合解決は、各（制御パス、制御効果）の組をパスの長さが短い順に調べることにより行われてもよい。一例として、競合解決の手順は以下のようである。パスの長さをnとする。n=1のものから順に調べるとする。
【表３】
2006155104.tif 000008
【００７２】
例えば、パス/a/b/c/dについて、以下のような（制御パス、制御効果）の集合が得られたとする。
【数４】
2006155104.tif 000009
【００７３】
これをn=1,2（パス/a,a/b）のときには、制御効果が、+rであるため、n=3を調べる。しかし、n=3（パス/a/b/c）では制御効果が、+Rであるため、n=4（パス/a/b/c/d）については、-Rでなければよい。よってアクセスは許可されるべきである。以上のような競合解決を効率的に実装するためには、ポリシー（制御パス、制御効果）の集合を制御パスの長さ順にソートして、アクセス効果値を計算する手法が有効である。
【００７４】
以下ではこのアクセス効果値を用いたアクセス判定部１７の実装の詳細を説明する。
【００７５】
［アクセス効果値］以下では、アクセス効果値計算部１５が、アクセス効果値を、アクセスのあったパスとアクセス制御ポリシーとにより計算する具体的な方法について述べる。アクセス制御ポリシーに出現するMode-Actionはポリシーの制御効果を決める。たとえば、+rは子孫へのアクセス伝播なしの許可を表す。+Rは子孫へのアクセス伝播ありの許可を表す。また、-Rは子孫へのアクセス伝播ありの拒否を表す。これらのアクセス制御効果を違うデータ構造で表し、各制御ポリシーが要求されるパスに含まれるノードにデータ効果を用いて反映し、アクセス効果値を計算する。
【００７６】
具体的な実装に関して説明する。たとえば、それぞれの制御効果を表４と表５に示しているように数字または文字列で表すと考えられる。更に、表４では制御されないパス（N/A）に対した記述も書かれている。その場合、パスとその子孫は全て未定義となる。
【表４】
2006155104.tif 000010
【表５】
2006155104.tif 000011
【００７７】
まず、表４の数字を用いた方法で説明する。アクセスされるノードenのパス表現Pを/e１/e２/…/eｉ/…/eｎで表すとする。表４のMode-Actionに対応した数字を用いて、ルートノードのe１からアクセスされるノードeｎまでのノードをそれぞれ数字に置き換えられ、アクセス効果値を生成することができる。パスP=/e１/e２/…/eｉ/…/eｎのアクセス効果値Effectの生成アルゴリズムは以下のようになる。
【００７８】
［アクセス効果値の計算におけるアルゴリズムの例］  パスPに適用される制御パスと制御効果のペア集合にはm個の元素があり、任意の制御パスをQｊとし、その長さを|Qｊ|とする。また、その対応する制御効果はEｊとする。計算方法は、まず長さnとなる配列effectを初期化し、全ての要素を１にする。また、ノードeｉに対応した配列の要素はeffect[i]となる。表６は下のような流れでアクセス効果値Effectを計算する。なお、制御パスに//が存在しないと仮定する。
【表６】
2006155104.tif 000012
【００７９】
表６のアルゴリズムを用いて、簡単な例を一つあげる。ここでは、アクセス制御ポリシーのObject部のみ考慮する。パスPは/a/b/c/d/eで、適用する制御パスと制御効果のペアは（１）（/a,+r）、（２）（/a/b,+R）、（３）（/a/b/c/d/e,+r）と３つあると仮定する。以上の条件で、アクセス効果値を上のアルゴリズムで計算する。
【００８０】
初期値として、effect配列は{1,1,1,1,1}となる。（１）を処理した時点で、/aに+rの制御効果が与えられたため、effect[0]は2となり、配列は{2,1,1,1,1}となる。（２）を処理した時点で、effect[1]は３となり、配列は{2,3,1,1,1}となる。また、（３）の時点でeffect[4]は2となり、配列は{2,3,1,1,2}となる。結局、アクセス効果値は23112となる。
【００８１】
さらに、表７の文字列を同様なアルゴリズムで効果値を計算できる。ただし、最後にEffectを計算するとき、違うアルゴリズムを用いる必要がある。
【表７】
2006155104.tif 000013
【００８２】
ここで、appendはEffect文字列の右側に新しい文字列を追加するメソッドとする。簡単な例を一つあげる。Pは/a/b/c/d/eで、適用する制御パスと制御効果のペアは（１）（/a/b/c/d/e,+r）、（２）（/a,+r）、（３）（/a/b,+R）と３つあると仮定する。以上の条件で、アクセス効果値を上のアルゴリズムで計算する。初期値として、effect配列は{‘b’,‘b’,‘b’,‘b’,‘b’}となる。（１）を処理した時点で、/a/b/c/d/eに+rの制御効果が与えられたため、effect[4]は‘c’となり、配列は{‘b’,‘b’,‘b’,‘b’,‘c’}となる。（２）を処理した時点で、effect[0]は‘c’となり、配列は{‘c’,‘b’,‘b’,‘b’,‘c’}となる。また、（３）の時点でeffect[1]は‘d’となり、配列は{‘c’,‘d’,‘b’,‘b’,‘c’}となる。結局、アクセス効果値は“cdbbc”となる。
【００８３】
一方、制御パスに‘//’が含まれるとき、事前にPに対し当てはまる制御パスを展開し、制御パスを追加する必要がある。たとえば、制御パスは/a//bで制御効果は+rのとき、Pは/a/b/d/b/e/bのとき、展開されるものは/a/b,a/b/d/b、と/a/b/d/b/e/bとなり、制御パスと制御効果のペアは３つとなる。それぞれは、（/a/b,+r）,（a/b/d/b,+r）、と（/a/b/d/b/e/b,+r）となる。
【００８４】
［アクセス許可値］以下では、アクセス許可値計算部１４が、アクセス効果値を、アクセスのあったパスにより計算する具体的な方法について述べる。アクセス許可値はアクセス許可されるための最小アクセス効果値である。上述のように、アクセスの可否は、階層構造に従った祖先の制御効果に依存性を持つ。したがって、パスへのアクセスが許可されるための必要条件は、その祖先ノードも全て許可されることである。アクセスされるノードeｎのパス表現Pを/e１/e２/…/eｉ/…/eｎで表せるとする。Pがアクセス許可されるとは、e１からeｎまで全てのノードがアクセス許可と意味する。それを満たすには、下の二つの条件を満たさなければならない。
【００８５】
（１）  e１からeｎまでに、-Rと定義されるノードはない。（２）e１からeｎまで全てのノードは+rと定義されている、または、制御効果が定義されていないノードには+Rと定義される祖先が存在する。
【００８６】
条件（１）を満たすには、e１からeｎまでの数字表現に0は存在しなければ十分である。また、条件（２）を満たすには、正規表現で表すと(2)+  または  (2)*3(1|2|3)*  となる。さらに、文字列を用いた場合は、(c)+  または  *d(b|c|d)*。数字で例をあげると、Pは/a/b/c/d/eのとき、条件２を満たすためのアクセス効果値は22222または23111、23211、23221、23222、23311、23321、23322、23331、23332、23333、31111、32111・・・・となる（残りの３から始まる値を省略）。したがって、アクセス効果値の最小値は22222であることが分かる。つまり、‘e１からeｎまで全てのノードは+rと定義されている’から生成されるアクセス効果値はアクセス許可値である。
【００８７】
一例として、P=/e１/e２/…/eｉ/…/eｎのアクセス許可値minEffectの生成アルゴリズムは以下のようになる。表８が数字を用いた場合であり、表９が文字列を用いた場合の生成アルゴリズムである。
【表８】
2006155104.tif 000014
【表９】
2006155104.tif 000015
【００８８】
［アクセス判定について］
アクセス判定部１７は、入力されたアクセス許可値minEffectアクセス効果値Effectを用いて制御結果を判定する。具体的には、以下の表１０のようになる。
【表１０】
2006155104.tif 000016
【００８９】
数字によりアクセス判定を行う場合には、比較は数の大小を比較する。文字列を用いた場合、文字列の定義順序になる。定義順序とは、辞書式比較（a->b->c->d）というアルファベット順であってもよいし、文字列の優先順位を、アルファベット順以外の順番に最初に定義（aはcより優先する等）し、その定義した順番で、文字列の優先順位としてよい。
【００９０】
図５では具体的な医療カルテのXML文書の一部を示している。このXML文書には、患者情報（氏名、性別、住所、職業、医療保険会社など)と診療履歴（日付、症状、診断、医者情報、治療法など）が含まれている。看護婦に関してアクセス制御ポリシーの定義は以下のようになると仮定する。
【数５】
2006155104.tif 000017
【００９１】
これらのアクセス制御ポリシーは、看護婦（nurse）のnameとtherapyとそれらの子孫を、読むことが可能であると定義している。また、submitted要素の有無で、患者の診断履歴が存在するか否かを知ることができるが、具体的な内容は読むことができないと定義している。
【００９２】
例えば、看護婦（nurse）が/patients/patient/name/firstnameにアクセスしたとき、ポリシ−検索部１３の出力は適用される制御パスと制御効果のペア集合であり、具体的には、以下となる。
【数６】
2006155104.tif 000018
【００９３】
/patients/patient/nameは/patients//nameを満たすため、ポリシー（４）から/patients/patient/nameの制御パスを得られた。
【００９４】
［数字による判定］アクセス許可値計算部１４で、アクセス許可値minEffectを計算する。アルゴリズムによって、minEffect=2222となる。また、アクセス効果値計算部１５で、アクセス効果値を計算する。まず、配列effect[4]を作り、初期状態は{1,1,1,1}にし、制御パスと制御効果のペア集合を順番に処理する。(/patients,+r)から、effect[0]=2となる。(/patients/patient,+r)から、effect[1]=2となる。また、(/patients/patient/name,+R)から、effect[2]=3となる。したがって、/patients/patient/name/firstnameのアクセス効果値（Effect）は2231となる。結局、Effect>minEffect（アクセス許可値）になるため、/patients/patient/name/firstnameへのアクセスは許可される。
【００９５】
また、看護婦(nurse)が/patients/patient/submitted/doctor/name/firstnameにアクセスした場合には、ポリシー検索部１３の出力は以下となる。
【数７】
2006155104.tif 000019
【００９６】
/patients/patient/submitted/doctor/nameは、/patients//nameを満たすため、ポリシー（４）から/patients/patient/submitted/doctor/nameの制御パスを得る。
【００９７】
アクセス許可値計算部１４で、アクセス許可値minEffectを計算する。アルゴリズムによって、minEffect=222222。また、アクセス評価値計算部１４で、アクセス効果値Effectを計算する。まず、配列effect[6]を作り、初期状態は{1,1,1,1,1,1}である。制御パスと制御効果のペア集合を順番に処理する。（/patients,+r）から、effect[0]=2となる。（/patients/patient,+r)から、effect[1]=2となる。また、（/patients/patient/submitted,+r)から、effect[2]=2となる。（/patients/patient/submitted/doctor/name,+R)から、effect[4]=3となる。したがって、/patients/patient/submitted/doctor/name/firstnameのアクセス効果値はEffect=222131となる。
【００９８】
結局、アクセス許可値と、アクセス効果値を比較すると、Effect<minEffectになるため、/patients/patient/submitted/doctor/name/firstnameへのアクセスは拒否される。Effectの値から分かるように、/patients/patient/submitted/doctorへのアクセス許可がないため、全ての祖先への制御許可の依存性は満たされずに、minEffectより小さいEffectを導き、/patients/patient/submitted/doctor/name/firstnameへのアクセスは拒否される。
【００９９】
次に、ノードに述語式を用いて制限を加え、データの値に基づいたアクセス制御を行う場合でも、本発明で提示した方法が対応できる。図５に示したXML文書の一部に対し、更に患者に対しアクセス制御ポリシーを定義する。
【数８】
2006155104.tif 000020
【０１００】
$uidはシステム関数で、患者（patient）それぞれが持つユニークの識別IDとする。患者識別IDが１００（$uid=100）であるユーザが、図５のXML文書の/patients/patient/therapy/amountにアクセスするとき、ポリシー（２）と（３）に含まれるpatientに関した述語式@id=$uidが満たれることとなる。そのため、制御パスと制御効果のペア集合に3つのアイテムが含まれる。具体的には、以下となる。
【数９】
2006155104.tif 000021
【０１０１】
アクセス許可値計算部１４で、アクセス許可値minEffectを計算する。アルゴリズムによって、minEffect=2222が計算される。また、アクセス効果値計算部１５で、アクセス効果値を計算する。まず、配列effect[4]を作り、初期状態は{1,1,1,1}にし、制御パスと制御効果のペア集合を順番に処理する。（/patients,+r）から、effect[0]=2となる。（/patients/patient,+r)から、effect[1]=2となる。また、（/patients/patient/therapy,+R）から、effect[2]=3となる。したがって、/patients/patient/therapy/amountのアクセス効果値はEffect=2231となる。よって、その患者は/patients/patient/therapy/amountへのアクセスは許可される。
【０１０２】
また、uidが101となる患者が同じXML文書の/patients/patient/therapy/amountに対し、アクセスした場合、述語式@id=$uidが満たされないため、制御パスと制御効果のペア集合は（/patients,+r）のみとなる。よって、アクセス評価値Effectは2111となり、minEffectより小さいため、アクセスは拒否されることになる。
【０１０３】
［文字列による判定］看護婦ユーザに関してアクセス制御ポリシーの定義は以下と仮定する。
【数１０】
2006155104.tif 000022
【０１０４】
これらのアクセス制御ポリシーは、看護婦（nurese）のnameとtherapyとそれらの子孫を読めると定義している。また、submitted要素の有無で、患者の診断履歴が存在するか否かを知ることができるが、具体的な内容は読めないと定義している。
【０１０５】
看護婦ユーザが/patients/patient/name/firstnameにアクセスしたとき、ポリシー検索部１３の出力は適用される制御パスと制御効果のペア集合であり、具体的には、以下となる。
【数１１】
2006155104.tif 000023
【０１０６】
/patients/patient/nameは/patients//nameを満たすため、ポリシー（４）から/patients/patient/nameの制御パスを得られた。
【０１０７】
アクセス許可値計算部１４で、アクセス許可値minEffectを計算する。アルゴリズムによって、minEffect=“cccc”。また、アクセス効果値計算部１５で、アクセス効果値Effectを計算する。まず、配列effect[4]を作り、初期状態は{‘b’,‘b’,‘b’,‘b’}にし、制御パスと制御効果のペア集合を順番に処理する。（/patients,+r）から、effect[0]=‘c’となる。（/patients/patient,+r）から、effect[1]=‘c’となる。また、（/patients/patient/name,+R）から、effect[2]=‘d’となる。したがって、/patients/patient/name/firstnameのアクセス効果値は、“ccdb”となる。結局、“ccdb”>“cccc”でアクセス効果値Effect>アクセス許可値minEffectになるため、/patients/patient/name/firstnameへのアクセスは許可される。
【０１０８】
また、看護婦（nurse）が/patients/patient/submitted/doctor/name/firstnameにアクセスしたとき、ポリシー検索部１３の出力は以下となる。
【数１２】
2006155104.tif 000024
【０１０９】
/patients/patient/submitted/doctor/nameは、/patients//nameを満たすため、ポリシー（４）から/patients/patient/submitted/doctor/nameの制御パスを得る。
【０１１０】
アクセス効果値計算部１５で、アクセス許可値minEffectを計算する。アルゴリズムによって、minEffect=“cccccc”。また、アクセス効果値計算部１５で、アクセス効果値Effectを計算する。まず、配列effect[6]を作り、初期状態は{‘b’,‘b’,‘b’,‘b’,‘b’,‘b’}である。制御パスと制御効果のペア集合を順番に処理する。（/patients,+r）から、effect[0]=‘c’となる。（/patients/patient,+r）から、effect[1]=‘c’となる。また、（/patients/patient/submitted,+r）から、effect[2]=‘c’となる。（/patients/patient/submitted/doctor/name,+R）から、effect[4]=‘d’となる。したがって、/patients/patient/submitted/doctor/name/firstnameのアクセス効果値はEffect=“cccbdb”となる。
【０１１１】
結局、“cccbdb”<“cccccc”でアクセス効果値Effect  <  アクセス許可値minEffectになるため、/patients/patient/submitted/doctor/name/firstnameへのアクセスは拒否される。Effectの値から分かるように、/patients/patient/submitted/doctorへのアクセス許可がないため、全ての祖先への制御許可の依存性は満たされずに、minEffectより小さいEffectを導き、/patients/patient/submitted/doctor/name/firstnameへのアクセスは拒否される。
【０１１２】
このような実施形態を実現するアクセス制御判定方法を、コンピュータやサーバにて実行するためのプログラムにより実現することができる。このプログラムのための記憶媒体としては、ＤＶＤやＭＯ、ＰＤ等の光学記憶媒体、テープ媒体、半導体メモリ等が挙げられる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けられたハードディスク又はＲＡＭ等の記憶装置を記憶媒体として使用し、ネットワークを介してプログラムを提供してもよい。
【０１１３】
以上、本発明の実施形態を説明したが、具体例を例示したに過ぎず、特に本発明を限定しない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載された効果に限定されない。
【産業上の利用可能性】
【０１１４】
本発明は、データ量が多いデータソースに対して多くのユーザがアクセスするデータベース・マネージメント・システムに対して適用可能であるのみならず、データ量が多い複数のデータソースが物理的に異なるサーバ等に記憶され、これらのデータソースに対して多くのユーザがアクセスするデータベース・マネージメント・システムに対しても適用可能である。
【図面の簡単な説明】
【０１１５】
【図１】本発明のアクセス制御判定システムのハードウェア構成を示す図である。
【図２】ユーザ端末のハードウェア構成を示す図である。
【図３】アクセス制御判定装置のハードウェア構成を示す図である。
【図４】アクセス制御判定装置が実行する動作を示すフローチャート図である。
【図５】本発明に用いられるデータソースの一例である。
【図６】ポリシーが複数ある場合に、アクセス制御判定を行う従来のアルゴリズムを示す図である。
【符号の説明】
【０１１６】
１    アクセス制御判定システム
１０  アクセス制御判定装置
１２  アクセス受付部
１３  ポリシー検索部
１４  アクセス許可値計算部
１５  アクセス効果値計算部
１６  ポリシー記憶部
１７  アクセス判定部
２０  ユーザ端末
３０  通信回線ネットワーク
３１  データソース記憶手段
５００  アクセス判定機構
【図１】
2006155104.tif 000025
【図２】
2006155104.tif 000026
【図３】
2006155104.tif 000027
【図４】
2006155104.tif 000028
【図５】
2006155104.tif 000029
【図６】
2006155104.tif 000030