JP4135950B2 - アクセス管理装置、アクセス管理方法、およびプログラム - Google Patents

アクセス管理装置、アクセス管理方法、およびプログラム Download PDF

Info

Publication number
JP4135950B2
JP4135950B2 JP2005169965A JP2005169965A JP4135950B2 JP 4135950 B2 JP4135950 B2 JP 4135950B2 JP 2005169965 A JP2005169965 A JP 2005169965A JP 2005169965 A JP2005169965 A JP 2005169965A JP 4135950 B2 JP4135950 B2 JP 4135950B2
Authority
JP
Japan
Prior art keywords
access
node
function
rule
rule function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005169965A
Other languages
English (en)
Other versions
JP2006344057A (ja
Inventor
乃箴 戚
道治 工藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005169965A priority Critical patent/JP4135950B2/ja
Priority to US11/450,727 priority patent/US7650604B2/en
Publication of JP2006344057A publication Critical patent/JP2006344057A/ja
Application granted granted Critical
Publication of JP4135950B2 publication Critical patent/JP4135950B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、アクセス管理装置、アクセス管理方法、およびプログラムに関する。特に本発明は、多数のルールを含むポリシーに基づいてアクセス許否を判断するアクセス管理装置、アクセス管理方法、およびプログラムに関する。
近年、情報を階層構造に構造化して記述するXML等の言語が注目されている。XMLは、様々な分野において広く用いられており、例えば、医療カルテ又は契約書等が代表的である。このような文書においては、文書全体にアクセスの許可又は禁止を設定するのみならず、1つの文書に含まれる複数の情報の各々に、アクセスの許可又は禁止を設定できるのが望ましい。例えば、医療カルテにおいて、診療日時の情報へのアクセスを多くの者に許可しても問題がないが、病名の情報へのアクセスを多くの者に許可するのは好ましくない。
そこで、階層化された複数のノードを含む構造化文書に対し、ノード単位でアクセス許否を指定するポリシー(アクセス制御ポリシー)が作成される。このポリシーは、それぞれが各ノードのアクセス許否を記述した多数のルール(アクセス制御ルール)の集合により定義される。ここで、各ノードは階層化されていることから、階層構造の上下関係にあるノード間におけるアクセス許否の制御効果(アクセス制御効果)には依存関係が生じる。
すなわち、あるノードへのアクセスが許可される場合、当該ノードより上位階層に位置するノード(祖先ノード)のアクセスも許可される。また、あるノードへのアクセスが拒否される場合、当該ノードより下位階層に位置するノード(子孫ノード)のアクセスも拒否される。一例として、「カルテ」を示すノードの下位に「病名」を示すノードが存在する場合、「患者による病名のアクセスを許可する」には「患者によるカルテのアクセスを許可する」こととなる。
このような依存関係が存在するので、あるノードのアクセス許否を判定するためには、より上位階層のノードに対しアクセス拒否が指定されているかどうか、または、より上位階層のノードに対し下位階層のすべてのノードへのアクセス許可が指定されているかどうか等をも判定しなければならない。したがって、あるノードのアクセス制御効果を判定するために、ポリシー中の多数のルールをチェックしなければならない。
このようなアクセス制御を効率よく行うことを目的として、階層構造におけるノードの位置と当該ノードのアクセス許否との対応をテーブルに格納しておき、アクセス要求を受けた場合にテーブル参照によりアクセス制御効果を得る技術が開示されている(特許文献1、非特許文献1参照。)。
米国特許出願公開第2005/0076030号明細書 T. Yu, D. Srivastava, L. V. S. Lakshmanan, and H. V. Jagadish, "Compressed Accessibility Map: Efficient Access Control for XML", In Proceedings of the International Conference on Very Large Databases. p.478-489, 2002.
アクセス制御効果は、アクセス要求の主体(サブジェクト)すなわちアクセスの要求元、および、アクセス対象のノードにより異なる。しかし、従来技術において、全てのアクセス要求元およびアクセス対象ノードの階層構造における位置(パス)毎にテーブルエントリを用意すると、テーブルサイズが大きくなってしまう。そこで、上記の従来技術においては、共通する部分をできるだけ共有する仕組みが採られている。
しかしながら、共通化できない部分が多い場合にはテーブルサイズが大きくなり、メモリ消費量が多くなる可能性がある。また、ポリシーの変更に伴って、共通部分のどの範囲を更新すればよいかを切り分けるのが困難な場合がある。このような場合には、ポリシーの変更時に、テーブル中の広い範囲を更新する必要が生じる。
そこで本発明は、上記の課題を解決することのできるアクセス管理装置、アクセス管理方法、およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
本発明の第1の形態によると、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置であって、前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、ノードをアクセスする複数の互いに異なる要求元のそれぞれに対応付けて、アクセス対象となるノードの階層構造における位置に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、要求元からアクセス要求を受信する受信部と、前記アクセス要求の前記要求元に対応付けられた前記ルール関数を選択する選択部と、前記アクセス要求の対象となるノードの位置を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部とを備えるアクセス管理装置と、当該アクセス管理装置に関するアクセス管理方法およびプログラムとを提供する。
本発明の第2の形態によると、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置であって、前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、複数の互いに異なるノードの位置のそれぞれに対応付けて、アクセス要求の要求元に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、要求元からアクセス要求を受信する受信部と、アクセス対象のノードの位置に対応付けられた前記ルール関数を選択する選択部と、前記アクセス要求の要求元を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部とを備えるアクセス管理装置と、当該アクセス管理装置に関するアクセス管理方法およびプログラムとを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、アクセス制御ルールを分割してルール関数として実現することにより、効率良くアクセス制御を行うことができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る情報システム10の構成を示す。情報システム10は、データを記憶するアクセス管理装置100と、アクセス管理装置100に記憶されたデータをアクセスする1または複数のクライアント装置110とを備え、アクセス管理装置100によりアクセス許否の判定を効率良く行うことを特徴とする。
アクセス管理装置100は、例えば構造化文書等の階層化されたデータ構造を記憶する。このデータ構造は、複数のノードを階層化して接続し、各ノードにデータを対応付けた構成をとる。そして、アクセス管理装置100は、階層化して記憶された複数のノードのそれぞれに対するクライアント装置110からのアクセスを、予め設定されたポリシーに基づいて許可または禁止する。
図2は、本実施形態に係るアクセス管理装置100の構成を示す。アクセス管理装置100は、データ記憶部200と、ポリシー記憶部210と、生成部215と、関数記憶部220と、受信部225と、選択部230と、インスタンス記憶部232と、実行部235と、制御部240と、登録部245と、検索部250と、判定部255とを備える。
データ記憶部200は、階層化されたデータ構造を記憶する。ポリシー記憶部210は、データ記憶部200に記憶されたデータ構造に対するアクセスを許可または禁止するためのポリシーを記憶する。より具体的には、データ記憶部200は、アクセスの要求元、階層構造中におけるアクセス対象のノードの位置(パス)、および当該要求元による当該ノードへのアクセス許否の情報の組を含むルールを複数記憶することにより当該ポリシーを記憶する。本実施形態において、アクセスの要求元は、アクセス要求の主体(サブジェクト)であり、例えば情報システム10の使用者毎(アカウント毎)に割り当てられる。これに代えて、アクセス要求元は、クライアント装置110に対応付けて割り当てられても良い。
生成部215は、ポリシー記憶部210に記憶された複数のルールから1または2以上のルールを選択し、これらのルールに応じたアクセス許否の判定を行うルール関数を生成する。これにより、生成部215は、それぞれが互いに異なる一部のルールに対応するアクセス許否の判定を行うルール関数を複数生成することにより、ポリシー記憶部210に記憶したポリシーをこれらのルール関数の組に変換することができる。
本実施形態に係る生成部215は、一例として、ノードをアクセスする可能性がある複数の互いに異なる要求元のそれぞれに対応して、当該要求元からのアクセス要求に対するアクセス許否を判定するルール関数を生成する。すなわち例えば、生成部215は、要求元毎に異なるルール関数を生成して良い。これに代えて生成部215は、2以上の要求元の組に対して1つのルール関数を生成していくことにより、異なる組に属する複数の要求元のそれぞれに対応して、異なるルール関数を割り当ててよい。このルール関数は、アクセス対象となるノードの階層構造における位置を含むパラメータを入力し、当該位置に応じたアクセス許否を判定する。本実施形態において、生成部215は、当該ルール関数を、Java(登録商標)等のオブジェクト指向言語のクラス内のメソッド関数として生成する。そして生成部215は、当該メソッド関数を含むクラスをコンパイルして、JVM(Java Virtual Machine)のオブジェクトコードに変換する。
関数記憶部220は、生成部215により生成されたルール関数を記憶する。本実施形態に係る関数記憶部220は、複数の互いに異なる要求元のそれぞれに対応付けて、当該要求元からのアクセス要求に対するアクセス許否を判定するルール関数を記憶する。より具体的には、関数記憶部220は、ルール関数を1または複数含むクラスを1または複数まとめてパッケージ224として記憶する。さらに関数記憶部220は、複数の互いに異なる要求元のそれぞれに対応付けて、互いに異なる複数のルール関数のそれぞれを指定するポインタを記憶する。このポインタは、当該ルール関数の名称、すなわち例えばパッケージ名、クラス名、およびメソッド名の組を示す文字列等であっても良い。
受信部225は、クライアント装置110により送信される、要求元からのアクセス要求を受信する。選択部230は、当該アクセス要求に対応するアクセス許否の判定に用いるべきルール関数を関数記憶部220の中から選択する。すなわち、本実施形態においては、選択部230は、アクセス要求の要求元に対応付けられたルール関数を選択する。
インスタンス記憶部232は、各ルール関数を、オブジェクト指向言語のクラスにより実現する場合に用いられ、クラス毎に、当該クラスのインスタンスの識別情報を記憶する。実行部235は、選択部230により選択されたルール関数を実行する。制御部240は、実行部235によりルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、アクセス要求の許可または禁止を制御する。そして、アクセス要求を許可する場合、アクセス対象のノードに対応付けられたデータをデータ記憶部200から読み出し、要求元のクライアント装置110へ送信する。
登録部245は、ルール関数を実行した結果得られた判定結果を、要求元およびアクセス要求の対象となるノードの位置に対応付けて関数記憶部220に登録する。これにより選択部230は、同一の要求元から同一のノードに対するアクセス要求を再び受けると、登録した判定結果を制御部240に与えることができる。この場合、ルール関数を実行部235により再度実行する必要がないので、アクセス処理の効率を高めることができる。
検索部250は、アクセス要求に対応するアクセス許否を判定すべきルール関数が関数記憶部220に記憶されていないことを条件として、当該アクセス要求の判定に用いるべき1または複数のルールをポリシー記憶部210から検索する。判定部255は、検索部250により検索された1または複数のルールに基づいて、アクセス要求に対するアクセス許否を判定し、制御部240に与える。これによりアクセス管理装置100は、必要なルール関数が関数記憶部220に記憶されていない場合においても、ポリシー記憶部210に記憶されたポリシーに基づきアクセス許否を判定することができる。
以上に示したアクセス管理装置100によれば、ポリシー記憶部210内のポリシーを複数のルール関数の組に変換し、アクセス要求に応じたルール関数を実行することによりアクセス許否を判定する。これにより、アクセス要求毎にポリシー内のルールを検索してアクセス許否を判定する場合と比較して高速にアクセス許否を判定することができる。また、アクセス要求のパラメータ、すなわち例えば要求元及び/又はアクセス対象のノードの位置に応じて異なるルール関数を用意するので、ポリシー記憶部210内の一部のルールを変更した場合に変更すべきルール関数を容易に特定することができ、最小限のルール関数を更新することにより新たなポリシーに対応することができる。
なお、以上において、アクセス管理装置100は、複数の情報処理装置により実現されてもよい。一例として、アクセス管理装置100は、ポリシー記憶部210内のポリシーに基づきルール関数を生成するポリシー記憶部210、生成部215、検索部250、および判定部255を実装したルール関数生成用の情報処理装置と、データ記憶部200、関数記憶部220、受信部225、選択部230、インスタンス記憶部232、実行部235、制御部240、および登録部245を実装したアクセス要求処理用の情報処理装置とを備えてもよい。
図3は、本実施形態に係るデータ記憶部200に記憶される構造化文書300の一例を示す。図3(a)は、データ記憶部200に格納されているXML形式等の構造化文書300を示す。階層構造に含まれる各ノードは、一例として、情報の記述開始位置を示す開始タグと、情報の記述終了位置を示す終了タグとを含む要素オブジェクトである。本図において具体的には、最上位階層のノードは、開始タグである<Organization>と、終了タグである</Organization>とを含むOrganizationオブジェクトである。
他の例として、ノードは、これらの開始タグ又は終了タグを含む要素オブジェクトの属性を示す属性オブジェクトであってもよい。本図において、departmentオブジェクトの属性を示すcodeオブジェクトは、属性オブジェクトの一例である。他の観点として、属性オブジェクトを、要素オブジェクトとなるノード内の変数とみなすこともできる。
また、構造化文書300は、Employeeオブジェクトを、管理対象の社員毎に複数有しても良い。
図3(b)は、データ記憶部200に記憶される構造化文書300の階層構造を示す。本図で示すように、階層構造を構成する複数のノードは、例えば木構造を構成する。そして、データ記憶部200は、構造化文書300を記憶することにより、最上位階層のノードをルートノードとする木構造によりこれらの複数のノードを階層化して記憶している。本例においてルートノードは、Organizationであり、最下位階層のリーフノードは、@code、@role等である。
構造化文書300の階層構造において、あるノードを示す開始タグおよび終了タグの間に記述された開始タグおよび終了タグの組は、そのノードの下位階層のノードについての記述となる。例えば、構造化文書300のEmployeeオブジェクトの開始タグおよび終了タグの間に記述されたNameオブジェクトおよびSalaryオブジェクトは、Employeeオブジェクトに対応するノードの下位階層のノードとなる。また、あるノードの属性を示すノードは、そのノードの下位階層のノードとなる。例えば、構造化文書300のEmployeeオブジェクトの属性を示すroleオブジェクトは、Employeeオブジェクトに対応するノードの下位階層のノードとなる。本図においては、属性を示すノードは先頭に@を付して表す。また、本図においては、構造化文書の各ノードに対応して記述されたテキストデータを、テキストデータであることを示すtext()として表す。
それぞれのノードの階層構造における位置は、ルートノードから当該ノードに至る経路上のノードの名前を順に含み、これらのノードの名前が'/'等の区切文字により連結された文字列により表される。一例として、departmentに対応するノードの位置は、/Organization/departmentというパス表現により表記される。
なお、本図の例に代えて、階層構造のデータは、SGML又はHTML等で記述された文書であってもよい。この場合、各ノードは、XMLの場合と同様、開始タグ及び終了タグの組により表されるオブジェクトであってもよいし、属性であってもよい。更に他の例として、階層構造のデータとは、記憶装置のファイルシステムに記録されるデータであってもよい。この場合、各ノードは、ファイル又はフォルダである。そして、あるフォルダに格納されたファイルは、そのフォルダを表すノードの下位階層のノードとなる。
図4は、本実施形態に係るポリシー記憶部210に記憶されるポリシー410の一例を示す。ポリシー記憶部210は、要求元、および階層構造におけるノードの位置に対応付けて、当該要求元による当該ノードへのアクセス許否の情報を示す多数のルール400(400a〜400l)を記憶する。本実施形態に係るルール400は、アクセス許否の情報として、対象ノードに対しアクセス許可を設定する「+r」と、対象ノードおよび当該対象ノードの全ての子孫のノードに対しアクセス許可を設定する「+R」と、対象ノードおよび当該対象ノードの全ての子孫のノードに対しアクセス拒否を設定する「−R」のいずれかを設定することができる。ここで、対象ノードの子孫のノードとは、対象ノードから最下位階層のリーフノードに至るまでの経路上に位置する対象ノード以外のノードを示す。
例えば、ルール400aは、アクセス要求の主体Taroからの位置/aのノードに対するアクセスを許可(+r)することを示す。ルール400bは、アクセス要求の主体Taroからの位置/a/bのノードおよびその子孫のノードに対するアクセスを許可(+R)することを示す。ここで、ポリシー記憶部210は、一例としてテキスト形式によりルール400を記憶して良く、これに代えてテキスト形式のルール400をアクセス管理装置100の内部データ形式に変換して記憶しても良い。
アクセス許否の情報として、対象ノードに加え全ての子孫のノードにアクセス制御効果を伝播させるルール(図中のルール400b、c)を、以下「伝播ルール」と表す。伝播ルールにより、ポリシー410の設定者は、一の対象ノードに対応して、当該対象ノードを最上位とする部分木に含まれる全てのノードに対するアクセスの許可または拒否を、1つのルール400により記述することができる。
本実施形態に係るポリシー410は、以下の2要件を前提とする。
(1)矛盾の解決
ルール400の組み合わせによっては、一つのノードに対し、アクセス許可およびアクセス拒否の両方が設定されうる。例えば図4において、/a/b/c/eに位置するノードは、Taroからのアクセス要求に対し、ルール400bによりアクセス許可が設定され、ルール400cによりアクセス拒否が設定される。本実施形態に係るアクセス管理装置100は、アクセス許可およびアクセス拒否の両方が設定される場合、アクセス拒否を優先することにより矛盾を解決する。したがって、上記の例においてアクセス管理装置100は、Taroから/a/b/c/eに位置するノードへのアクセスを禁止する。これに代えて、ポリシー410は、アクセス許可およびアクセス拒否の両方が設定されるノードへのアクセスを許可するように定められても良い。
(2)デフォルトのアクセス制御効果
いずれのルール400によってもアクセス許否が設定されないノードに対しては、デフォルトのアクセス制御効果が設定される。本実施形態に係るアクセス管理装置100は、アクセス拒否をデフォルトのアクセス制御効果とする。これに代えてアクセス管理装置100は、アクセス許可をデフォルトのアクセス制御効果としても良い。
図5は、本実施形態に係るマッピングテーブル222の一例を示す。マッピングテーブル222は、アクセス要求のパラメータの一例である要求元に対応付けて、ルール関数を指定するパッケージ名、クラス名、およびメソッド名を含むポインタと、登録部245により登録されたアクセス許否のキャッシュとを記憶する。
例えば、本図のマッピングテーブル222は、要求元Hanaに対応付けて、Hanaからのアクセス要求に対するアクセス許否を判定するルール関数を示すパッケージ名pkg1、クラス名Cls1、およびメソッド名method1を記憶する。また、本図のマッピングテーブル222は、要求元Hanaに対応付けて、過去に受けたアクセス要求に応じて登録部245により登録された判定結果として、位置/aのノードに対するアクセス許可(+r)および位置/a/bのノードに対するアクセス許可(+r)をキャッシュする。また、本図のマッピングテーブル222は、要求元Tomに対応するルール関数が未だ生成されていないことから、要求元Tomに対応するルール関数を記憶していない。
図6は、本実施形態に係るインスタンス記憶部232の一例を示す。インスタンス記憶部232は、1または複数のメソッド関数を含むクラス毎に、当該クラスのインスタンスの識別情報を記憶する。この識別情報は、一例として当該クラスのインスタンスに対するポインタであって良い。
例えば、本図のインスタンス記憶部232は、パッケージ名pkg1、クラス名Cls1により指定されるクラスに対し、インスタンスの識別情報Ins1を記憶する。この場合、当該クラスは既にインスタンス化されていることから、実行部235は、当該クラスのメソッド関数として実現されたルール関数を、当該識別情報を用いて呼び出すことができる。また、パッケージ名pkg1、クラス名Cls2により指定されるクラスに対しては、インスタンスの識別情報が記憶されていない。この場合、当該クラスは未だインスタンス化されていないことから、選択部230は、当該クラスのメソッド関数として実現されたルール関数を呼び出す前に、当該クラスをインスタンス化する。
図7は、本実施形態に係るアクセス管理装置100によりルール関数を作成する動作フローを示す。
まず、生成部215は、生成すべきルール関数を特定する(S700)。例えば生成部215は、ポリシー全体が新たにポリシー記憶部210に格納された場合、全ての要求元に対応するルール関数を生成することを決定してよい。また、生成部215は、ポリシー記憶部210内の一部のルールが更新された場合、または一部のルールの追加・削除があった場合、この変更に伴って更新されるべきルール関数を特定してよい。本実施形態においては、要求元に応じて異なるルール関数が用いられるので、生成部215は、変更前のルールに含まれていた要求元および変更後のルールに含まれる要求元に対応するルール関数を、更新されるべきルール関数として特定することができる。
次に、生成部215は、更新されるべきルール関数を用いるアクセス要求の処理をロックする(S710)。本実施形態に係る生成部215は、クラス単位でルール関数を更新するので、更新されるべきルール関数を含むクラス全体をロックする。これを実現するため、生成部215は、更新されるべきルール関数を含むクラスのパッケージ名およびクラス名をマッピングテーブル222から検索し、当該クラスに対応するマッピングテーブル222またはインスタンス記憶部232のエントリをロックしてよい。これにより選択部230は、アクセス要求に対応するマッピングテーブル222またはインスタンス記憶部232のエントリがロックされていることを条件として、当該アクセス要求の処理を遅延させることができる。これに代えて選択部230は、実行部235および制御部240を経由して、当該アクセス要求を一時的に処理できないことをクライアント装置110へ通知してもよい。
次に、生成部215は、更新されるべきルール関数を含むクラスのインスタンスをインスタンス記憶部232から削除することにより、当該インスタンスを解放する(S720)。
次に、生成部215は、更新されるべきルール関数のベースとなる1または複数のルールをポリシー記憶部210から抽出する(S730)。本実施形態に係る生成部215は、更新されるべきルール関数のそれぞれについて、当該ルール関数に対応する要求元についての1または2以上のルールを抽出する。
次に、生成部215は、同一の要求元についての1または2以上のルールに基づいて、当該要求元に対応するルール関数を生成する(S740)。ここで生成部215は、2以上の要求元の組に対し1つのルール関数を対応付ける場合、これらの2以上の要求元についての1または2以上のルールに基づいて、当該2以上の要求元に対応するルール関数を生成してよい。一例として、生成部215は、予め定めた2以上の数の要求元についての2以上のルールに基づいて、当該2以上の数の要求元に対応する共通のルール関数を生成する。
ルール関数の生成において、生成部215は、まず、同一の要求元または2以上の要求元についての2以上のルールに基づいて、当該要求元に対応するルール関数のソースコードを生成する。そして、生成部215は、当該ソースコードをコンパイルすることにより、当該ルール関数のオブジェクトコードを生成する。
次に、生成部215は、生成したルール関数のサイズをチェックする(S750)。ルール関数のサイズが予め定められたサイズを超える場合(S750:NG)、生成部215は、ルールを分割して(S760)、分割したルールの組のそれぞれについてルール関数を生成する(S740)。例えば生成部215は、2以上の要求元に対し1つのルール関数を生成しようとした場合、これらの2以上の要求元を複数のグループに分割し、グループ毎に1つのルール関数を生成するようにして良い。
次に、生成部215は、生成した1または2以上のルール関数をまとめたクラスを生成する(S770)。ここで、クラスのサイズが予め定められたサイズを超える場合(S775:NG)、生成部215は、クラスを分割することにより1つのクラスに含めるルール関数の数を減らして(S780)、再度クラスを生成する(S770)。
次に、生成部215は、クラスと、ルール関数となるメソッド関数とをマッピングテーブル222および232に登録する(S790)。より具体的には、生成部215は、当該クラスのパッケージ名およびクラス名をインスタンス記憶部232に記憶させる。また、当該ルール関数のオブジェクトコードを識別するための情報として、当該ルール関数となるメソッド関数についてのパッケージ名、クラス名、およびメソッド名をマッピングテーブル222に記憶させる。更に生成部215は、新たに生成したクラスをパッケージ224に登録する。
以上の処理を終えると、生成部215は、アクセス要求をアンロックし、後続のアクセス要求を処理可能とする(S795)。
以上に示した生成部215によれば、ルールが変更された要求元に対応するルール関数を適切に選択して、選択したルール関数のみを更新することができる。また、生成部215は、生成したルール関数が予め定められたサイズ以下であること、または、生成したクラスが予め定められたサイズ以下であることを条件として、当該ルール関数または当該クラスを関数記憶部220に記憶させることができる。これにより生成部215は、Java(登録商標)等の処理系によるサイズ制約を満たす適切なルール関数およびクラスを生成することができる。
図8は、本実施形態に係る関数記憶部220に記憶されるルール関数の一例を示す。生成部215は、図7のS730において、要求元Taroについてのルール400a〜cをポリシー記憶部210から抽出する。次に、図7のS740において、抽出したルール400a〜cに基づいて、本図に示したルール関数を生成する。次に、図7のS770において、当該ルール関数をメソッド関数method1として含むクラスCls1を生成する。そして、図7のS790において、当該クラスCls1をパッケージpkg1に登録すると共に、マッピングテーブル222に当該ルール関数を記憶させる。
生成部215が生成するルール関数は、クラスCls1中のメソッド関数method1として実現される。メソッド関数method1は、1行目において、アクセス対象となるノードの位置を文字列のパラメータaccessedPathとして入力する。そして、2行目、4行目、および6行目において、アクセス対象となるノードの位置accessedPathを、当該要求元についてのルール400c、ルール400b、およびルール400aのそれぞれに含まれる位置を示す定数'/a/b/c'、'/a/b'、および'/a'と順次比較する。そして、アクセス対象となるノードの位置がいずれかの定数と一致した場合に、当該要求元、および、当該定数が示す位置と組となるアクセス許否の情報を判定結果として返す。すなわち例えば、6行目において、accessedPathが定数'/a'と一致した場合に、要求元Taroおよび当該定数が示す位置/aと組となるアクセス許否の情報+rによりアクセスが許可されること(true)を判定結果として返す。
ここで、生成部215は、アクセス制御効果が伝播するルール400cについては、アクセス対象となるノードの位置を示す文字列accessedPathが、アクセス制御効果を及ぼすノードの部分木における最上位のノードの位置を示す文字列'/a/b/c' を先頭部分に含むことを条件として(2行目)、当該伝播ルールにより指定されるアクセス許否の情報−R(=false)を判定結果として返す(3行目)ルール関数を生成する。同様に生成部215は、伝播ルール400bについては、文字列accessedPathが、文字列'/a/b'を先頭に含むことを条件として(4行目)、伝播ルール400bにより指定されるアクセス許可+R(=true)を判定結果として返す。
本実施形態に係る生成部215は、アクセス許可よりアクセス拒否の設定を優先するべく、アクセス拒否を示すルールを先に判定してからアクセス許可を示すルールを判定するようにルール関数の処理順序を定める。すなわち、アクセス対象となるノードが、アクセス拒否を示すいずれかの伝播ルールにより指定される部分木に含まれることを条件としてアクセス拒否の判定結果を返すルール関数を生成する場合において、生成部215は、アクセス対象となるノードがアクセス拒否(−R)を示すいずれかの伝播ルールにより指定される部分木に含まれるか否かをまず判定するように処理順序を定める。そして、生成部215は、アクセス対象となるノードがアクセス拒否(−R)を示すいずれの伝播ルールにより指定される部分木にも含まれない場合において、アクセス許可(+R,+r)を示すいずれかのルールによりアクセスが許可されることを条件として、アクセス許可の判定結果を返すようにルール関数を定める。
また、生成部215は、6行目に示したように、いずれのルール400によってもアクセス許否が設定されないノードに対し、デフォルトとしてアクセス拒否を設定するべく、いずれのルール400に対応する条件にも一致しない場合に、アクセス拒否の判定結果(=false)を返すようにする。
なお、当該ノードのアクセス許可(+r)、または、祖先ノードの伝播ルールによるアクセス許可(祖先ノードが+R、当該ノードは設定無し)を区別して返す形態においては、生成部215は、下位のノードに対するアクセス許可のルールを、上位のノードに対するアクセス許可のルールより先に判定するようにルール関数を生成してよい。
図9は、本実施形態に係るアクセス管理装置100によりアクセスを制御する動作フローを示す。
まず、受信部225は、要求元からのアクセス要求をクライアント装置110から受信し、選択部230へ供給する(ステップS900)。次に、選択部230は、マッピングテーブル222の中から、要求元に対応するエントリを検索する(S905)。
要求元に対応するエントリのキャッシュに、当該アクセス要求の対象ノードに対応付けて判定結果が既に登録されている場合(S910:Yes)、選択部230は、キャッシュ内の当該判定結果を実行部235を経由して制御部240へ渡す。これを受けて、制御部240は、キャッシュ内の当該判定結果に基づいてアクセス制御を行う(S915)。すなわち、制御部240は、当該判定結果がアクセス許可を示す場合に、データ記憶部200に記憶された構造化文書における、アクセス対象のノードに対応するデータをクライアント装置110へ返信する。一方、当該判定結果がアクセス拒否を示す場合に、アクセスを拒否することをクライアント装置110へ応答する。これにより、選択部230は、以前のアクセス要求と同一の要求元から同一のノードに対する後続のアクセス要求を受信したことに応じて、当該要求元に対応付けられたルール関数を実行部235により実行させずに、当該要求元および当該ノードに対応付けて関数記憶部220に登録された判定結果を制御部240に与えることができる。そして、制御部240は、選択部230から与えられた判定結果に基づいて、後続のアクセス要求の許可または禁止を制御することができる。
一方、要求元に対応するエントリのキャッシュに、当該アクセス要求の対象ノードに対応する判定結果が登録されていない場合(S910:No)、選択部230は、当該要求元に対応付けられたルール関数のポインタを取得する(S920:Yes)。次に、選択部230は、マッピングテーブル222から取得したルール関数のポインタに含まれるパッケージ名およびクラス名を用いて、当該ルール関数を含むクラスのインスタンス識別情報をインスタンス記憶部232から取得する。ここで、選択部230は、選択したルール関数を含むクラスのインスタンスの識別情報がインスタンス記憶部232に記憶されていないことを条件として(S925:No)、当該クラスのインスタンスを生成して当該インスタンスの識別情報をインスタンス記憶部232に格納する(S930)。すなわち例えば、選択部230は、「インスタンス識別情報incetance_id=new Cls1()」等の処理を行ってクラスCls1のコンストラクタを呼び出し、インスタンスの生成・初期化を行ってよい。
次に、実行部235は、アクセス要求の対象となるノードの位置を入力パラメータとして、選択部230により選択されたルール関数を実行する(S935)。すなわち、実行部235は、マッピングテーブル222から取得されたポインタにより指定されるルール関数を呼び出すことにより当該ルール関数を実行する。本実施形態に係る実行部235は、インスタンス記憶部232から取得されたインスタンス識別情報により指定されるインスタンスのメソッド関数を呼び出すことにより当該ルール関数を実行する。当該ルール関数を実行した結果、実行部235は、アクセス許否の判定結果を得ることができる。
次に、登録部245は、ルール関数を実行した結果得られた判定結果を、要求元およびアクセス要求の対象となるノードの位置に対応付けて関数記憶部220に登録する(S940)。そして、制御部240は、240は、選択部230から判定結果を受けて、アクセス要求の許可または禁止を制御し当該アクセス要求についての処理を終了する。
また、S920において要求元に対応するルール関数がマッピングテーブル222中に存在しない場合(S920:No)、選択部230は、検索部250に対してその旨を通知する。この通知を受けて、検索部250は、当該アクセス要求の判定に用いるべき1または複数のルールをポリシー記憶部210から検索する(S950)。次に、判定部255は、検索された1または複数のルールに基づいて、アクセス要求に対するアクセス許否を判定する(S955)。この判定結果を受けて、制御部240は、アクセス要求の許可または禁止を制御する(S960)。
また、生成部215は、受信したアクセス要求の要求元に対応付けてルール関数が記憶されていないことを条件として(S920:No)、図7と同様にして、当該要求元に対応するルール関数を生成する(S965)。そして、生成部215は、当該ルール関数を識別する情報をマッピングテーブル222に記憶させ、新たに生成した、当該ルール関数を含むクラスのオブジェクトコードをパッケージ224に登録する。
以上に示したアクセス管理装置100によれば、ポリシー記憶部210内のポリシーを複数のルール関数の組に変換し、アクセス要求に応じたルール関数を実行することによりアクセス許否を判定する。これにより、アクセス要求毎にポリシー内のルールを検索してアクセス許否を判定する場合と比較して、より高速にアクセス許否を判定することができる。特に、ポリシー内のルールを検索してアクセス許否を判定する場合には、アクセス要求毎にポリシー全体を検索する必要があり、ポリシー全体をメモリに展開することが望まれる。これに対し、本実施形態に係るアクセス管理装置100によれば、ルール関数を含むクラスを必要に応じて個別にインスタンス化するので、アクセス要求を受けないルール関数をメモリに展開する必要がなく、少ないメモリで効率よくアクセス制御を行うことができる。
また、関数記憶部220にルール関数が記憶されていない場合、検索部250および判定部255は、ポリシー記憶部210内のポリシーを検索してアクセス許否を判定することができる。したがって、アクセス管理装置100は、ルール関数が登録されているアクセス要求に対しては効率良くアクセス制御を行う一方、ルール関数が登録されていないアクセス要求に対してもアクセス制御を正しく行うことができる。この機能を利用して、アクセス管理装置100は、アクセス要求の頻度が所定の値より高い間またはアクセス要求が集中する可能性が高い所定の時間帯においては、ルール関数が登録されていないアクセス要求に対し検索部250および判定部255によりアクセス制御を行い、アクセス要求の頻度が所定の値以下の間またはアクセス要求が集中する可能性が低い所定の時間帯において生成部215により未登録のルール関数を生成させてよい。
図10は、本実施形態の第1変形例に係るマッピングテーブル222の一例を示す。本変形例において、アクセス管理装置100の構成および動作は、図2に示したアクセス管理装置100と略同様であるから、以下相違点を除き説明を省略する。
本変形例に係るマッピングテーブル222は、複数の互いに異なるノードの位置のそれぞれに対応付けて、アクセス要求の要求元に応じてアクセス許否を判定するルール関数を記憶する。例えば、本図のマッピングテーブル222は、対象ノードの位置/aに対応付けて、メソッド名method1を記憶する。このメソッドは、全ての要求元について位置/aのノードのアクセス制御効果を返すルール関数である。
図11は、本実施形態の第1変形例に係るルール関数の一例を示す。本変形例に係る生成部215は、図7のS730において、対象ノードの位置/aについてのルール400a、ルール400d、ルール400g、およびルール400jをポリシー記憶部210から抽出する。次に、図7のS740において、抽出したルール400a、ルール400d、ルール400g、およびルール400jに基づいて、本図に示したルール関数を生成する。
本変形例において生成部215が生成するルール関数は、予め定められたクラスCls1中のメソッド関数method1として実現される。本変形例において、生成部215は、全てのルール関数を共通のクラスCls1に含めているが、全てのルール関数を複数のクラスに分割して含めてもよい。当該メソッド関数method1は、1行目において、アクセス要求の要求元を文字列のパラメータsbjとして入力する。そして、2行目、4行目、6行目、および8行目において、アクセス要求の要求元sbjを、対象ノードをアクセスしうる互いに異なる複数の要求元を示す文字列の定数'Taro'、'Hana'、'Tom'、および'Alice'と順次比較する。そして、いずれかの定数が、アクセス要求の要求元を示すsbjと一致した場合に、当該定数が示す要求元と組となる位置/aについてのアクセス許否の情報を返す。
なお、本変形例において、ルール関数は、アクセス許可またはアクセス拒否のいずれかを論理値により返すのに代えて、当該ノード自体にアクセス拒否(−R)が設定されている場合に0、アクセス制御効果の設定が無い場合に1、子孫ノードに伝播しないアクセス許可(+r)が設定されている場合に2、子孫ノードに伝播するアクセス許可(+R)が設定されている場合に3等の、当該ノード自体に設定されたアクセス制御効果を識別する情報を返す。
図12は、本実施形態の第1変形例に係るアクセス許否判定フローを示す。本アクセス拒否判定フローは、図9のS935に代えて用いられる。アクセス管理装置100は、ルートノードから順にノード毎のアクセス制御効果を返すルール関数を呼び出していき、各ノードに設定されたアクセス制御効果に基づいて対象ノードのアクセス許否を判定する。
選択部230および実行部235は、ルートノードからアクセス要求の対象ノードに至るまでの各ノードについて、S1210からS1230の処理を行う(S1200、S1240)。まず、選択部230は、マッピングテーブル222を検索し、処理対象のノードの位置に対応付けられたルール関数を選択する(S1210)。当該ルール関数がマッピングテーブル222に記憶されている場合(S1220:Yes)、実行部235は、当該ルール関数を呼び出して、処理対象のノード自体に設定されたアクセス制御効果を得る(S1230)。
ルートノードからアクセス要求の対象ノードに至るまでの各ノードについて上記の処理を終えると、実行部235は、各ルール関数の呼び出しにより得られたアクセス制御効果に基づいて、アクセス要求の対象ノードに対するアクセス許否を判定する(S1250)。
ここで、実行部235は、以下のいずれかの場合に対象ノードへのアクセスを拒否する。
(1)アクセス要求の対象ノードの祖先ノードの少なくとも1つにアクセス拒否−R(ルール関数の戻り値0)が設定されている場合
(2)ルートノードからアクセス要求の対象ノードに至るまでの間にアクセス制御効果の設定されていないノード(ルール関数の戻り値1)が存在し、かつ、当該ノードの祖先に、子孫ノードに伝播するアクセス許可+R(ルール関数の戻り値3)が設定されたノードが存在しない場合
また、実行部235は、以下のいずれかの場合に対象ノードへのアクセスを許可する。
(3)ルートノードからアクセス要求の対象ノードに至るまでの間にある、アクセス制御効果の設定されていない全てのノード(ルール関数の戻り値1)について、当該ノードの祖先にアクセス拒否−R(ルール関数の戻り値0)が設定されたノードが存在せず、かつ、子孫ノードに伝播するアクセス許可+R(ルール関数の戻り値3)が設定されたノードが存在する場合
(4)ルートノードからアクセス要求の対象ノードまでの全てのノードがアクセス許可+Rまたは+rである場合
以上の処理を終えると、実行部235は、アクセス許否の判定結果を登録部245および制御部240へ出力する(S1260)。
本変形例に係るアクセス管理装置100によれば、ルートノードからアクセス対象のノードまでの各位置に対応付けられたルール関数を選択部230により順次選択し、アクセス要求の要求元を入力として選択されたルール関数を実行部235により順次実行することができる。そして、制御部240は、ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、アクセス要求の許可または禁止を制御することができる。
図13は、本実施形態の第2変形例に係るマッピングテーブル222の一例を示す。本変形例において、アクセス管理装置100の構成および動作は、図1に示したアクセス管理装置100と略同様であるから、以下相違点を除き説明を省略する。
本変形例に係るマッピングテーブル222は、複数の互いに異なる要求元および複数の互いに異なる位置の組のそれぞれに対応付けて、当該要求元から当該位置のノードへのアクセス許否を判定するルール関数を記憶する。例えば、本図のマッピングテーブル222は、要求元Hanaおよび対象ノードの位置/aに対応付けて、パッケージ名pkg1、クラス名Cls1、およびメソッド名method1を記憶する。このメソッドは、要求元TaroおよびHanaについて位置/aのノードのアクセス制御効果を返すルール関数である。
生成部215は、図7および図8に関連して示した、複数の異なる要求元のそれぞれについてのルール関数の生成と、図10から12に関連して示した、複数の異なるノードの位置のそれぞれについてのルール関数の生成とを併せた処理を行うことにより、複数の異なる要求元および複数の異なるノードの位置の組のそれぞれについてのルール関数を生成することができる。すなわち例えば、生成部215は、図7のS730において、1または2以上の要求元についてポリシー記憶部210に記憶された、同一のノード位置を対象とする複数のルール400を抽出する。そして、S740において、これらの1または2以上の要求元および当該位置に対応するルール関数を生成する。このルール関数は、対応する要求元について図11と同様の処理を行うものであってよい。
次に、アクセス要求を受けると、選択部230は、図9のS905において、アクセス要求の要求元および対象ノードの位置に対応付けられたルール関数を関数記憶部220から選択する。次に、実行部235は、選択部230により選択されたルール関数を実行する。そして、制御部240は、図9のS935からS945において、当該ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、アクセス要求の許可または禁止を制御する。
ここで、ルール関数が処理対象のノード自体のアクセス制御効果を返すものである場合、選択部230および実行部235は、図12と同様にして、ルートノードからアクセス要求の対象ノードに至るまでの各ノードについて、アクセス要求の要求元および当該ノードの位置に対応するルール関数を呼び出した結果得られるアクセス制御効果に基づいて、アクセス要求の対象ノードのアクセス拒否を判定してよい。
本変形例により、アクセス管理装置100は、要求元およびノードの位置の両方を分割してルール関数を生成することができる。したがって、アクセス管理装置100は、要求元のみ、またはノード位置のみを分割してルール関数を生成する場合と比較して、実装するルールがより少なくコードサイズの小さいルール関数を多数生成することができる。この結果、アクセス管理装置100は、粒度の小さいルール関数を用いてより効率よくアクセス要求を処理することができる。また、少ないルールを実装するルール関数を多数生成することにより、アクセス管理装置100は、ポリシー記憶部210内の一部のルールが変更された場合に、ルール関数の更新オーバーヘッドを低減することができる。
以上において、生成部215は、まず要求元またはノードの位置のいずれかに対応付けてルール関数を生成し、要求元またはノード位置のいずれかによる分割によっては当該ルール関数のサイズが予め定められたサイズを超えることを条件として、要求元およびノードの位置の両方に対応付けてルール関数を生成してもよい。これにより、アクセス管理装置100は、サイズが大きくなったルール関数の要求元またはノードの位置に基づき分割して、より小さい2以上のルール関数に分けることができる。
図14は、本実施形態の第3変形例に係る実行部235の構成を示す。本変形例において、アクセス管理装置100の構成および動作は、第1変形例に係るアクセス管理装置100と略同様であるから、以下相違点を除き説明を省略する。
ポリシー410に含まれるルール400の中には、ルートノードから当該ルール400により指定されるノードに至る少なくとも1つのノードに対し、述語式が指定されるものがありうる。述語式は、指定されたノード内の変数が所定の値をとることを条件として、当該ノードにアクセス許否を設定することを指示する。本変形例に係る生成部215は、このようなルール400に基づくルール関数を生成する場合において、当該ルール関数に以下の処理を実装する。
(1)生成部215は、当該ルール関数内に、予め作成された読出関数を呼び出す処理を実装し、読出関数により変数の値を取得させるようにする。この読出関数は、複数のルール400に共通に設けられ、当該ルール400により指定される変数名をパラメータとして入力して、変数名に基づいて当該変数の値を読み出す関数である。
(2)生成部215は、当該ルール関数内に、読出関数により取得した変数の値が所定の値と一致することを条件として、ルールにより指定されたアクセス許否を判定結果として返す処理を実装する。
本変形例に係る実行部235は、以上の通り生成された1または複数のルール関数1410と、2以上のルール関数1410により共用されうる読出関数1420とを実行し、実行結果に基づき判定プロセス1400によりアクセス許否を判定する。
より具体的には、まず受信部225は、階層化された構造化文書を構成する複数のノードのうち、アクセス要求により参照中のノードを読出関数に供給する。これにより、例えば図3においてノードdepartmentの下位に同一名称の複数のノードEmployeeが存在する場合においても、いずれのノードEmployeeを参照中であるかを読出関数側で特定することができる。
次に、実行部235内の判定プロセス1400は、ルートノードからアクセス要求により指定されたノードに至るまでの各ノードについて、選択部230により選択されたルール関数1410を順次呼び出す。次に、実行部235は、呼び出されたルール関数1410の処理において、ルール400内で指定された変数名をパラメータとして読出関数1420を呼び出す。この変数名は、参照中のノードを基準とする相対位置により変数を含むノードを指定するものであってよい。
次に、実行部235は、ルール関数1410から呼び出された読出関数1420の処理において、ルール関数1410により指定された変数の値をデータ記憶部200から読み出し、ルール関数1410へ返す。ここで、実行部235は、受信部225から供給された参照中のノードを基準として、ルール関数により指定された変数名に含まれる相対位置のノードを選択し、当該ノード内の当該変数の値を読み出す。次に、実行部235は、ルール関数1410に処理を戻して、読出関数1420により読み出された変数の値がルール400により指定された値と一致するか否かを判定する。一致した場合、実行部235は、ルール400により指定されたアクセス制御効果を判定プロセス1400へ返す。
図15は、本実施形態の第3変形例に係るルール関数1410の一例を示す。図15(a)は、ルール400が「<Taro,/a/b/c[@d=1],+r>」の場合におけるルール関数1410の一例である。当該ルール関数1410は、処理対象のノードの位置が/a/b/cの場合に、図12のS1230において呼び出される。
ルール関数1410は、1行目において、アクセス要求の要求元を文字列のパラメータsbjとして入力する。2行目において、ルール400により指定される要求元を示す文字列の定数'Taro'とアクセス要求の要求元sbjとを比較し、一致した場合に3行目から6行目の処理を行う。
ルール関数1410は、3行目および4行目において、ルール400により指定された変数名'@d'をパラメータとして読出関数dataRetrieve()を呼び出して、dataRetrieve()の戻り値である変数@dの値を文字列の配列valueに代入する。次に、5行目において、ルール関数1410は、変数@dの値value[0]を整数に変換し、ルール400により指定される値1と比較する。そして、5行目の比較の結果@dが1であった場合に、ルール関数1410は、6行目においてアクセス制御効果+rを示す値2を判定プロセス1400へ返す。
図15(b)は、ルール400が「<Taro,/a/b[@e='level1']/c[@d=1],+r>」の場合におけるルール関数1410の一例である。当該ルール関数1410は、処理対象のノードの位置が/a/b/cの場合に、図12のS1230において呼び出される。
ルール関数1410は、1行目において、アクセス要求の要求元を文字列のパラメータsbjとして入力する。2行目において、アクセス要求の要求元sbjを、ルール400により指定される要求元を示す文字列の定数'Taro'と比較し、一致した場合に3行目から7行目の処理を行う。
ルール関数1410は、3行目および4行目において、ルール400により指定された変数名'../@e'および'@d'をパラメータとして読出関数dataRetrieve()を呼び出して、dataRetrieve()の戻り値である変数@eおよび変数@dの値を文字列の配列valueに代入する。ここで、変数名'../@e'は、参照中のノード/a/b/cを基準とする相対位置により変数@eを含むノードを指定するものである。すなわち、相対位置'../'により参照中のノード/a/b/cの親ノード/a/bを指定しているので、/a/b内の変数@eが読み出される。
次に、6行目において、ルール関数1410は、変数@eおよび@dの値を、値'level1'および値1と比較する。そして、6行目の比較の結果、@eが'level1'かつ@dが1であった場合に、ルール関数1410は、7行目においてアクセス制御効果+rを示す値2を判定プロセス1400へ返す。
本変形例に係るアクセス管理装置100によれば、変数値の条件を述語式により指定するルール400を含む場合においても、ルール関数1410を用いて効率良くアクセス許否を判定することができる。
図16は、本実施形態に係るルール関数の他の一例を示す。ルール400が、子孫ノードであることを示す表記'//'を用いてノードを指定している場合、生成部215は、ルール400により指定されるノードの位置を示す文字列を、アクセス対象のノードの位置を示す文字列とパターンマッチされる正規表現により表す。
図16(a)は、ルール<Taro,/a//d,−R>に基づき生成部215が生成するルール関数の一例を示す。位置を示す文字列/a//dは、1行目において、正規表現のパターンpatternに置換される。より具体的には、位置/a//dは、aとdが親子関係となる'/a/d'の場合、および、aとdが親子関係以外の祖先と子孫の関係となる'/a/.*/d'の場合の両方に場合分けすることができる。ここで、'.*'は、任意の文字(正規表現'.')を1以上含む文字列を表す正規表現であり、aの子孫かつdの祖先となる1または複数のノードの名前にパターンマッチされる。
また、本ルールのアクセス制御効果は、子孫に伝播する−Rであるから、'/a/d'または'/a/.*/d'の子孫ノードに対してもパターンマッチされる必要がある。そこで、生成部215は、 アクセスの対象ノードの文字列を、'/a/d'および'/a/.*/d'と、これらの全ての子孫ノードを表す'/a/d/.*'および'/a/.*/d/.*'とのいずれかにマッチさせるパターンpatternを用意する。なお、本例においては、Java(登録商標)の基本パッケージの一つであるjava.util.regexパッケージを利用して、正規表現を表すパターンのコンパイル(1行目)およびパターンマッチ(4行目)を行っている。
2行目において、ルール関数methodDescは、要求元を示す文字列sbj、および、アクセスの対象ノードの位置を示す文字列accessedPathを入力する。次に、要求元が'Taro'であり(3行目)、かつ、位置を示す文字列accessedPathが予め用意したパターンpatternとマッチする場合に(4行目から5行目)、当該ルールにより指定されたアクセス制御効果−Rに応じてアクセス拒否を返す。
図16(b)は、要求元Taroに対応付けて生成されたルール関数の一例であり、アクセスの対象ノードの位置を示す文字列を入力し、要求元Taroについてのアクセス許否を返す他は図16(a)と同様である。
また、ルール400が、任意の1階層分のノード名にマッチされることを示す'*'を含む場合においても、生成部215は、'//'の場合と同様にしてルール関数を生成することができる。すなわち、ルール内の'*'を、階層毎のノード名の区切りを示す'/'以外の任意の1または複数の文字にマッチされる正規表現[^/]*に変換し、アクセスの対象ノードとパターンマッチされるべきパターン"pattern"として用意する。
以上において、生成部215は、'//'または'*'を含むルールを、クラス毎にそれぞれ1つのメソッド関数にまとめることにより、クラス毎に1つのルール関数として提供してもよい。この場合、実行部235は、まず当該ルール関数を呼び出して、アクセスの対象ノードの位置が当該ルール関数によりアクセスを拒否されなかった場合に、'//'および'*'の処理を含まないルール関数を呼び出してアクセス許否を判定してもよい。
以上に示したルール関数を用いることにより、ポリシー410の設定者が'//'および'*'を用いて分かりやすくルール400を作成した場合においても、当該ルール400を適切に処理することができる。
図17は、本実施形態に係るコンピュータ1900の構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラムや、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
コンピュータ1900にインストールされ、コンピュータ1900をアクセス管理装置100として機能させるプログラムは、データ記憶部200を管理するデータ管理モジュールと、ポリシー記憶部210を管理するポリシー管理モジュールと、生成モジュールと、関数記憶部220を管理する関数管理モジュールと、受信モジュールと、選択モジュールと、インスタンス記憶部232を管理するインスタンス管理モジュールと、実行モジュールと、制御モジュールと、登録モジュールと、検索モジュールと、判定モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、データ記憶部200と、ポリシー記憶部210と、生成部215と、関数記憶部220と、受信部225と、選択部230と、インスタンス記憶部232と、実行部235と、制御部240と、登録部245と、検索部250と、判定部255としてそれぞれ機能させる。
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVDやCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
本発明の実施形態に係る情報システム10の構成を示す。 本発明の実施形態に係るアクセス管理装置100の構成を示す。 本発明の実施形態に係るデータ記憶部200に記憶される構造化文書300の一例を示す。 本発明の実施形態に係るポリシー記憶部210に記憶されるポリシー410の一例を示す。 本発明の実施形態に係るマッピングテーブル222の一例を示す。 本発明の実施形態に係るインスタンス記憶部232の一例を示す。 本発明の実施形態に係るアクセス管理装置100によりルール関数を作成する動作フローを示す。 本発明の実施形態に係る関数記憶部220に記憶されるルール関数の一例を示す。 本発明の実施形態に係るアクセス管理装置100によりアクセスを制御する動作フローを示す。 本発明の実施形態の第1変形例に係るマッピングテーブル222の一例を示す。 本発明の実施形態の第1変形例に係るルール関数の一例を示す。 本発明の実施形態の第1変形例に係るアクセス許否判定フローを示す。 本発明の実施形態の第2変形例に係るマッピングテーブル222の一例を示す。 本発明の実施形態の第3変形例に係る実行部235の構成を示す。 本発明の実施形態の第3変形例に係るルール関数の一例を示す。 本発明の実施形態に係るルール関数の他の一例を示す。 本発明の実施形態に係るコンピュータ1900の構成の一例を示す。
符号の説明
10 情報システム
100 アクセス管理装置
110 クライアント装置
200 データ記憶部
210 ポリシー記憶部
215 生成部
220 関数記憶部
222 マッピングテーブル
224 パッケージ
225 受信部
230 選択部
232 インスタンス記憶部
235 実行部
240 制御部
245 登録部
250 検索部
255 判定部
300 構造化文書
400a〜l ルール
410 ポリシー
1400 判定プロセス
1410 ルール関数
1420 読出関数
1900 コンピュータ
2000 CPU
2010 ROM
2020 RAM
2030 通信インターフェイス
2040 ハードディスクドライブ
2050 フレキシブルディスク・ドライブ
2060 CD−ROMドライブ
2070 入出力チップ
2075 グラフィック・コントローラ
2080 表示装置
2082 ホスト・コントローラ
2084 入出力コントローラ
2090 フレキシブルディスク
2095 CD−ROM

Claims (22)

  1. 内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置であって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    ノードをアクセスする複数の互いに異なる要求元のそれぞれに対応付けて、アクセス対象となるノードの階層構造における位置に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、
    要求元からアクセス要求を受信する受信部と、
    前記アクセス要求の前記要求元に対応付けられた前記ルール関数を選択する選択部と、
    前記アクセス要求の対象となるノードの位置を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部と
    を備えるアクセス管理装置。
  2. 前記関数記憶部は、複数の互いに異なる前記要求元のそれぞれに対応付けて、互いに異なる複数の前記ルール関数のそれぞれを指定するポインタを記憶し、
    前記選択部は、前記関数記憶部から前記要求元を検索することにより当該要求元に対応付けられた前記ルール関数のポインタを取得し、
    前記実行部は、前記ポインタにより指定される前記ルール関数を呼び出すことにより当該ルール関数を実行する
    請求項1に記載のアクセス管理装置。
  3. 前記ルール関数を実行した結果得られた前記判定結果を、前記要求元および前記アクセス要求の対象となるノードの位置に対応付けて前記関数記憶部に登録する登録部を更に備え、
    前記選択部は、同一の前記要求元から同一のノードに対する後続のアクセス要求を受信したことに応じて、当該要求元に対応付けられた前記ルール関数を前記実行部により実行させずに、当該要求元および当該ノードに対応付けて前記関数記憶部に登録された前記判定結果を前記制御部に与え、
    前記制御部は、前記選択部から与えられた前記判定結果に基づいて、前記後続のアクセス要求の許可または禁止を制御する
    請求項1に記載のアクセス管理装置。
  4. 前記要求元、前記階層構造におけるノードの位置、および当該要求元による当該ノードへのアクセス許否の情報の組を含むルールを複数記憶するポリシー記憶部と、
    同一の前記要求元についての2以上の前記ルールに基づいて、当該要求元に対応する前記ルール関数を生成して、当該ルール関数を識別する情報を前記関数記憶部に記憶させる生成部と
    を更に備える請求項1に記載のアクセス管理装置。
  5. 前記生成部は、受信した前記アクセス要求の要求元に対応付けて前記ルール関数が記憶されていないことを条件として、当該要求元に対応する前記ルール関数を生成する請求項4に記載のアクセス管理装置。
  6. 前記生成部は、
    同一の前記要求元についての2以上の前記ルールに基づいて、当該要求元に対応する前記ルール関数のソースコードを生成し、
    当該ソースコードをコンパイルすることにより前記ルール関数のオブジェクトコードを生成し、
    前記オブジェクトコードを識別する情報を前記関数記憶部に記憶させる
    請求項4に記載のアクセス管理装置。
  7. 受信した前記アクセス要求の要求元に対応付けて前記ルール関数が記憶されていないことを条件として、当該要求元についての2以上の前記ルールを前記ポリシー記憶部から検索する検索部と、
    前記検索部により検索された前記2以上のルールに基づいて、前記アクセス要求の対象となるノードのアクセス許否を判定する判定部と
    を更に備え、
    受信した前記アクセス要求の要求元に対応付けて前記ルール関数が記憶されていない場合、前記制御部は、前記判定部によるアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する
    請求項4に記載のアクセス管理装置。
  8. 前記生成部は、予め定めた2以上の数の前記要求元についての2以上の前記ルールに基づいて、当該2以上の数の前記要求元に対応する共通の前記ルール関数を生成する請求項4に記載のアクセス管理装置。
  9. 前記生成部は、
    2以上の前記要求元についての2以上の前記ルールに基づいて、当該2以上の要求元に対応する前記ルール関数を生成し、
    生成した前記ルール関数が予め定められたサイズ以下であることを条件として、当該ルール関数を前記関数記憶部に記憶させる
    請求項4に記載のアクセス管理装置。
  10. 前記関数記憶部は、前記複数の互いに異なる要求元および複数の互いに異なる前記位置の組のそれぞれに対応付けて、当該要求元から当該位置のノードへのアクセス許否を判定する前記ルール関数を記憶し、
    前記選択部は、前記アクセス要求の前記要求元および前記位置に対応付けられた前記ルール関数を選択し、
    前記実行部は、前記選択部により選択された前記ルール関数を実行し、
    前記制御部は、前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する
    請求項9に記載のアクセス管理装置。
  11. 前記生成部は、前記ルール関数として、
    アクセス対象となるノードの位置を入力し、
    アクセス対象となるノードの位置を、当該要求元についての2以上の前記ルールのそれぞれに含まれる前記位置を示す定数と順次比較し、
    アクセス対象となるノードの位置がいずれかの前記定数と一致した場合に、当該要求元、および、当該定数が示す前記位置と組となる前記アクセス許否の情報を前記判定結果として返す
    関数を生成する請求項4に記載のアクセス管理装置。
  12. 一のノードに対応して、当該一のノードを最上位とする部分木に含まれる全てのノードに対するアクセスの許可または拒否を示す伝播ルールが前記ポリシー記憶部に記憶されている場合に、前記生成部は、アクセス対象となるノードの位置を示す文字列を入力し、当該文字列が前記部分木の最上位のノードの位置を示す文字列を先頭部分に含むことを条件として、当該伝播ルールにより指定される前記アクセス許否の情報を前記判定結果として返す前記ルール関数を生成する請求項11に記載のアクセス管理装置。
  13. 前記生成部は、前記ルール関数として、
    アクセス対象となるノードが、アクセス拒否を示すいずれかの前記伝播ルールにより指定される前記部分木に含まれることを条件として、アクセス拒否の前記判定結果を返し、
    アクセス対象となるノードがアクセス拒否を示すいずれの前記伝播ルールにより指定される前記部分木にも含まれない場合において、アクセス許可を示すいずれかの前記ルールによりアクセスが許可されることを条件として、アクセス許可の前記判定結果を返す
    関数を生成する請求項12に記載のアクセス管理装置。
  14. 前記生成部は、下位のノードに対するアクセス許可の前記ルールを、上位のノードに対するアクセス許可の前記ルールより先に判定する前記ルール関数を生成する請求項12に記載のアクセス管理装置。
  15. 前記ルートノードから前記ルールにより指定されるノードに至る少なくとも1つのノードの属性を示す変数が所定の値をとることを条件とする前記ルールに基づく前記ルール関数を生成する場合において、前記生成部は、
    前記ルールにより指定される変数名をパラメータとして、前記変数名に基づいて前記変数の値を読み出す読出関数を呼び出すことにより前記変数の値を取得し、
    前記変数の値が前記所定の値と一致することを条件として、前記ルールにより指定されたアクセス許否を前記判定結果として返す
    前記ルール関数を生成する請求項4に記載のアクセス管理装置。
  16. 前記複数のノードは、階層化された構造化文書を構成し、
    前記受信部は、前記構造化文書における参照中のノードを前記読出関数に供給し、
    前記実行部は、
    前記参照中のノードを基準とする相対位置により前記参照中のノードの属性を示す属性ノードを指定する前記変数名をパラメータとして、前記読出関数を呼び出し、
    前記ルール関数から呼び出された前記読出関数の処理において、前記受信部から供給された前記参照中のノードを基準として、前記ルール関数により指定された前記変数名に含まれる相対位置の前記属性ノードにより示される、前記参照中のノードの属性を示す変数の値を前記ルール関数に返す
    請求項15に記載のアクセス管理装置。
  17. 前記クラス毎に、当該クラスのインスタンスの識別情報を記憶するインスタンス記憶部を更に備え、
    前記選択部は、選択した前記ルール関数を含むクラスのインスタンスの識別情報が前記インスタンス記憶部に記憶されていないことを条件として、当該クラスのインスタンスを生成して当該インスタンスの識別情報を前記インスタンス記憶部に格納し、
    前記実行部は、前記インスタンスの前記メソッド関数を呼び出すことにより前記ルール関数を実行する
    請求項4に記載のアクセス管理装置。
  18. 内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置であって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    複数の互いに異なるノードの位置のそれぞれに対応付けて、アクセス要求の要求元に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、
    要求元からアクセス要求を受信する受信部と、
    アクセス対象のノードの位置に対応付けられた前記ルール関数を選択する選択部と、
    前記アクセス要求の要求元を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部と
    を備えるアクセス管理装置。
  19. コンピュータを、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置として機能させるプログラムであって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    前記アクセス管理装置を、
    ノードをアクセスする複数の互いに異なる要求元のそれぞれに対応付けて、アクセス対象となるノードの階層構造における位置に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、
    要求元からアクセス要求を受信する受信部と、
    前記アクセス要求の前記要求元に対応付けられた前記ルール関数を選択する選択部と、
    前記アクセス要求の対象となるノードの位置を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部と
    して機能させるプログラム。
  20. コンピュータを、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理装置として機能させるプログラムであって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    前記アクセス管理装置を、
    複数の互いに異なるノードの位置のそれぞれに対応付けて、アクセス要求の要求元に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶部と、
    要求元からアクセス要求を受信する受信部と、
    アクセス対象のノードの位置に対応付けられた前記ルール関数を選択する選択部と、
    前記アクセス要求の要求元を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択部により選択された前記ルール関数を実行する実行部と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御部と
    として機能させるプログラム。
  21. コンピュータにより、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理方法であって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    ノードをアクセスする複数の互いに異なる要求元のそれぞれに対応付けて、アクセス対象となるノードの階層構造における位置に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶段階と、
    要求元からアクセス要求を受信する受信段階と、
    前記アクセス要求の前記要求元に対応付けられた前記ルール関数を選択する選択段階と、
    前記アクセス要求の対象となるノードの位置を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択段階により選択された前記ルール関数を実行する実行段階と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御段階と
    を備えるアクセス管理方法。
  22. コンピュータにより、内部または外部のデータ記憶部に記憶された階層化されたデータ構造に含まれる、階層化して記憶された複数のノードのそれぞれに対するアクセスを許可または禁止するアクセス管理方法であって、
    前記複数のノードは、最上位階層のノードをルートノードとする木構造により階層化して記憶されており、
    それぞれの前記ノードの階層構造における位置は、前記ルートノードから当該ノードに至る経路上のノードの名前を順に含む文字列により表され、
    複数の互いに異なるノードの位置のそれぞれに対応付けて、アクセス要求の要求元に応じてアクセス許否を判定する、オブジェクト指向言語のクラス内のメソッド関数であるルール関数を記憶する関数記憶段階と、
    要求元からアクセス要求を受信する受信段階と、
    アクセス対象のノードの位置に対応付けられた前記ルール関数を選択する選択段階と、
    前記アクセス要求の要求元を入力として、前記クラスのインスタンスの前記ルール関数を呼び出すことにより、前記選択段階により選択された前記ルール関数を実行する実行段階と、
    前記ルール関数を実行した結果得られたアクセス許否の判定結果に基づいて、前記アクセス要求の許可または禁止を制御する制御段階と
    を備えるアクセス管理方法。
JP2005169965A 2005-06-09 2005-06-09 アクセス管理装置、アクセス管理方法、およびプログラム Expired - Fee Related JP4135950B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005169965A JP4135950B2 (ja) 2005-06-09 2005-06-09 アクセス管理装置、アクセス管理方法、およびプログラム
US11/450,727 US7650604B2 (en) 2005-06-09 2006-06-09 Access management apparatus, access management method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005169965A JP4135950B2 (ja) 2005-06-09 2005-06-09 アクセス管理装置、アクセス管理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2006344057A JP2006344057A (ja) 2006-12-21
JP4135950B2 true JP4135950B2 (ja) 2008-08-20

Family

ID=37568791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005169965A Expired - Fee Related JP4135950B2 (ja) 2005-06-09 2005-06-09 アクセス管理装置、アクセス管理方法、およびプログラム

Country Status (2)

Country Link
US (1) US7650604B2 (ja)
JP (1) JP4135950B2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US20070162417A1 (en) * 2006-01-10 2007-07-12 Kabushiki Kaisha Toshiba System and method for selective access to restricted electronic documents
JP5003131B2 (ja) * 2006-12-04 2012-08-15 富士ゼロックス株式会社 文書提供システム及び情報提供プログラム
US8595256B2 (en) 2009-03-18 2013-11-26 Nec Corporation Policy generation and conversion system, policy distribution system, and method and program therefor
US8676847B2 (en) * 2009-04-07 2014-03-18 International Business Machines Corporation Visibility control of resources
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8677506B2 (en) 2009-12-03 2014-03-18 Osocad Remote Limited Liability Company System and method for loading application classes
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9177168B2 (en) * 2012-03-19 2015-11-03 Alcatel Lucent Method of modifying access control for web services using query languages
EP2853074B1 (en) 2012-04-27 2021-03-24 F5 Networks, Inc Methods for optimizing service of content requests and devices thereof
GB201216640D0 (en) * 2012-09-18 2012-10-31 Touchtype Ltd Formatting module, system and method for formatting an electronic character sequence
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895844A (ja) 1994-09-27 1996-04-12 Toshiba Corp オブジェクト指向データベースのセキュリティ管理方法
JP3576008B2 (ja) 1998-10-09 2004-10-13 株式会社東芝 アクセス制御設定システム及び記憶媒体
DE19954358A1 (de) 1999-01-07 2000-07-20 Hewlett Packard Co Benutzerrollenzugriffssteuerung
US6523036B1 (en) * 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
US7383288B2 (en) * 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
JP2004013832A (ja) 2002-06-11 2004-01-15 Canon Inc コンピュータセキュリティシステム、コンピュータセキュリティ方法、及び記録媒体
US7130882B1 (en) * 2002-06-20 2006-10-31 Microsoft Corporation Caching mechanism using intervening network caching policies
US7065745B2 (en) * 2002-12-16 2006-06-20 Sun Microsystems, Inc. System and method for evaluating and executing hierarchies of rules

Also Published As

Publication number Publication date
US7650604B2 (en) 2010-01-19
JP2006344057A (ja) 2006-12-21
US20060294054A1 (en) 2006-12-28

Similar Documents

Publication Publication Date Title
JP4135950B2 (ja) アクセス管理装置、アクセス管理方法、およびプログラム
US10296657B2 (en) Accessing objects in a service registry and repository
JP3437849B2 (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
US7260572B2 (en) Method of processing query about XML data using APEX
KR100737300B1 (ko) 액세스 제어를 위반하는 질의의 실행을 우선적으로불허하는 사용자 데이터 지적 사용 방법
JP4445509B2 (ja) 構造化文書検索システム及びプログラム
JP3982623B2 (ja) 情報処理装置、データベース検索システム及びプログラム
US7844612B2 (en) Method for pruning objects in a service registry and repository
US7725482B2 (en) Accessing objects in a service registry and repository using subclass inference
JP2005259112A (ja) 情報処理装置、情報処理方法、情報処理プログラム及び記録媒体、並びに資源管理装置
JP5152877B2 (ja) 文書ベースシステムにおける文書データ記憶方法およびその装置
JPH10240588A (ja) データベース処理方法
US20090055367A1 (en) System and program products for pruning objects in a service registry and repository
CN106664224A (zh) 通信系统的元数据增强型库存管理的方法和系统
JP2005070911A (ja) 構造化文書のデータを検索する装置および方法
JP2008165432A (ja) クエリ制御プログラム、クエリ制御装置およびクエリ制御方法
US7433870B2 (en) Method and apparatus for secure processing of XML-based documents
JP3868171B2 (ja) 文書のデジタル署名付き管理方法および文書管理装置
JP2009544102A (ja) Xml文書の、意味論を意識した処理
US20020019824A1 (en) Method to generically describe and manipulate arbitrary data structures
US20030084026A1 (en) Collection recognizer
JP4562130B2 (ja) Xmlデータ処理装置、xmlデータ処理方法、xmlデータ処理プログラムおよびxmlデータ処理プログラムを記録した記憶媒体
Leighton et al. Access control policy translation, verification, and minimization within heterogeneous data federations
JP4550876B2 (ja) 構造化文書検索システム及びプログラム
Damiani et al. Regulating access to semistructured information on the web

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071204

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071220

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080312

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080527

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080602

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130613

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees