(57)【要約】【課題】  多数の複雑な条件を含むポリシーを設定しても、ポリシーを構成するデータベースのデータ量を極力少なくするデータ構造を備えたアクセス制御装置を提供する。【解決手段】  本発明のアクセス制御装置は、データソースの部分へのアクセスを制御するポリシーの入力を受けて、これらのポリシーを記憶し、記憶したポリシーから、木構造データを生成し、この木構造データを合成し、記憶し、アクセスの可否の判定を行う場合には、この記憶した木構造データから、アクセスの可否を判定する。【選択図】        図１
2006012033.tif 000002
【特許請求の範囲】
【請求項１】
データソースへのアクセスを制御するアクセス制御装置であって、
前記データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを記憶するポリシー記憶手段と、
前記複数のポリシーから、複数の木構造データを生成するアクセス決定木生成手段と、
前記複数の木構造データを合成するアクセス決定木合成手段と、
この合成した木構造データを記憶するアクセス決定木記憶手段と、
前記データソースの部分へのアクセスがあったことに応答して、前記合成した木構造データから、前記部分へのアクセスの可否を判定するアクセス判定手段とを含む、アクセス制御装置。
【請求項２】
請求項１記載のアクセス制御装置において、
前記アクセス決定木合成手段が、前記複数の木構造データの共通部分を抽出し、この抽出した共通部分を木構造の上位ノードに配置することによって、前記複数の木構造データを合成することを特徴とするアクセス制御装置。
【請求項３】
請求項２記載のアクセス制御装置において、
前記アクセス決定木合成手段が、前記複数の木構造データの共通部分が最大となるように合成することを特徴とするアクセス制御装置。
【請求項４】
請求項１記載のアクセス制御装置において、
前記アクセスの可否の判定があった後に、この判定の整合性を検証する整合性検証手段を含むことを特徴とするアクセス制御装置。
【請求項５】
請求項１記載のアクセス制御装置において、
前記アクセス判定手段は、前記データソースの部分へのアクセスがあったことに応答して、前記データソースからデータ値を読み出し、このデータ値を用いて、前記合成した木構造データから、アクセスの可否を判定することを特徴とするアクセス制御装置。
【請求項６】
請求項１記載のアクセス制御装置において、
前記データソースの部分が、パス式言語のパス式により指定されることを特徴とするアクセス制御装置。
【請求項７】
請求項６記載のアクセス制御装置において、
前記アクセス決定木生成手段は、前記データソースの部分へのアクセスを行うユーザの属性と、前記パス式とにより木構造データを生成することを特徴とするアクセス制御装置。
【請求項８】
請求項６記載のアクセス制御装置において、
前記パス式言語が、Xpathであることを特徴とするアクセス制御装置。
【請求項９】
データソースへのアクセスを制御するアクセス制御方法であって、
前記データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを、アクセス制御装置が記憶するステップと、
前記複数のポリシーから、アクセス制御装置が複数の木構造データを生成するステップと、
前記複数の木構造データを、アクセス制御装置が合成するステップと、
この合成した木構造データを、アクセス制御装置が記憶するステップと、
前記データソースの部分へのアクセスがあったことに応答して、前記合成した木構造データから、アクセス制御装置が前記部分へのアクセスの可否を判定するステップとを含む、アクセス制御方法。
【請求項１０】
請求項９記載のアクセス制御方法において、
前記合成するステップでは、前記アクセス制御装置が、前記複数の木構造データの共通部分を抽出し、この抽出した共通部分を木構造の上位ノードに配置することによって、前記複数の木構造データを合成することを特徴とするアクセス制御方法。
【請求項１１】
請求項１０記載のアクセス制御方法において、
前記合成するステップでは、前記アクセス制御装置が、前記複数の木構造データの共通部分が最大となるように合成することを特徴とするアクセス制御方法。
【請求項１２】
請求項９記載のアクセス制御方法において、
前記アクセス制御装置が、前記アクセスの可否の判定があった後に、この判定の整合性を検証するステップを含むことを特徴とするアクセス制御方法。
【請求項１３】
請求項９記載のアクセス制御方法において、
前記木構造データを生成するステップでは、前記データソースの部分へのアクセスを行うユーザの属性と、前記データソースの部分を指定するパス式とにより、前記アクセス制御装置が木構造データを生成することを特徴とするアクセス制御方法。
【請求項１４】
請求項９から１３のいずれかに記載のアクセス制御方法を実行するプログラムを記録したコンピュータ読取可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、木構造データによるアクセス制御手段に関する。さらに詳しくは、ユーザがデータベース・サーバに記憶されたデータへアクセスする際の制御を行う手段およびその方法に関する。
【背景技術】
【０００２】
従来より、処理を行うデータを取得するために、このデータが記憶されたデータベース・サーバへアクセスすることが行われている。この際、ユーザはクライアントとなるコンピュータ端末を使用し、ＬＡＮ（Local  Area  Network）やインターネットを経由して、データベース・サーバへアクセスし、データを取得する。ここで記憶されるデータは、例えばＸＭＬ（eXtensible  Markup  Language）やＨＴＭＬ（Hyper  Text  Markup  Language）によって記述される。特に、ＸＭＬにて記述された文書は、ＸＭＬ文書と呼ばれる。ＸＭＬ文書は、その文書に対して情報を提供する者の意図に従った構造化を行うことができる構造化文書として知られている。このようなＸＭＬ文書は、遺伝子のゲノム情報のような大規模なデータベースから、医療カルテのような小規模なデータベースまで幅広く使用されている。
【０００３】
ここで、データベースの管理者は、このＸＭＬ文書に対して、あるユーザがデータベースにアクセスした場合に、このアクセスをユーザによっては拒否する設定を行う場合がある。例えば、病院の医療カルテのデータベース管理者は、患者が自らの医療カルテのデータにアクセスできないように規制する必要がある。
【０００４】
具体的には、例えば、ポリシーと呼ばれる規則を用いて、アクセス制御を行う方法が知られている。例えば、ユーザの名前や役職、部署等に基づいて決定される。
【０００５】
そして、このポリシーを用いて、Windows（登録商標）ファイルシステムが採用しているように、ファイルやフォルダごとにアクセス制御を行う。これにより、許可がないユーザやユーザのグループが、該当ファイルやフォルダにアクセスするのを防止できる。
【０００６】
しかしながら、あるユーザに対して、そのファイル内の一部の部分にのみアクセスを許可し、残る部分についてはアクセスを拒否するという制御が要請される場合がある。
【０００７】
例えば、医療カルテが一つのＸＭＬ文書ファイルとして作成され、データベースに記憶されている場合を想定する。このとき、医師はカルテの情報の全てにアクセスできるが、インターン生は患者の診断情報にしかアクセスできないことが好ましい。しかし、上述のアクセス制御の方法では、ファイル単位にしかポリシーを設定できないため、そのＸＭＬ文書の一部分のみについてアクセスを制御することはできない。
【０００８】
このような問題を解決する方法として、ＸＭＬ文書の内部構造単位でアクセスを可能にする制御装置が知られている（特許文献１）。特許文献1には、ＸＭＬ文書内にポリシーを組み込むことで、文書の内部構造単位でアクセス制御装置が示されている。特許文献１のＸＭＬ文書は、データベースのデータそのものであるレコードと、そのレコード各々に対して設定されるポリシーとを含んでいる。ユーザがＸＭＬ文書の一部分へアクセスした場合に、アクセス制御装置は、組み込まれたポリシーを読み込んでアクセスを制御する。
【０００９】
しかしながら、このアクセス制御装置は、データベースのレコードが多い場合には適当ではない。なぜなら、データベースのレコードが増えると、このレコードのアクセスを規制するポリシーも増え、ＸＭＬ文書が巨大化するからである。
【００１０】
例えば、遺伝子のゲノム情報ではＸＭＬ文書のレコードのデータ量は、１ギガバイト以上のサイズになる場合がある。そのうえ、このＸＭＬ文書に対して、企業や学術団体等の多数のユーザがアクセスする。そのため、アクセスする多数のユーザの各々に対して、ポリシーの設定を行う必要があり、ポリシーのデータ量は、膨大なデータ量になる。したがって、レコードのデータ量、ポリシーのデータ量ともに膨大になり、ＸＭＬ文書のファイルは巨大化する。
【００１１】
そこで、ポリシーをＸＭＬ文書から分離し、データベース化する方法が知られている（非特許文献１）。非特許文献１には、ポリシーをテーブル型データベースで構成する方法が開示されている。テーブル型データベースとは、ＸＭＬ文書の特定の部分を指定するパス式と、このパス式に対応する条件とから構成される。条件とは、パス式で指定される部分へのユーザのアクセスの可否を判断するための条件である。ユーザがアクセスすると、アクセス制御装置が、このアクセス要求に対するパス式を算出する。そして、アクセス制御装置は、このパス式に対応した条件を、テーブルから読み出し、ユーザがこの読み出した条件に適合すれば、そのパス式で指定されたＸＭＬ文書の部分にアクセスを許可する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、ポリシーが多数の複雑な条件で構成される場合がある。この複雑な条件とは、具体的には、ＡＮＤ条件あるいはＯＲ条件の組み合わせにより構成される条件に加えて、以下に述べる、データベースから読み出したデータ値を用いて判断する条件である。
【００１３】
データ値を用いて判断する条件を含むポリシーは、例えば、医療カルテに活用される。すなわち、例えば、患者の病気の「悪性度」が４０％以上であれば、この患者本人のアクセスを拒否するというポリシーを、アクセス制御装置に設定すると、患者本人が医療カルテのデータにアクセスした場合には、アクセス制御装置は、その患者本人の「悪性度」を確認するために、患者の「悪性度」データが記録されたデータ値を検索し、このデータ値を読み出す。この読み出されたデータ値を用いて、悪性度が４０％以上か、それ以下であるかを判断し、４０％以上であれば、アクセスを拒否し、４０％以上であれば、アクセスを許可する。
【００１４】
以上のテーブル型データベースでは、テーブル全体を、アクセス制御装置のメモリ等の記憶装置に記憶する必要がある。しかしながら、テーブル型データベースは、以上のデータ値を用いる条件を含むポリシーに対して、多数のデータ値をデータ値のソースファイルから読み込むため、テーブルのデータ量が増加する。
【００１５】
このように、テーブル型データベースでは、データ値を用いる条件を含むポリシーを、データベースに設定する場合に、ハードウェア資源の有効利用が困難であった。そのため、このような多数の複雑な条件を含むポリシーを設定しても、ポリシーを構成するデータベースのデータ量を極力少なくするデータ構造が望まれていた。
【特許文献１】特開２００１−２７３２８５号公報
【非特許文献１】戚乃箴，工藤道治、「XMLデータベースのためのパステーブルを用いたアクセス制御モデル」、コンピュータセキュリティ研究会、情報処理学会、２００３年１１月１４日
【課題を解決するための手段】
【００１６】
データソースへのアクセスを制御するアクセス制御装置であって、前記データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを記憶するポリシー記憶手段と、前記複数のポリシーから、複数の木構造データを生成するアクセス決定木生成手段と、前記複数の木構造データを合成するアクセス決定木合成手段と、この合成した木構造データを記憶するアクセス決定木記憶手段と、前記データソースの部分へのアクセスがあった場合には、前記合成した木構造データから、前記部分へのアクセスの可否を判定するアクセス判定手段とを含む、アクセス制御装置。
【００１７】
この発明によれば、アクセス制御装置は、データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを記憶し、記憶されたこれらのポリシーから複数の木構造データを生成する。そして、アクセス制御装置は、この生成した複数の木構造データを合成し、データソースの部分へのアクセスがあった場合には、前記合成した木構造データから、前記部分へのアクセスの可否を判定する。
【００１８】
ここで、木構造データとは、複数の条件から構成されるポリシーに対して、条件に対応するノードと、このノードを関連づけるリンクとで構成される。具体的には、アクセス決定木生成手段は、入力された全てのポリシーに対して、各ポリシーで共通した条件を抽出して、この共通する条件を上位ノードとし、共通しない条件を下位ノードとし、共通する上位ノードを合成する。これにより、上位ノードで表現される条件を共通として、下位ノードで表現される条件のみが異なる木構造データとなる。複数のポリシーの共通の条件を上位ノードに配置することにより、ポリシーのデータベースのデータ量を減少させ、ハードウェア資源を有効に活用することができる。
【発明の効果】
【００１９】
本発明の木構造データとは、複数の条件から構成されるポリシーに対して、条件に対応するノードと、このノードを関連づけるリンクとで構成される。具体的には、アクセス決定木生成手段は、入力された全てのポリシーに対して、各ポリシーで共通した条件を抽出して、この共通する条件を上位ノードとし、共通しない条件を下位ノードとし、共通する上位ノードを合成する。これにより、上位ノードで表現される条件を共通として、下位ノードで表現される条件のみが異なる木構造データとなる。複数のポリシーの共通の条件を上位ノードに配置することにより、ポリシーのデータベースのデータ量を減少させ、ハードウェア資源を有効に活用することができる。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
【００２１】
図１に示すように、アクセス制御システム１は、複数のユーザ端末２０と、これらのユーザ端末２０と通信回線ネットワーク３０を介して接続されるアクセス制御装置１０と、同様に、通信回線ネットワーク３０を介してアクセス制御装置１０と接続されるデータソース・サーバ３２と、アクセス制御装置１０に直接に接続されるデータソース記憶手段３１とを備えている。
【００２２】
ユーザ端末２０は、図２に示すように、ＣＲＴディスプレイや液晶ディスプレイ等の表示手段２１と、キーボードやテンキー、マウス等の入力手段２２と、ハードディスク、メモリ等の記憶手段２３と、ＣＰＵ等の制御手段２４と、通信回線ネットワーク３０に接続されるネットワーク・カード等の通信手段２５とを備えている。ユーザ端末２０は、ユーザが、通信回線ネットワーク３０を介して、データソースとなるデータへのアクセスを行うクライアント機能を備える。ユーザ端末２０は、ユーザがデータソースの部分へのアクセスを行う場合に、このデータソースの部分への読み出し、書き込み、更新等のアクションを行うためのアクセス要求を送信する。ここで、ユーザ端末２０は、コンピュータ端末であってもよいし、携帯情報端末であってもよい。
【００２３】
通信回線ネットワーク３０は、アクセス制御装置１０とユーザ端末２０とを接続するネットワークである。通信回線ネットワーク３０は、ＬＡＮ（Local  Area  Network）であってもよいし、インターネットであってもよい。
【００２４】
データソース・サーバ３２は、アクセス制御される対象となるＸＭＬ文書等のデータソースが記憶されているデータベース・サーバ、及びコンピュータである。また、データソース・サーバ３２は、通信回線ネットワーク３０を介して、アクセス制御装置１０に接続されているが、アクセス制御装置１０に直接的に接続されていてもよい。データソースはファイルとして記憶されたＸＭＬ文書等であってよく、データソースの部分とは、ＸＭＬ文書等のデータソースの一部の領域のことである。例えば、ＸＭＬ文書内のタグで囲まれた領域である。
【００２５】
データソース記憶手段３１は、ＸＭＬ文書等のデータソースが記憶されている装置である。例えば、データソース記憶手段３１は、ハードディスクのような記憶手段であってもよい。また、データソース記憶手段３１は、図１に示すように、アクセス制御装置１０の外部に設置されていてもよいし、アクセス制御装置１０の内部に設置されていてもよい。
【００２６】
アクセス制御装置１０は、図３に示すように、通信手段１１と、ポリシー記憶手段１６と、アクセス決定木生成手段１２と、アクセス決定木合成手段１４と、アクセス決定木記憶手段１７と、アクセス判定手段１３と、整合性検証手段１５とを備えている。
【００２７】
通信手段１１は、通信ネットワーク３０に接続され、ユーザ端末２０やデータソース・サーバ３２と通信を行う。
【００２８】
ポリシー記憶手段１６は、ユーザ端末２０から通信回線ネットワーク３０を介して入力されたポリシーを記憶する記憶装置である。
【００２９】
アクセス決定木生成手段１２は、この記憶されたポリシーを用いて木構造データを生成する。木構造データの生成は、ポリシーの条件をノードとし、このノードに対応する値をリンクとして生成する。値とは、例えば、ユーザの属性（ユーザ名やグループ名、アクセスを行う部分のパス値）や、データソースから読み出す値（以下「データ値」）を用いる。
【００３０】
アクセス決定木生成手段１２は、一つのポリシーから複数の条件と値とを分離し、分離した各々の条件と値とから、複数のノードとリンクとを生成し、ノード間をリンクにより結合する。さらに、アクセス決定木生成手段１２は、次のポリシーに対して同様に木構造データを生成する。このとき、アクセス決定木生成手段１２は、先に生成した木構造とは独立して木構造データを生成してもよいが、図１２にて後述するように、先に生成した木構造データの上位ノードを使用して、そのノードから新たにリンクを形成することで木構造データを生成してもよい。
【００３１】
アクセス決定木生成手段１２は、第１のアクセス決定木と第２のアクセス決定木とを生成する。第１のアクセス決定木とは、データソースから値を読み出すことで、アクセスの可否の判定が行われる条件（以下「データ値を用いる条件」）を含まない条件からなる木構造データである。例えば、第１のアクセス決定木は、データ値を用いる条件を一切含まないポリシーで生成される。また、データ値を用いる条件を含むポリシーであっても、第１のアクセス決定木は、このポリシーのうち、データ値を用いる条件以外の条件から生成される。第２のアクセス決定木とは、データ値を読み出すことで、データ値を用いる条件のみからなる木構造データである。第２のアクセス決定木は、後述する述語式の条件から生成されてもよい。
【００３２】
アクセス決定木合成手段１４は、この生成された複数の木構造データのうち、ノードとリンクとが共通である部分を合成する。
【００３３】
アクセス決定木記憶手段１７は、この合成した木構造データを記憶する。
【００３４】
アクセス判定手段１３は、ユーザ端末２０からのアクセス要求を受信した場合には、この記憶された木構造データから、要求されたデータソースの部分へのアクセスの可否の判定を行う。このアクセスの可否の判定とは、アクセス要求に対して、アクセスを行うユーザが、このアクセス要求のアクションを実行してもよいかを判断することである。
【００３５】
アクセス判定手段１３は、判定の際に、データソースの部分を制御する条件が、当該データソース又は他のデータソースからデータ値を読み出す必要がある条件であるかを判断する。すなわち、アクセス判定手段１３は、データ値を読み出す必要がある条件で制御された、データソースの部分へのアクセス（以下「データ値を用いる条件で制御された部分へのアクセス」）であるか、そうでないアクセスであるかを、ユーザのアクセス要求から判断する。データ値を用いる条件で制御された部分へのアクセスである場合には、アクセス判定手段１３は、データ値を読み出し、この読み出したデータ値からアクセスの可否を判定する。
【００３６】
アクセス制御装置１０の各手段が実行する具体的な動作を、図４のフローチャートを用いて説明する。
【００３７】
管理者はアクセス判定の基準となるポリシーを入力する（ステップＳ０１）。管理者による入力は、ユーザ端末２０から行われる。ポリシーは、アクセス制御装置１０が表示手段と入力手段とを備えている場合には、アクセス制御装置１０から入力手段を介して入力される。入力されたポリシーは、ポリシー記憶手段１６に記憶される。
【００３８】
次に、アクセス決定木生成手段１２が、第１のアクセス決定木を生成する（ステップＳ０２）。この第１のアクセス決定木が、アクセス決定木記憶手段１７に記憶される。入力された残りのポリシーに対しても同様に、アクセス決定木生成手段１２が、第１のアクセス決定木を生成する。このようにして、生成された複数の第１のアクセス決定木を、アクセス決定木合成手段１４が合成する（ステップＳ０３）。
【００３９】
次に、アクセス判定手段１３は、ユーザ端末２０から、データソース記憶手段３１またはデータソース・サーバ３２に記憶されたデータソースへのアクセス要求を待つ（ステップＳ０４）。アクセス要求を受信した場合には、第１のアクセス決定木から、アクセス判定手段１３が、アクセス判定を実行する（ステップＳ０５）。
【００４０】
そして、このアクセス判定の実行中に、このアクセス要求がデータ値を用いる条件で制御される部分へのアクセスであるかを、アクセス判定手段１３が判断する（ステップＳ０６）。
【００４１】
データ値を用いる条件で制御される部分へのアクセスではない場合には、アクセス判定手段１３は、アクセス判定が終了であるかの判断を行う（ステップＳ１５）。アクセス判定手段１３は、アクセス判定が終了ではないと判断した場合には、さらに第１のアクセス決定木からアクセスの可否の判定を行う（ステップＳ０５）。アクセス判定手段１３が、アクセス判定が終了であると判断した場合には、整合性検証手段１５が、決定したアクセスの整合性を検証する（ステップＳ１２）。
【００４２】
ユーザからのアクセスが、データ値を用いる条件で制御される部分へのアクセスである場合には、アクセス決定木生成手段１２は、第２のアクセス決定木を生成する（ステップＳ０７）。第２のアクセス決定木は、データ値を用いる条件から生成される木構造データである。第２のアクセス決定木は、アクセス決定木記憶手段１７に記憶される。
【００４３】
第２のアクセス決定木に対して、アクセスを判定するには、判定の指標となるデータ値を読み出す必要がある。アクセス判定手段１３が、データソースから、このデータ値を読み出す（ステップＳ０８）。アクセス判定手段１３は、この読み出したデータ値を用いて、第２のアクセス決定木から判定を実行する（ステップＳ０９）。アクセス判定手段１３は、アクセス判定が終了であるかの判断を行う（ステップＳ１０）。アクセス判定が終了でなければ、アクセス判定手段１３は、さらにアクセス判定を行う（ステップＳ０５へ戻る）。
【００４４】
アクセス判定が終了であれば、アクセス判定手段１３が、決定したアクセスの整合性を検証する（ステップＳ１２）。そして、アクセス判定手段１３が、検証した判定結果を出力する（ステップＳ１３）。この結果を用いて、ユーザ端末２０が、データソース記憶手段３１又は、データソース・サーバ３２に記憶されたデータソースのある部分へのアクセスを実行する。
【００４５】
具体的なポリシーを入力した場合に、アクセス制御装置１０が、各手段によって、どのように判定を行うかについて説明する。以下のポリシーを入力し、アクセス制御装置１０が、アクセス判定を行う場合について説明する。
【００４６】
「Aliceは、人事情報を閲覧できるが、秘密情報は閲覧できない。Bobは、人事情報も秘密情報も閲覧できない」というポリシーが入力されたとする。このポリシーを単純化するため、以下の表１に示されたパス式言語により記述されたアクセス制御ポリシーを使用する。表1のパス式言語の一部は、XPath（XML  Path  Language）を用いることができる。
【００４７】
【表１】
2006012033.tif 000003
【００４８】
パス式言語の説明をする。Subject-Typeは、Subjectが、どのような種類であるかを定める。例えば、Subject-TypeをUserIDとして、Subjectをユーザ名とすることが可能である。その他に、Subject-TypeをGroupとし、Subjectをグループ名とすることも可能である。また、Objectは、アクセス制御を行う対象である。実際にユーザがアクセスを行うデータソースの位置もしくは部分を示す。Objectで指定されるパス式の各要素を、パス値とする。Access-modeは、SubjectとObjectとの条件を満たした場合の、判定の内容である。判定の内容とは、例えば、アクセス許可、拒否、という内容であってもよいし、読み出すためのアクセス可能、又は拒否という内容でもよい。本実施例では、ユーザが閲覧する際の判定について説明するが、ユーザが書き込むためのアクセスの可否の判定や、更新するためのアクセスの可否の判定、削除するためのアクセスの可否の判定についても同様に適用される。
【００４９】
Access-modeの、＋Rとは、Objectで指定する部分以下の階層のノード全てを閲覧可能であることを示す。これに対して、＋ｒは、その階層のノードのみ閲覧可能であることを示す。Access-modeにて+Rを採用した場合には、上位ノードが全ての下位ノードのAccess-modeを決定することができる。
【００５０】
さらに、Access-modeは、必ずしも判定の結論でなくてもよい。例えば、データソースからのデータ値を用いてアクセスの可否を判断する条件の場合には、Access-modeは、データ値が満たすべき条件式であってもよい。このような条件式を述語式とする。述語式については図８を用いて後述する。
【００５１】
アクセス制御ポリシーは、１または複数のルールにより構成される。例えば、１のルールは、以下のように表される。
【００５２】
【数１】
2006012033.tif 000004
【００５３】
上述のAliceとBobのポリシーは、アクセス制御ポリシーを使用すると以下の(式２)のように記述される。ここで、人事情報はＸＭＬ文書内のパス/site/peopleに示されるところに位置し、秘密情報は、同様に/site/secretで示されるところに位置するとする。（式２）では、３つのルールをアクセス制御ポリシーで記述している。
【００５４】
【数２】
2006012033.tif 000005
【００５５】
図５のアクセス決定木１００は、このアクセス制御ポリシーを用いて生成された。図に示すように、アクセス決定木１００は、ノードとその下に一つ以上のリンクから構成される。リンクとは、各ノードを接続した経路である。リンクは１つのノードから、３つ以上あってもよい。各ノードには、アクセスの可否の判定を行うための属性が設定される。
【００５６】
属性とは、あるノードから次のノードへ移る場合の判断指標である。属性は、例えば、Subject-Typeとpathである。すなわち、アクセス決定木１００では、Subject-Typeが、UserIDであるため、UserIDが属性となる。次のノードでは、Objectの各pathが属性となる。
【００５７】
各属性に対するパス式の要素からリンクを作成する。そのリンク先にまた新たなノードを作成し、属性を割当てる。
【００５８】
ユーザからアクセスがあったときには、このアクセス要求から算出されたパス式の各要素と、各属性とを比較して判定を行う。例えば、Aliceが“/site/people/”にアクセスするために、アクセス判定手段１３が、アクセス決定木１００を使用して判定を行う場合を説明する。まず、アクセス判定手段１３は、アクセス要求を受信し、このアクセス要求のパス式の要素を分離する。図５の場合、属性はUserIDとpath1とpath2であるため、これに対応するパス式の要素は“Alice”、“site“、“people”であることを、アクセス判定手段１３が判断する。これらを比較してアクセス判定手段１３が、判定を行い、アクセス決定木１００のリンクを辿る。末端のノードはAccess-modeが“許可”で設定されているため、このアクセスは許可される。
【００５９】
また、Aliceが、“/site/people/emailaddress”に対するアクセスを要求した場合を想定する。“/site/people/emailaddress”は、“/site/people/”の階層構造の下位ノードである。Aliceは“/site/people/”に対して、人事情報の全ての情報を閲覧可能（＋R）であるために、下位ノードである“/site/people/emailaddress”に対しても、閲覧が許可される。このように、木構造データの末端ノードのAccess-modeにて、下位のノードのアクセス判定を、上位ノードが決定することができる。
【００６０】
次に、アクセス制御ポリシーから、アクセス決定木を生成する方法について、詳細に述べる。ここでは一例として、アクセス決定木生成手段１２が、Subjectに対するアクセス決定木を生成した後に、Objectに対するアクセス決定木を生成する場合について説明する。しかし、SubjectとObjectとのアクセス決定木を生成する順番は任意であってよい。
【００６１】
図６にて、Subject-TypeとSubjectに対するアクセス決定木を示した。ここでは、アクセス決定木生成手段１２が、（式３）に表されるルールのアクセス決定木を生成した。Subject-Typeとして選択されたUserIDは、あるノードから次のノードへリンクする際に、どちらのノードを選択するか判断するための属性である。この属性に対して、木構造の分岐を行う要素として「Alice」や「Bob」によりリンク先が生成される。
【００６２】
【数３】
2006012033.tif 000006
【００６３】
図７にて、Subjectに対するアクセス決定木の生成方法が、フローチャートとして示されている。アクセス決定木生成手段１２は、木構造の元となるルートノードを生成する（ステップＳ２０）。このルートノードに対して、アクセス決定木生成手段１２が、Subject-Typeを割当て、（式３）のようなアクセス制御ポリシーから、Subject-Typeを選択し、ルートノードの属性とする（ステップＳ２１）。さらに、アクセス決定木生成手段１２が、アクセス制御ポリシーから、一つのSubject（例えばAlice）を選択し、これをリンクのための値とし、そのリンク先に新しいノードを作成する（ステップＳ２２）。（式３）のように、アクセス制御ポリシーが複数のルールで構成され、Subject-Typeが同じである場合には（ステップＳ２３）、次のSubject（（式３）ではBob）を選択し、アクセス決定木生成手段１２が、リンクの生成と新しいノードの生成を行う。ここで、Bobのリンクは、AliceのルールにてルートノードとしたUserIDのノードから接続するように作成される。さらに、アクセス決定木生成手段１２は、作成した各ノードに、Objectのアクセス決定木へのリンクの生成を行う（ステップＳ２４）。
【００６４】
このような接続によりBobのリンクを作成することなく、例えば、Bobのルールのために、UserIDのルートノードと、Bobのリンクと、このリンク先のノードとを新たに作成した後に、Aliceのルールから作成したアクセス決定木と、アクセス決定木合成手段１４が合成してもよい。
【００６５】
次に、アクセス制御ポリシーからObjectに対するアクセス決定木を生成する。図８は、Objectに対するアクセス決定木２１０を示した。図８では、（式４）、（式５）に表されるルールの、Object部分のみを示した。Object部分は、（式４）では、「/a/b」であり、（式５）では、「/a/c[＠x>100]」である。特に、（式５）のObject部分の[＠x>100]は、述語式とする。
【００６６】
【数４】
2006012033.tif 000007
【００６７】
述語式は、データ値をデータソースから読み出して、そのデータ値からアクセス制御を行う場合の判断式である。この述語式の条件を満たす場合には、このノードに設定されたAccess-modeの判定内容が採用される。つまり、（式５）の述語式では、アクセス判定手段１３が、条件変数Xに対応するデータ値を、データソースから読み出し、このデータ値が１００より大きい場合は、アクセスを許可するということを意味する。述語式の＠マークは、述語式とObjectの要素との境界を示す印であり、他のマークを使用してもよい。
【００６８】
さらに、述語式は、ＸＭＬ文書から読み出したデータ値を、述語式内の変数と比較する算術式である。一つの述語式で、ＡＮＤやＯＲにより２つ以上の条件を重ねてもよい。例えば、（a/b/[@x>100] AND /a/b/[@c=“abc”]）のように、Xとcとの条件値を、データ値と比較して、アクセスの可否を判定する判断式とすることができる。
【００６９】
図９にて、Objectに対するアクセス決定木の生成方法をフローチャートとして示した。アクセス決定木生成手段１２は、Objectのルートノードを生成し（ステップＳ３１）、Objectに“//”が含まれているかを判断する（ステップＳ３２)。Objectに“//”が含まれている場合には、“//”処理を行う（ステップＳ３３）。“//”処理については、図１１を用いて後述する。
【００７０】
Objectに“//”が含まれていない場合には、アクセス決定木生成手段１２は、Objectを“/”で分離したObjectの各要素をパス値とし、パス値の階層を維持して記憶する（ステップＳ３４）。例えば、/a/b/dというObjectは、a、b、dというパス値に分離され、Objectの最初がaであり、aの次にbその次にdという階層を維持して記憶される。
【００７１】
ノードの属性となるpathを区別するために整数iを用いる。アクセス決定木生成手段１２は、i＝１（ステップＳ３５）とした後に、パス値をノードからリンクさせ新しいノードを作成し(ステップＳ３６)、この新しいノードのパス値をpathiの値とする（ステップＳ３７）。
【００７２】
さらに、アクセス決定木生成手段１２は、次のパス値がNULL（次の要素がない）であるかを判断し（ステップＳ３８）、NULLでなければ、さらに下位の階層のノードを生成するため、iに１を加えて（ステップＳ３９）、ステップＳ３６に戻る。アクセス決定木生成手段１２が、次のObjectがNULLであると判断した場合は、ノードの末端となる末端ノードに対して、Access-modeを設定する（ステップＳ４０）。Access-modeは、通常は、アクセス決定木生成手段１２により、アクセスの許可、拒否が設定される。しかし、（式５）の場合には、Access-modeは、アクセスの許可、拒否が設定されることに加えて、このアクセスの許可、拒否のための条件となる述語式も設定される。
【００７３】
【数５】
2006012033.tif 000008
【００７４】
（式６）で示したように、Objectに“//”を含む場合がある。この場合には、例えばAliceは、/a/c/の下にどんな階層があっても、その下の階層である/dにアクセスできる。すなわち、“//”は、３番目の階層がどんなパス値であっても、その下の/dに対してアクセス可能ということを意味する。
【００７５】
図１０にて、（式６）をアクセス決定木２５０として示した。path2=“ｃ”までは、上述のObject要素の分解によりノードが作成される。“//”に達した際に、新たなアクセス決定木を生成する。この新たなアクセス決定木は、３つのノードから構成され、値が“ｄ”であるときにリンクするノードと、値が“NULL”であるときにリンクするノードと、値が“その他全て”であるときにリンクするノードとからなる。値が“その他全て”であるときにリンクするノードは、“その他全て”以外の値のどの値にも適合しない場合に選択される。値が“その他全て”の場合は、iの値に１を加えて、新しく生成されたアクセス決定木のルートノードに戻る。
【００７６】
“//”処理のフローチャートが、図１１に示されている。アクセス決定木生成手段１２は、Objectを“//”と“//”とで分離し、分離した各パス値の階層を維持して記憶し、“//”の前と後の階層を“/”と区別するためにマークする（ステップＳ５１）。アクセス決定木生成手段１２は、このマーキングから、“//”の前の階層のパス値であるかを判断する（ステップＳ５３)。“//”の前の階層のパス値でなければ、上述した“/”のアクセス決定木の生成処理が行われる（ステップS５７からステップＳ６１まで）。“//”の前の階層のパス値であれば、新たなアクセス決定木の生成を行う（ステップＳ５４）。アクセス決定木生成手段１２は、新たなアクセス決定木と、もとのアクセス決定木とのリンクを生成し（ステップＳ５５）、Access-modeを設定する（ステップＳ５６）。
【００７７】
新たなアクセス決定木の生成では、図１０に示すように“//”の後ろのパス値から生成されるノード（図１０ではパス値“d”）と、パス値がNULLのノードと、パス値が“その他全て”のノードとを生成する。そして、アクセス決定木生成手段１２は、“//”の後ろのパス値から生成されるノードには、そのルールが指定する判定の内容を設定し、NULLのノードには、適用不可を設定する。さらに、アクセス決定木生成手段１２は、“その他全て”のノードには、iの値を１加える処理を行う設定と、この新たなアクセス決定木のルートノードへリンクを設定する。
【００７８】
アクセス決定木を生成する方法としては、Subjectに対する決定木と、Objectに対する決定木とを別々に作り、合成する方法であってもよいし、図１２にて示すように、アクセス制御ポリシーを構成するルールを一つ一つ読み込み、すでに記憶されている他のアクセス決定木のノードとリンクとを使用してアクセス決定木を生成する方法であってもよい。後者の場合の方法の例として、（式７）から（式１０）のルールからアクセス決定木を生成する場合を考える。
【００７９】
【数６】
2006012033.tif 000009
【００８０】
アクセス決定木生成手段１２は、（式７）から、Step１のアクセス決定木３５１を生成し、（式８）のルールを、Step１のアクセス決定木３５１のノードに接続し、Step2のアクセス決定木３５２を生成する。これより、２つのルール（（式７）と（式８））が、path2までの判断条件を、共有することができる。この共有部分が多い場合には、複雑なObject指定（パス式）に対して、効率的なデータ構造を作成することが可能である。引き続いて、（式９）からStep3のアクセス決定木３５３が生成され、（式１０）からStep4のアクセス決定木３５４が生成される。
【００８１】
複数のアクセス決定木で、このような共有部分が最大となるように、アクセス決定木生成手段１２が、pathの順番を入れ替えてもよい。すなわち、木構造データの共有部分が最も多くなるように、ノードの配置を変えてもよい。複数の木構造データで共有部分が多い場合には、木構造データ全体のデータ量が減少するため、アクセス制御装置１０のハードウェア資源を有効に活用できる。
【００８２】
以上の説明では、アクセス判定が行われる前に、既にアクセス決定木が生成され、記憶されているが、アクセス決定木の生成のタイミングは、アクセス判定の実行中であってもよい。すなわち、ユーザからのアクセス要求があったときに、アクセス決定木を生成し、記憶し、アクセス判定を行ってもよい。
【００８３】
次に、アクセス決定木生成手段１２により生成されたアクセス決定木に対して、ユーザからのアクセス要求があった場合に行うアクセス判定について、さらに詳細に説明する。図１３は、アクセス判定時のフローチャートである。
【００８４】
アクセス判定手段１３は、アクセス要求を受けて、アクセス要求の要素（以下「アクセス要求要素」）を分ける（ステップＳ７１）。つまり、アクセス判定手段１３は、アクセス要求から、そのアクセスの属性をSubject-Type、Subject、各パス値で分離する。この分離されたアクセス要求要素を用いて、アクセス判定を行う。
【００８５】
まず、アクセス判定手段１３は、アクセス決定木記憶手段１７に記憶されたアクセス決定木のうちアクセス決定木を一つ選択する（ステップＳ７２）。次に、アクセス判定手段１３は、この選択されたアクセス決定木のSubject-Typeの値と、アクセス要求要素のSubject-Typeの値とを比較する。両方のSubject-Typeの値が一致した場合には、アクセス判定手段１３は、アクセス決定木のSubjectの値とアクセス要求のSubjectの値に適合するリンクが存在するかを確認する（ステップＳ７３）。
【００８６】
適合するリンクが存在しない場合には、アクセス判定手段１３は、このアクセス決定木ではアクセス判定を行うことが不可能と判断する。この場合、アクセス判定手段１３は、このアクセス決定木以外のアクセス決定木（以下「他のアクセス決定木」）が、アクセス決定木記憶手段１７に記憶されているかを確認する（ステップＳ７７）。他のアクセス決定木が、記憶されている場合には、アクセス判定手段１３は、他のアクセス決定木に対して、ステップＳ７２からの処理を行う。
【００８７】
一方、他のアクセス決定木が、記憶されていない場合には、適用不可となる（ステップＳ７８）。適用不可の場合とは、このSubjectに対するポリシーがそもそも存在しない場合か、あるいは、このポリシーに関する新たなアクセス決定木を生成する必要が生じている場合かのどちらかである。したがって、管理者は、前者の場合には、アクセスを許可するように設定してもよい。後者の場合には、アクセス決定木生成の処理を行ってもよい。
【００８８】
該当するリンクが存在した場合には、アクセス判定手段１３は、アクセス要求要素のObjectのパス値と、アクセス決定木のパス値とを比較して、アクセス決定木のリンクを辿る（ステップＳ７５）。リンクが存在する場合には、アクセス判定手段１３は、iに１を加えて、さらに、深い階層までリンクを辿る（ステップＳ７６）。リンクが存在しない場合には、アクセス判定手段１３は、ステップＳ７９の判断を行う。
【００８９】
次に、アクセス判定手段１３は、比較を行なっているアクセス決定木のノードが、末端ノードであるかを判断する（ステップＳ７９）。末端ノードであれば、アクセス判定手段１３は、ステップＳ８０の判断を行う。末端ノードでない場合には、アクセス判定手段１３は、このアクセス決定木ではアクセス判定を行うことが不可能と判断する。この場合、アクセス判定手段１３は、他のアクセス決定木が、アクセス決定木記憶手段１７に記憶されているかを確認する（ステップＳ７７）。他のアクセス決定木が、記憶されている場合には、アクセス判定手段１３は、他のアクセス決定木に対して、ステップＳ７２からの処理を行う。他のアクセス決定木が、記憶されていない場合には、アクセス判定手段１３は、適用不可と判断する（ステップＳ７８）。
【００９０】
アクセス判定手段１３は、アクセス決定木の末端ノードであると判断した場合には、アクセス判定の条件となる述語式が付随しているかを判断する(ステップＳ８０)。
【００９１】
述語式が付随していない場合には、アクセス判定手段１３は、Access-modeに設定された判定の内容により判定を決定する(ステップＳ８２)。ここで判定の決定は、中間決定であってもよく、整合性検証手段１５が、この決定に対してアクセスの整合性検証を行ってもよい。
【００９２】
述語式が付随している場合には、アクセス判定手段１３は、判定の決定と共に、述語式を確認し、データ値を用いる条件のアクセス判定を行う（ステップＳ８１）。
【００９３】
ここで、末端ノードまでリンクを辿れるアクセス決定木が、複数存在することがある。すなわち、アクセス決定木の各ノードにおける属性が同一であるが、異なるアクセス決定木としてアクセス決定木記憶手段１７に記憶されている場合である。この場合には、判定の決定が複数存在する場合があるが、整合性検証手段１５がこの複数の結果のうち、どの結果が妥当であるかを検証してもよい。
【００９４】
例として、「ユーザ：Aliceが、“/site/people/person/emailaddress”を読みたい」というアクセス要求を行った場合に、アクセス判定手段１３が行う判定について説明する。アクセス判定手段１３は、このアクセス要求を、Subject-Type、Subject、Objectに分解し、アクセス要求要素とする。アクセス要求要素を（式１１）にて示した。
【００９５】
【数７】
2006012033.tif 000010
【００９６】
アクセス判定手段１３は、アクセス決定木記憶手段１７に記憶されたアクセス決定木から、アクセス決定木を選択し、Subject-TypeがUserIDで適合し、SubjectがAliceのリンクが存在するか確認する。すなわち、アクセス決定木として図５のアクセス決定木１００を選んだ場合には、Subject-Typeは、UserIDであって、SubjectがAliceなので、アクセス判定手段１３は、アクセス決定木の左のリンクをたどる。次に、Objectの第一パス“path1”はsiteであり、これもリンクに適合する。第二パス“path2”はpeopleであり、左のリンクに適合する。このノードは、既に末端ノードであるので、末端ノードに設定された、アクセス判定である、“アクセス可”が判定される。もし、Aliceがアクセスするパスが“/site/secret/blacklist”に対してである場合には、“/site/secret”の下のノードはアクセス拒否と設定されているため、アクセス拒否が判定される。
【００９７】
次に、Objectが“//”を含む場合の判定について述べる。この場合であっても、“/”のみでObjectが構成される場合と同様に、アクセス決定木を選択してリンクを辿ることで判定が決定される。
【００９８】
例えば、（式１２）と、（式１３）とで表されるアクセス制御ポリシーを想定する。図１４は、このルールに対して生成されたObjectのアクセス決定木３００、３０１を示す。Aliceが、“/site/people/person/name/”にアクセスする場合を想定する。アクセス要求要素の、Objectの要素は、（式１３）のようにパス値により表される。
【００９９】
【数８】
2006012033.tif 000011
【０１００】
【数９】
2006012033.tif 000012
【０１０１】
アクセス判定手段１３は、Subject：Aliceのノードを経て、path1のノードに到達する。次に、アクセス判定手段１３は、パス値“site”で適合したリンクを辿り、path2から、“その他全て”リンクを辿り、アクセス決定木３０１にリンクする。i=2であるので、アクセス判定手段１３は、path2を検証し、アクセス決定木３０１の“その他全て”リンクを辿り、iに１が加わった後に、再度、アクセス決定木３０１のルートノードに戻る。このときには、i=3となるので、アクセス判定手段１３は、path3を検証し、“person”に適合するリンクが存在するので、このリンクをたどり”アクセス許可”の判定結果が得られる。
【０１０２】
上述のステップＳ８１のデータ値を用いたアクセス制御について説明する。上述のように述語式がない場合には、アクセス判定手段１３は、述語式に関する処理を行うことなく、アクセス判定を行う。これに対して、述語式がある場合には、アクセス判定手段１３はアクセス決定木生成手段１２に、データ値を用いて条件を判断するアクセス決定木（以下「データ値を用いるアクセス決定木」）を生成するように指示を行い、その生成された「データ値を用いるアクセス決定木」を用いてアクセス判定を行う。既に、データ値を用いるアクセス決定木が生成され、アクセス決定木記憶手段１７に記憶されている場合には、アクセス決定木生成手段１２が、アクセス決定木を生成することなく、アクセス判定手段１３が、この記憶されたアクセス決定木から、アクセス判定を行う。
【０１０３】
述語式を含んだ場合のアクセス決定木の生成について述べる。（式１５）から（式２０）までは、各ルールの中から、述語式のみを示した式である。これらの式は、式の右側の述語式の条件を満たす場合に、式の左に記載した+R（許可）又は-R（拒否）を行うことを意味している。（式１７）のように、“[”が２重になって述語式を構成する場合がある。（式１７）の場合は、条件がＯＲにより並列しているため、（式１５）と（式１８）とに分離することができる。（式１７）のように明らかにＯＲで分離できるような述語式でなくても、例えば、加法標準型(disjunctive  normal  form)を使用することで、分離することもできる。
【０１０４】
【数１０】
2006012033.tif 000013
【０１０５】
述語式の特定の部分の名称を以下に定義する。まず、条件式とは、述語式のＡＮＤで分離した各々の式である。例えば、（式１５）の条件式とは、“＠salary>10000”の式と“＠band=6”の式の各々の式のことである。特に、[＠salary>10000  and  ＠band=6]のように“[”で囲まれた範囲に、条件式が複数ある場合は、この２つの条件式を“[”で囲まれた複数の条件式とする。また、条件変数とは、＠の次の変数であり、この例では、“salary”と“band”とである。さらに、条件値とは条件変数の条件とデータ値とで構成される。この例では“>10000”と、“＝6”とである。
【０１０６】
データ値を用いるアクセス制御のフローチャートを、図１５に示した。アクセス判定手段１３は、述語式をＯＲで分離し（ステップＳ９１）、述語式の中に“[”が、複数含まれているかを判断する（ステップＳ９２）。“[”が複数含まれている場合とは、例えば（式２０）の場合である。このとき、分離された各々の条件式に対して、アクセス決定木生成手段１２は、アクセス決定木を生成する（ステップＳ９８）。
【０１０７】
条件式が“[”内に一つであれば、その条件式に対してのみ、ステップＳ９５からステップＳ９７までが行われる。これに対して、“[”で囲まれた範囲に条件式が複数ある場合には、アクセス決定木生成手段１２は、一の条件式を選択し、その条件式に対してアクセス決定木を生成する。この生成の後に、アクセス決定木生成手段１２は、次の条件式を選択し、アクセス決定木を生成するというように、複数の条件式の各々に対して、アクセス決定木の生成を行う（ステップＳ９７）。
【０１０８】
さらに具体的に、一の“[”，“]”で囲まれるアクセス決定木の生成について説明する。アクセス決定木生成手段１２が、ルートノードを生成する（ステップＳ９４）。次に、アクセス決定木生成手段１２は、条件変数をルートノードの条件判断とし（ステップＳ９５）、条件変数の条件をノードからリンクさせ、新しいノードを作成する（ステップＳ９６）。さらに、ＡＮＤやＯＲで条件式が続く場合には、アクセス決定木生成手段１２は、次の条件式のアクセス決定木生成を行う（ステップＳ９７）。条件式が終了する場合には、アクセス決定木生成手段１２は、末端のノードにアクセスの許可、拒否を設定する。
【０１０９】
アクセス決定木生成手段１２は、“[”にて、一の“[”が終了した場合には、次の“[”に対してアクセス決定木を生成する。このための判断をステップＳ９８にて行う。全ての条件式に対して、アクセス決定木の生成が終了したときには、この生成したデータ値を用いるアクセス決定木のルートノードと、データ値を用いないアクセス決定木の述語式を含む末端ノードとをリンク付ける（ステップＳ９９）。
【０１１０】
アクセス制御ポリシーとして、「（式１５）かつ（式１９）」のように、２つのルールを設定する場合がある。この場合には、各々のルールに対して、各々のアクセス決定木を生成するため、ステップＳ９０からステップＳ９９までを繰り返す。
【０１１１】
図１６は、(式１５)の前半の条件式（＠salary  >  10000）から生成したアクセス決定木３６０と、(式１５)の後半の条件式（＠band=6）から生成したアクセス決定木３６１を示す。この２つのアクセス決定木から、矢印の下のアクセス決定木３６２が合成により生成する。これは、前半の条件式（＠salary  >  10000）を示すノードとリンクとを、両方のアクセス決定木が含むために、アクセス決定木合成手段１４が、上位ノードを合成した。このような合成を行うことで、アクセス決定木の上位ノードのデータ量が減少し、アクセス制御ポリシーのデータ量を減少することができる。
【０１１２】
述語式がある場合のアクセス決定木では、アクセス判定手段１３が、述語式のためのデータ値をデータソースから読み出す。このデータ値を読み出す処理が、図１７のフローチャートにより図示されている。まず、アクセス判定手段１３は、データ値をデータソースから読み出す（ステップＳ１０５）。
【０１１３】
この読み出したデータ値と条件変数とを用いて、アクセス判定手段１３は、このデータ値が適合するリンクが存在するかを判断する(ステップＳ１０６)。存在すると判断すれば、さらに下位のノードに進み（ステップＳ１０７）、さらにリンクが存在するか判断する。リンクが存在しないならば、アクセス判定手段１３は、アクセス決定木の末端のノードに到達しているかを判断する（ステップＳ１０８）。末端ノードでなければ、条件式に対応するノードは存在しないため、アクセス判定手段１３は、このアクセス決定木では、適用不可となる（ステップＳ１１０）。末端ノードであれば、末端ノードに設定されたAccess-modeから、アクセス判定手段１３は、アクセスの許可、拒否の判定を行う（ステップＳ１０９）。
【０１１４】
述語式がある場合の好適な実施例として、アクセス判定手段１３が、図１８のＸＭＬ文書４００からデータ値を読み出す場合を想定する。述語式が条件変数として@incomeと@ageとを含むため、アクセス判定手段１３が、@incomeと@ageとのデータ値を、データソースから読み出す。アクセス制御ポリシーは、（式２１）と（式２２）とからなるポリシーとする。このポリシーでは、Subject-TypeがGroupである場合について考える。ここで、AliceとBobとは、WorkerというGroupに属しているため、アクセス決定木４０１が、Subject-TypeとSubjectに対するアクセス決定木として生成される。また、（式２１）と（式２２）とのObject部分からアクセス決定木４０１が、生成される。
【０１１５】
【数１１】
2006012033.tif 000014
【０１１６】
このようなアクセス決定木４０１、４０２は、データ値を読み出す必要がないアクセス決定木であり、通常はこのアクセス決定木を用いてアクセスの可否の判定が行われる。しかし、以下のように、データ値を用いる条件で制御されたデータソースの部分へのアクセス要求があった場合には、以下のようにデータ値を読み出してアクセスの可否の判定を行う。
【０１１７】
「Workerに属する者が、/site/people/person/nameにアクセスできるか？」という判定を、アクセス制御装置１０が要求されたと想定する。アクセス判定手段１３は、アクセス決定木４０１、４０２を辿り、Objectのアクセス決定木４０３を辿る。
【０１１８】
リンクを辿ることで、述語式が設定されたノードに、判定の実行が達した場合には、アクセス決定木生成手段１２は、データ値を用いるアクセス決定木４０２を生成する。アクセス決定木生成手段１２は、ルートノードを作成し、このルートノードの属性を、“[”の最初の条件変数であるprofileとする。条件変数profileの値は、どんな値でも構わないため、profileのノードに対しては、“その他全て”を属性の値とする。次に、“age>13”と“income<10000”との条件式に対して、アクセス決定木生成手段１２は、ノードとリンクを作成する。これら条件式はＡＮＤにより、並列した条件になっているため、ノードの順番は、“age>13”のノードの後に“income<10000”のノードがあってもよいし、その逆でもよい。いずれにおいても、末端のノードには、アクセスの可否の判定として、アクセス決定木生成手段１２がAccess-modeを設定する。
【０１１９】
アクセス判定手段１３は、データソースとなるＸＭＬ文書４００から、データ値を読み出す。このとき、ＸＭＬ文書４００には、Workerに属するAliceとBobとのそれぞれにincomeとageとのデータ値が記述されている。従って、アクセス判定手段１３が、AliceとBobとの両方のデータ値を読み出す。
【０１２０】
読み出されたデータ値は、（式２３）、（式２４）のように表される。これより、ageが１３より大きいという条件は、AliceもBobも満たす。しかし、incomeの条件式から、Aliceはincomeが１５０００であるために、アクセスが拒否され、Bobはincomeが５０００であるため、アクセスが許可される。
【０１２１】
【数１２】
2006012033.tif 000015
【０１２２】
以上のように、（式２２）で指定される部分への、データソースへのアクセス（Aliceによる/site/secretへのアクセス）であれば、アクセス決定木４０１、４０２を用いることで、アクセス判定手段１３は、アクセスの可否の判定を行う。しかし、（式１７）のように、述語式で指定される部分へのアクセス（Aliceによる/site/people/person）である場合には、アクセスの可否の判定のためにデータ値を読み出す必要が生じる。このときには、アクセス決定木４０３を生成して、その述語式で指定される部分へのアクセスの可否の判定を行う。
【０１２３】
これにより、データ値を用いる条件をノードとする木構造データを常にアクセス判定のためのデータとしてメモリ等の記憶装置に記憶しておく必要がない。
【０１２４】
なお、Objectのアクセス決定木４０２、４０３は、SubjectがAlice、Bob、Workerのいずれかであっても、兼用して使用することができる。すなわち、Subjectのアクセス決定木に依存しないで、Objectのアクセス決定木４０２、４０３を使用することができる。例えば、Subjectに対するアクセス決定木４０１のみならず、図６のSubjectに対するアクセス決定木２００に、アクセス決定木４０２、４０３をリンクさせることも可能である。この場合には、アクセス決定木２００とアクセス決定木４０１とが、アクセス決定木４０２、４０３を、共有することが可能である。
【０１２５】
さらに、データ値を用いるアクセス決定木と、データ値を用いないアクセス決定木とを生成した後に、同一のノードとリンクを備える複数のアクセス決定木を、アクセス決定木生成手段１２が、合成してもよい。アクセス決定木の合成のフローチャートを図１９に示した。アクセス決定木生成手段１２は、複数のアクセス決定木のうち、あるノードとリンクとが、他のアクセス決定木のノードとリンクと同一であるかを判断し（ステップS１２１）、各々が同一である場合には、アクセス決定木の合成を行なう（ステップＳ１２２）。アクセス決定木の生成と合成が終了後に、アクセス整合性検証手段１５が、アクセスの整合性の検証を行なってもよい（ステップＳ１２３）。
【０１２６】
加えて、データ値を用いるアクセス決定木が生成された後に、上位ノードとなるデータ値を用いないアクセス決定木と結合してもよい。
【０１２７】
このような実施形態を実現するアクセス制御方法を、コンピュータやサーバにて実行するためのプログラムにより実現することができる。このプログラムのための記憶媒体としては、ＤＶＤやＭＯ、ＰＤ等の光学記憶媒体、テープ媒体、半導体メモリ等が挙げられる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けられたハードディスク又はＲＡＭ等の記憶装置を記憶媒体として使用し、ネットワークを介してプログラムを提供してもよい。
【０１２８】
以上、本発明の実施形態を説明したが、具体例を例示したに過ぎず、特に本発明を限定しない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載された効果に限定されない。
【０１２９】
以上の実施形態によると、以下の各項目に示すアクセス制御装置、アクセス制御方法、およびそれを記録したコンピュータ読取可能記憶媒体が実現される。
【０１３０】
（１）  データソースへのアクセスを制御するアクセス制御装置であって、前記データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを記憶するポリシー記憶手段と、前記複数のポリシーから、複数の木構造データを生成するアクセス決定木生成手段と、前記複数の木構造データを合成するアクセス決定木合成手段と、この合成した木構造データを記憶するアクセス決定木記憶手段と、前記データソースの部分へのアクセスがあったことに応答して、前記合成した木構造データから、前記部分へのアクセスの可否を判定するアクセス判定手段とを含む、アクセス制御装置。
【０１３１】
（２）  （１）記載のアクセス制御装置において、前記アクセス決定木合成手段が、前記複数の木構造データの共通部分を抽出し、この抽出した共通部分を木構造の上位ノードに配置することによって、前記複数の木構造データを合成することを特徴とするアクセス制御装置。
【０１３２】
（３）  （２）記載のアクセス制御装置において、前記アクセス決定木合成手段が、前記複数の木構造データの共通部分が最大となるように合成することを特徴とするアクセス制御装置。
【０１３３】
（４）  （１）記載のアクセス制御装置において、前記アクセスの可否の判定があった後に、この判定の整合性を検証する整合性検証手段を含むことを特徴とするアクセス制御装置。
【０１３４】
（５）  （１）記載のアクセス制御装置において、前記アクセス判定手段は、前記データソースの部分へのアクセスがあったことに応答して、前記データソースからデータ値を読み出し、このデータ値を用いて、前記合成した木構造データから、アクセスの可否を判定することを特徴とするアクセス制御装置。
【０１３５】
（６）  （１）記載のアクセス制御装置において、前記データソースの部分が、パス式言語のパス式により指定されることを特徴とするアクセス制御装置。
【０１３６】
（７）  （６）記載のアクセス制御装置において、前記アクセス決定木生成手段は、前記データソースの部分へのアクセスを行うユーザの属性と、前記パス式とにより木構造データを生成することを特徴とするアクセス制御装置。
【０１３７】
（８）  （６）記載のアクセス制御装置において、前記パス式言語が、Xpathであることを特徴とするアクセス制御装置。
【０１３８】
（９）  データソースへのアクセスを制御するアクセス制御方法であって、前記データソースの部分へのアクセスを制御する複数のポリシーが入力されると、これらのポリシーを、アクセス制御装置が記憶するステップと、前記複数のポリシーから、アクセス制御装置が複数の木構造データを生成するステップと、前記複数の木構造データを、アクセス制御装置が合成するステップと、この合成した木構造データを、アクセス制御装置が記憶するステップと、前記データソースの部分へのアクセスがあったことに応答して、前記合成した木構造データから、アクセス制御装置が前記部分へのアクセスの可否を判定するステップとを含む、アクセス制御方法。
【０１３９】
（１０）  （９）記載のアクセス制御方法において、前記合成するステップでは、前記アクセス制御装置が、前記複数の木構造データの共通部分を抽出し、この抽出した共通部分を木構造の上位ノードに配置することによって、前記複数の木構造データを合成することを特徴とするアクセス制御方法。
【０１４０】
（１１）  （１０）記載のアクセス制御方法において、前記合成するステップでは、前記アクセス制御装置が、前記複数の木構造データの共通部分が最大となるように合成することを特徴とするアクセス制御方法。
【０１４１】
（１２）  （９）記載のアクセス制御方法において、前記アクセス制御装置が、前記アクセスの可否の判定があった後に、この判定の整合性を検証するステップを含むことを特徴とするアクセス制御方法。
【０１４２】
（１３）  （９）記載のアクセス制御方法において、前記木構造データを生成するステップでは、前記データソースの部分へのアクセスを行うユーザの属性と、前記データソースの部分を指定するパス式とにより、前記アクセス制御装置が木構造データを生成することを特徴とするアクセス制御方法。
【０１４３】
（１４）  （９）から（１３）のいずれかに記載のアクセス制御方法を実行するプログラムを記録したコンピュータ読取可能記録媒体。
【産業上の利用可能性】
【０１４４】
本発明は、データ量が多いデータソースに対して多くのユーザがアクセスするデータベース・マネージメント・システムに対して適用可能であるのみならず、データ量が多い複数のデータソースが物理的に異なるサーバ等に記憶され、これらのデータソースに対して多くのユーザがアクセスするデータベース・マネージメント・システムに対しても適用可能である。
【図面の簡単な説明】
【０１４５】
【図１】本発明のアクセス制御システムのハードウェア構成を示す図である。
【図２】ユーザ端末のハードウェア構成を示す図である。
【図３】アクセス制御装置のハードウェア構成を示す図である。
【図４】アクセス制御装置の各手段が実行する動作を示すフローチャート図である。
【図５】アクセス決定木を用いてアクセス判定を行う実施例を示す図である。
【図６】Subjectに対するアクセス決定木を生成した実施例を示す図である。
【図７】Subjectに対するアクセス決定木を生成するためのフローチャート図である。
【図８】Objectに対するアクセス決定木を生成した実施例を示す図である。
【図９】Objectに対するアクセス決定木を生成するためのフローチャート図である。
【図１０】Objectに“//”を含んだ場合のアクセス決定木の実施例を示す図である。
【図１１】Objectに“//”を含んだ場合に、アクセス決定木を生成するためのフローチャート図である。
【図１２】アクセス決定木を合成する順番を示す図である。
【図１３】アクセス判定の処理の順番を示すフローチャート図である。
【図１４】Objectに“//”を含んだ場合のアクセス判定を示す図である。
【図１５】データ値を用いて制御される部分へのアクセスがあった場合の処理を示すフローチャート図である。
【図１６】条件式からアクセス決定木を生成し、合成することを示す図である。
【図１７】データ値を読み出す場合に、アクセス判定手段の処理を示したフローチャート図である。
【図１８】データ値を用いない条件と、データ値を用いる条件とから生成したアクセス決定木と、使用されるＸＭＬ文書を示した図である。
【図１９】アクセス決定木の合成の処理の手順を示したフローチャート図である。
【符号の説明】
【０１４６】
１    アクセス制御システム
１２  アクセス決定木生成手段
１３  アクセス判定手段
１４  アクセス決定木合成手段
１５  整合性検証手段
１６  ポリシー記憶手段
１７  アクセス決定木記憶手段
【図１】
2006012033.tif 000016
【図２】
2006012033.tif 000017
【図３】
2006012033.tif 000018
【図４】
2006012033.tif 000019
【図５】
2006012033.tif 000020
【図６】
2006012033.tif 000021
【図７】
2006012033.tif 000022
【図８】
2006012033.tif 000023
【図９】
2006012033.tif 000024
【図１０】
2006012033.tif 000025
【図１１】
2006012033.tif 000026
【図１２】
2006012033.tif 000027
【図１３】
2006012033.tif 000028
【図１４】
2006012033.tif 000029
【図１５】
2006012033.tif 000030
【図１６】
2006012033.tif 000031
【図１７】
2006012033.tif 000032
【図１８】
2006012033.tif 000033
【図１９】
2006012033.tif 000034