(57)【特許請求の範囲】
【請求項１】
コンピュータシステム用のアクセス制御方法であって、
前記コンピュータシステムおよび前記コンピュータシステム中のデータベースに存在するアクセス可能なあらゆるオブジェクトのひとつひとつに対するアクセス制御情報を記憶手段に格納しておき、
前記コンピュータシステムを使用中の特定のサブジェクトから特定のオブジェクトへのアクセス要求があると、アクセス制御部において当該アクセスの種別および前記記憶手段に格納されたアクセス制御情報ならびに当該サブジェクトが保持するケーパビリティリストを参照して当該サブジェクトからの当該オブジェクトへのアクセスの許可を決定するステップを含み、
このアクセスの許可を決定するステップにおいて、アクセスを許可する場合には前記サブジェクトが保持するケーパビリティリストのケーパビリティを変更させ、変更が拒否されたときはアクセスを許可しないステップを含む
ことを特徴とするアクセス制御方法。
【請求項２】
前記アクセスの許可を決定するための情報として、前記サブジェクトがアクセスしようとしているオブジェクトおよびそのアクセス種別と、前記オブジェクトのアクセス制御情報と、前記サブジェクトが保持するケーパビリティリストとを用い、
前記アクセス制御情報として、アクセス種別と、アクセスの許可に必要なケーパビリティの条件と、アクセスが許可されたときに強制されるケーパビリティとの組をエントリとするアクセス制御リストを含み、
前記アクセスの許可を決定するための情報に、当該アクセス種別におけるアクセス許可に必要なケーパビリティの条件を満たす当該サブジェクトが保持しているケーパビリティリスト中の有効なケーパビリティと当該オブジェクトのアクセス制御リスト中のエントリとの組合せが少なくとも１つは存在する場合にのみ当該オブジェクトへのアクセスが許可される請求項１記載のアクセス制御方法。
【請求項３】
前記ケーパビリティリスト中の任意のケーパビリティを前記サブジェクト自体が変更する場合には、ケーパビリティを廃棄するかあるいはケーパビリティを弱めることが限定的に認められる請求項１または２記載のアクセス制御方法。
【請求項４】
前記アクセスが許可されたときに強制されるケーパビリティの指定として、強制される前のケーパビリティリストを入力とし、強制された後のケーパビリティリストを出力するケーパビリティ強制関数を含む請求項１または２記載のアクセス制御方法。
【請求項５】
前記ケーパビリティリスト中のケーパビリティおよび前記アクセスの許可に必要なケーパビリティを、属性名と属性値とを組とした可変長のリストとして構成し、
前記アクセスの許可に必要なケーパビリティの条件を、ケーパビリティに含まれる属性名および属性値の条件の可変長のリストとして構成し、
前記ケーパビリティ強制関数を、ケーパビリティに強制的に追加もしくは上書きする属性名と属性値とを組とした可変長のリストとして構成し、もしくは、ケーパビリティに強制的に施される演算として定義し、
前記ケーパビリティを弱めるときには、ケーパビリティの権限を削除する、あるいは、ケーパビリティに属性名と属性値との組を追加することによって行なう
請求項２ないし４のいずれかに記載のアクセス制御方法。
【請求項６】
アクセスを許可する場合には前記サブジェクトが保持するケーパビリティリストのケーパビリティを変更させ、変更が拒否されたときはアクセスを許可しないステップは、
前記ケーパビリティに強制的に追加もしくは上書きする属性名および属性値に基づいて、
前記サブジェクトが保持する情報と、前記サブジェクトから指定された情報と、前記サブジェクトごとに固有の前記コンピュータシステムが保持する情報とから認証に必要な情報を収集するステップと、
このステップで収集された情報と、あらかじめ設定されたサブジェクトの正当性を検証するための情報とから前記サブジェクトの正当性を検証するステップと、
このステップでの検証結果に基づいて、属性名と属性値を前記ケーパビリティリスト中のケーパビリティに強制的に追加、もしくは、上書きするステップと
を含む請求項１または５記載のアクセス制御方法。
【請求項７】
コンピュータシステム用のアクセス制御装置であって、
前記コンピュータシステムおよび前記コンピュータシステム中のデータベースに存在するアクセス可能なあらゆるオブジェクトのひとつひとつに対するアクセス制御情報を記憶する手段と、
前記コンピュータシステムを使用中の特定のサブジェクトから特定のオブジェクトへのアクセス要求があると、当該アクセスの種別および前記記憶手段に格納されたアクセス制御情報ならびに当該サブジェクトが保持するケーパビリティリストを参照してオブジェクトへのアクセスの許可を決定する手段と、
当該サブジェクトのアクセスを許可する場合には当該サブジェクトが保持するケーパビリティリストのケーパビリティを変更させ、変更が拒否されるとアクセスを拒否するケーパビリティの強制手段と
を備える
ことを特徴とするアクセス制御装置。
【請求項８】
前記アクセスの許可を決定するための情報として、
前記サブジェクトがアクセスしようとしているオブジェクトおよびそのアクセス種別と、
前記オブジェクトのアクセス制御情報と、
前記サブジェクトが保持するケーパビリティリストと
を用い、
前記アクセス制御情報として、アクセス種別と、アクセスの許可に必要なケーパビリティの条件と、アクセスが許可されたときに強制されるケーパビリティと
の組をエントリとするアクセス制御リストを含み、
前記アクセスの許可を決定する手段は、前記アクセスの許可を決定するための情報に、当該アクセス種別におけるアクセスの許可に必要なケーパビリティの条件を満たす当該サブジェクトが保持しているケーパビリティリスト中の有効なケーパビリティと当該オブジェクトのアクセス制御リスト中のエントリとの組合せが少なくとも１つは存在する場合にのみ当該オブジェクトへのアクセスを許可する手段を含む
請求項７記載のアクセス制御装置。
【請求項９】
前記ケーパビリティリスト中の任意のケーパビリティを前記サブジェクト自体が変更する手段が設けられ、
この変更する手段は、ケーパビリティを廃棄する手段と、ケーパビリティを弱める手段とを備えた
請求項７または８記載のアクセス制御装置。
【請求項１０】
前記アクセスが許可されたときに強制されるケーパビリティの指定として、強制される前のケーパビリティリストを入力とし、強制された後のケーパビリティリストを出力するケーパビリティ強制関数を含む請求項７ないし９のいずれかに記載のアクセス制御装置。
【請求項１１】
前記ケーパビリティリスト中のケーパビリティおよび前記アクセスの許可に必要なケーパビリティを属性名と属性値とを組とした可変長のリストとして構成し、
前記アクセスの許可に必要なケーパビリティの条件をケーパビリティに含まれる属性名および属性値の条件の可変長のリストとして構成し、
前記ケーパビリティ強制関数を、ケーパビリティに強制的に追加もしくは上書きする属性名と属性値とを組とした可変長のリストとして構成し、もしくは、ケーパビリティに強制的に施される演算として定義し、
前記ケーパビリティを弱める手段は、ケーパビリティの権限を削除する手段と、ケーパビリティに属性名と属性値の組を追加する手段とを含む
請求項８ないし１０のいずれかに記載のアクセス制御装置。
【請求項１２】
前記ケーパビリティの強制手段に換えて、
前記ケーパビリティに強制的に追加もしくは上書きする属性名および属性値に基づいて、
前記サブジェクトが保持する情報と、前記サブジェクトから指定された情報と、前記サブジェクトごとに固有の前記コンピュータシステムが保持する情報とから認証に必要な情報を収集する手段と、
この収集する手段により収集された情報とあらかじめ設定されたサブジェクトの正当性を検証するための情報とから前記サブジェクトの正当性を検証する手段と
を備え、
前記ケーパビリティの強制手段は、この正当性を検証する手段による検証結果に基づいて属性名および属性値を前記ケーパビリティリスト中のケーパビリティに強制的に追加もしくは上書きする手段を含む
請求項７または１１記載のアクセス制御装置。
【請求項１３】
所定のハードウェアと、このハードウェアにインストールされた所定の基本ソフトウェアとを備えたコンピュータ装置に、さらにインストールすることによりそのコンピュータ装置に請求項１ないし６のいずれかに記載のアクセス制御方法を実行させるソフトウェアが記録された記録媒体。
【請求項１４】
所定のハードウェアと、このハードウェアにインストールされた所定の基本ソフトウェアとを備えたコンピュータ装置に、さらにインストールすることによりそのコンピュータ装置を請求項７ないし１２のいずれかに記載のアクセス制御装置に相応する装置として機能させるソフトウェアが記録された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムに関し、特にコンピュータシステムにおいてアクセス制御によってコンピュータシステム中の資源を保護し、コンピュータシステム中の資源へのアクセスを正確に制御する方法に関する。
【０００２】
【従来の技術】
コンピュータ技術および通信技術の進展に伴い、ますます多くのコンピュータがネットワークを介して接続されるようになり、組織やコミュニティに閉じていたコンピュータネットワークが、全地球的なネットワークへと変化してきている。しかしながら、セキュリティ面での考慮がなされていない中での普及となっており、コンピュータシステム中の情報の無許可アクセスや無許可の書き換え、コンピュータシステム上で提供されるサービスの妨害など、セキュリティ上の問題が多発している。
【０００３】
今日、コンピュータネットワーク上の大半のコンピュータは、ＵＮＩＸ、その互換オペレーティングシステム、もしくは、ＵＮＩＸから多大な影響を受けたオペレーティングシステムで運用されている。前記のセキュリティ上の問題が多発している原因はこれらのオペレーティングシステムがアクセス制御の観点からは大きな問題を抱えていることにある。
【０００４】
【発明が解決しようとする課題】
問題の第１は、単一の特権利用者（スーパユーザ）権限によってシステムを保護している点にある。スーパユーザ権限があれば、オペレーティングシステムで提供されるすべての資源が制御可能となり、読み取りや書き込みの禁止が設定された資源でも、物理的に不可能でない限り、その設定を解除し、読み取りや書き込みが可能である。このため、システム上に多数存在するスーパユーザ権限で動作するプログラムが乗っ取られると、システムに関する全ての権限を奪取されてしまう。
【０００５】
問題の第２は、認証がシステムへのログイン時に利用者についてのみ行われる点にある。プログラムを格納したファイルや実行中のプログラムを認証する機構がないため、何らかの手段でプログラムが置き換えられても発覚が遅れる危険性がある。
【０００６】
問題の第３は、システムに登録されていない利用者に対するアクセス制御が行えない点にある。このため、情報提供サービスプログラムなどでは、情報に対するアクセス制御を行うためのコードがアプリケーションプログラムに組み込まれている。
【０００７】
しかし、このようなアプリケーションプログラムが独自に行うアクセス制御についてはオペレーティングシステムが提供する保護機構を利用できないため、プログラム上の不具合による不正な情報アクセスの危険性は高まってしまう。また、アプリケーションごとにアクセス制御が提供されるため、アプリケーションごとにその設定方法が異なり、システム全体を統一して管理運用を行うことが困難となっている。
【０００８】
問題の第４は、全てのプログラムが可能な限りの最大の権限で動作する点にある。このため、本来は特定のファイルのみをアクセスするように設計されたプログラムでも、想定外のファイルをアクセスすることが常に可能な状態にあり、情報の不正な漏洩や書き換えがいつでも発生し得る。また、不正なプログラムがシステムにインストールされた場合には、そのプログラムを実行した利用者の最大の権限でそのプログラムが動作するため、前記と同様の状況が発生し得る。中間コードをインタプリタプログラム上で実行させる場合や、単にデータをデータ処理プログラムで処理する場合でも、インタプリタプログラムやデータ処理プログラム自体に不具合があり得るため、これらのプログラムが本来アクセスする資源以外へのアクセスを制限しなければ、同様の問題が発生する。
【０００９】
アクセス制御に関する公知の技術としては、Mamoru Maekawa,Arthur E.01dehoeft,Rodney R.0ldehoeft著,1987年 The Benjamin/Cummings Publishing Company,Inc.刊,“Operating System Advanced Concepts”(前川守監訳、1990年丸善株式会社刊,「オペレーティングシステムの先進的概念」)、第8章コンピュータセキュリティに関する箇所,および,Dorothy E.R.Denning著,1982年 Addison-Wesley Publishing Company,Inc.刊“Cryptography and Data Security”(上園忠弘他訳、1988年株式会社培風館刊,「暗号とデータセキュリティ」)、第４章アクセス制御に関する箇所にまとめられている。
【００１０】
これらの文献では、コンピュータシステムによって提供される対象物へ、誰がアクセスしようとしているか、に基づいてアクセスを制御する方法として、アクセス行列モデルが示されている。
【００１１】
前記アクセス行列モデルは、アクセス制御の対象となる物（オブジェクト）の集合０、オブジェクトヘアクセスする主体となる能動的な物（サブジェクト）の集合Ｓ、そして、サブジェクトからなる「行」とオブジェクトからなる「列」の組合せでできるアクセス行列Ａから構成される。アクセス行列Ａの要素Ａ［ｓ，ｏ］はサブジェクトｓのオブジェクトｏに対するアクセス権を表す。アクセス権とはオブジェクトに対して許可されているアクセス種別のことである。
【００１２】
コンピュータシステムにおいては、通例、オブジェクトにはファイル、メモリ領域、プロセスが含まれ、サブジェクトにはユーザ、プロセス、ドメインが含まれ、アクセス種別には読み取り、書き込み、実行が含まれる。ドメインとはプロセスが実行される保護環境のことである。このモデルでは、サブジェクトｓからオブジェクトｏへのアクセスが要求されたとき、アクセス権Ａ［ｓ，ｏ］を検索し、アクセス種別に対するアクセス権の設定によって、当該アクセスが常に許可されるか、あるいは常に許可されないかである。このアクセス行列モデルは、サブジェクト、オブジェクト、および、アクセス行列の全てが信頼できる場合に正しく働く。
【００１３】
前記アクセス行列は、一般には疎な行列であり、行列をそのまま実現するのは現実的ではない。前記文献には、実現方法として、三つ組表、ケーパビリティリスト、アクセスリスト、錠／鍵システムが示されている。
【００１４】
三つ組表は、Ａの空でない要素を（ｓ，ｏ，Ａ［ｓ，ｏ］）の形の表で管理する。
【００１５】
ケーパビリティリストは、サブジェクトｓがアクセスできるオブジェクトとそのアクセス権を（０，Ａ［ｓ，ｏ］）の形でサブジェクトごとに管理する。（ｏ，Ａ［ｓ，ｏ］）の値はケーパビリティと呼ばれ、別のサブジェクトにケーパビリティの複製を譲渡することで、アクセス権を譲渡することが可能となっている。
【００１６】
アクセスリストは、オブジェクトｏをアクセスできるサブジェクトとそのアクセス権を（ｓ，Ａ［ｓ，ｏ］）の形でオブジェクトごとに管理する。
【００１７】
ＵＮＩＸをはじめとする多くのオペレーティングシステムでは、退化させたアクセスリストによるアクセス制御を採用している。ＵＮＩＸにおける個々のファイルは３つの要素からなるアクセスリストを持っている。第１はファイル所有者のアクセス権、第２は所有者のグループのすべてのユーザに対するアクセス権、第３はその他のすべてのユーザに対するアクセス権を記述している。アクセス権には読み取り（ｒ）、書き込み（ｗ）、実行（ｘ）が含まれる。
【００１８】
錠／鍵システムは、オブジェクトｏにおいて錠Ｌ［ｉ］とオブジェクトｏに対するアクセス権ｒ［ｉ］のリスト（Ｌ［１］、ｒ［１］），（Ｌ［２］，ｒ［２］），…を管理し、サブジェクトｓがオブジェクトｏに対するアクセス権ｒ［ｉ］をもつ場合、すなわちＡ［ｓ，ｏ］＝ｒ［ｉ］のときに、錠Ｌ［ｉ］に対する鍵Ｋ［ｉ］をｓに与える。サブジェクトは鍵を（ｏ，Ｋ）の形で管理する。
【００１９】
いずれの方法も、当該アクセスが常に許可されるか、あるいは常に許可されないかであり、サブジェクト、オブジェクト、および、アクセス制御のためのデータ（三つ組表、ケーパビリティリスト、アクセスリスト、錠リスト／鍵リスト）が信頼できる場合に正しく働く。
【００２０】
アクセス制御に関する別の公知の概念としては、Discretionary Access Control(DAC),Mandatory Access Control(MAC),Role-based Access Control(RBAC)がある。
【００２１】
ＤＡＣは、サブジェクトもしくはサブジェクトが属するグループごとにオブジェクトへのアクセスを制御するもので、システム上の各利用者が自身の所有するオブジェクトに対するアクセス制御の設定を行うことができる。これは前記アクセス制御リストによって実現される。
【００２２】
ＭＡＣは、システム上の全てのアクセスを強制的に制御するもので、全てのサブジェクトと全てのオブジェクトには階層的な機密分類（例えば、無分類、秘密、極秘、機密等）と非階層的なカテゴリ（例えば、営業、研究開発、人事、経営等）の組合せによってあらわされる感度ラベル（ＭＡＣラベルと呼ばれる）が付与され、サブジェクトとオブジェクトのＭＡＣラベルに基づいてアクセス制御を行う。サブジェクトのＭＡＣラベルの機密分類がオブジェクトのＭＡＣラベルの機密分類と等しいかそれ以上、かつ、サブジェクトのＭＡＣラベルのカテゴリがオブジェクトのＭＡＣラベルのカテゴリの全てを含むとき、サブジェクトはオブジェクトを読み出すことができる（リードダウン）。
【００２３】
また、サブジェクトのＭＡＣラベルの機密分類がオブジェクトのＭＡＣラベルの機密分類と等しいかそれ以下、かつ、サブジェクトのＭＡＣラベルのカテゴリの全てがオブジェクトのＭＡＣラベルのカテゴリに含まれるとき、サブジェクトはオブジェクトに書き込むことができる（ライトアップ）。一般に、ＭＡＣは単体で用いられることはなく、ＤＡＣと併用される。
【００２４】
ＲＢＡＣは、複雑なアクセス制御ポリシをより簡単に記述するためのもので、サブジェクトごとに役割（ｒｏｌｅ）を割り当て、役割ごとにアクセス権を割り当てることで、アクセス制御を行う。サブジェクトはサブジェクトに割り当てられた役割の持つアクセス権を持つ、役割は包含関係を持たせることも可能である。アクセス制御そのものは、前記アクセス制御リストによって実現される。
【００２５】
前記のアクセス制御に関する問題の第１は、スーパユーザ権限を廃し、システム管理に関する権限を複数の権限に分散するといった実装上の工夫で、ある程度の効果は期待できる。しかし、一般に、少数の管理者によって管理されているコンピュータシステムがほとんどであり、単に複数の権限に分散しても、その効果には限界がある。例えば、信頼のできる回線を経由してシステムにログインしているか否か、システム管理者が正しいログイン手続きでシステムにログインしているか否か、不正に置き換えられたプログラムからシステムを制御しようとしていないかどうか、などの実行コンテキストを活用しなければ、システム管理者の権限を順次奪取し、最終的にシステムに関する全ての権限を奪取される危険性がある。実行コンテキストの活用は公知の技術には含まれない。
【００２６】
前記のアクセス制御に関する問題の第２については、定期的にファイルシステムやメモリ領域を走査し、別に安全に保管されたチェックサム等によって検査する手法が公知の技術として用いられている。しかし、検査プログラムの置き換え、走査間隔にかからない置き換え、ログファイルや一時的ファイルの格納領域の存在など、プログラムやファイルの置き換えが発覚しないこともあり得る。
【００２７】
前記のアクセス制御に関する問題の第３は、公知の技術である前記アクセス行列モデルやＭＡＣでは解決できない。なぜなら、アクセス行列モデルでは、サブジェクト、オブジェクト、および、アクセス行列の全てが信頼できる場合にのみ正しく働き、システム管理者以外がサブジェクトの集合Ｓに自由にサブジェクトを登録したり、アクセス種別を自由に追加することは許されないからである。ＭＡＣについても同様である。
【００２８】
前記のアクセス制御に関する問題の第４について、退化させた形ではないアクセスリストやケーパビリティリストによって解決するためには、サブジェクトやオブジェクトを詳細に分類し、それによってアクセスリストの設定や、ケーパビリティリストの設定およびケーパビリティの譲渡の制御を行う必要がある。例えば、利用者ｕがプログラムｐを動作させる場合には、Ａ［ｕ，ｏ］とＡ［ｐ，ｏ］を管理するだけではなく、Ａ［ｕ∧ｐ，ｏ］をも管理する必要がある。このため、アクセスを許す全ての組合せについてアクセス制御の設定を行うためには、膨大な記述が必要となり、現実的ではない。
【００２９】
また、サブジェクトやアクセス種別をシステム管理者以外が自由に追加することは許されないため、任意のサブジェクトに対して、権限を制限することが難しくなっている。ＭＡＣを併用したとしても、不正なプログラムがシステムにインストールされることを防止することはできず、想定外のファイルがアクセスされ得ることにかわりはない。このため、アプリケーションやデータが信頼できない局面を積極的には取り扱うことができない。
【００３０】
特開平９−３１９６５９号公報に開示されている技術では、ＭＡＣ領域を重複しない領域に分割することで、前記問題の第４をＭＡＣを利用して解決するものである。しかし、前記問題の第１、第３を解決するものではない。
【００３１】
米国特許５、８６４、６８３は、システム内に完全に分離された保護ドメインを置き、その保護ドメイン内にあるサブジェクトからアクセス可能なオブジェクトの集合を定義することで、前記問題の第１と第４を解決するものである。しかし、前記問題の第２、第３を解決するものではない。
【００３２】
本発明は、このような背景に行なわれたものであって、コンピュータシステムにおけるアクセス制御おいて、アクセス対象であるオブジェクトおよびアクセス主体であるサブジェクトを詳細に分類し、その分類に基づいて特有の制限を強制的に加えることを可能とするアクセス制御方法およびアクセス制御装置を提供することを目的とする。本発明は、単一の特権利用者を排除し、プログラムの乗っ取りによる被害を最小限にとどめ、もしくは、プログラムの乗っ取りを排除し、システム全体で統一したアクセス制御を提供することでコンピュータシステムのセキュリティを高めることができるアクセス制御方法およびアクセス制御装置を提供することを目的とする。
【００３３】
【課題を解決するための手段】
本発明の方法は、アクセス主体であるサブジェクトはサブジェクトの権限をあらわすケーパビリティリストを保持し、アクセス対象であるオブジェクトはオブジェクトのアクセスを許可するために必要なケーパビリティの条件をあらわすアクセス制御リストを保持し、ケーパビリティリスト中のケーパビリティの少なくとも１つが、アクセス制御リスト中のアクセス許可に必要なケーパビリティの条件の少なくとも１つを満たすとき、オブジェクトヘのアクセスが許可され、オブジェクトヘのアクセスが許可された場合に、オブジェクトごとに定義されたケーパビリティ強制の指定に基づいて、サブジェクトが持つケーパビリティを強制的に変更することで、サブジェクトからアクセス可能な権限の範囲を制限することを含む。
【００３４】
本発明によれば、サブジェクトは、サブジェクト自体が保持するケーパビリティを廃棄することと、ケーパビリティの権限を弱めることのみが可能であるため、サブジェクトはアクセスしようとしているオブジェクトによって強制されたケーパビリティを利用せざるを得ない。サブジェクトの権限は、アクセスしたオブジェクトによって制限を受けて動的に変化し、オブジェクトごとにアクセス可能な範囲を制限することができる。
【００３５】
加えて、ケーパビリティとして、属性（属性名と属性値との組）の可変長リストを用い、ケーパビリティ強制の指定として、アクセス権の削除の指定と、属性の追加もしくは上書きの指定を用いる。これによって、ケーパビリティ強制は属性リストの操作に置き換えられ、属性リストを観察することで、サブジェクトの権限の由来をトレースすることができる。
【００３６】
さらに、ケーパビリティ強制時に、サブジェクトに関する情報に基づいてサブジェクトを認証し、その認証結果に基づいてケーパビリティ強制を行う。属性名に対する認証サーバを置くことで、その属性名を強制するときにサブジェクトの認証が行われるため、認証をするかどうかの選択や認証アルゴリズムの選択がシステム管理のポリシによって自由に行うことができる。
【００３７】
ケーパビリティ中の属性としては、何らかの制限があるわけではなく、利用者、アプリケーション種別、情報の起源（信頼のおけるサイト／信頼のおけないサイト／ローカルなど）、セキュリティレベルなどだけではなく、ＣＰＵ使用率、ネットワーク帯域使用率、子プロセス数の最大数など、オペレーティングシステム上で資源として扱えるものやアクセスを制限するための判断に利用できるものは、ケーパビリティ中の属性として利用できる。
【００３８】
また、アクセス制御リスト中の要素としては、アクセス許可に必要なケーパビリティだけではなく、アクセス許可に必要なケーパビリティの属性の条件も含まれ、オブジェクトをアクセスするためにはある属性値がある値より大きい、などといった表現も利用できる。
【００３９】
そして、ケーパビリティ強制の記述としては、属性を追加するだけではなく、オブジェクトをアクセスすると、ある属性値が１ずつ減じられる、といった強制もできる。
【００４０】
すなわち、本発明の第一の観点は、コンピュータシステム用のアクセス制御方法であって、本発明の特徴とするところは、前記コンピュータシステムおよび前記コンピュータシステム中のデータベースに存在するアクセス可能なあらゆるオブジェクトのひとつひとつに対するアクセス制御情報を記憶する第一のステップと、前記コンピュータシステムを使用中の特定のサブジェクトから特定のオブジェクトへのアクセス許可を決定する第二のステップと、この第二のステップによって決定された前記アクセス許可の範囲内に限定し、前記サブジェクトから前記オブジェクトへのアクセス要求を受理する第三のステップと、前記サブジェクトが保持するケーパビリティリストに対して前記オブジェクトヘの前記アクセス要求におけるケーパビリティの強制を行う第四のステップとを備えたところにある。
【００４１】
前記アクセス許可を決定するための情報として、前記サブジェクトがアクセスしようとしているオブジェクトおよびそのアクセス種別と、前記オブジェクトのアクセス制御情報と、前記サブジェクトが保持するケーパビリティリストとを用い、前記アクセス制御情報として、アクセス種別と、アクセス許可に必要なケーパビリティの条件と、アクセスが許可されたときに強制されるケーパビリティとの組をエントリとするアクセス制御リストを含み、前記アクセス許可を決定するための情報に、当該アクセス種別におけるアクセス許可に必要なケーパビリティの条件を満たす当該サブジェクトが保持しているケーパビリティリスト中の有効なケーパビリティと当該オブジェクトのアクセス制御リスト中のエントリとの組合せが少なくとも１つは存在する場合にのみ当該オブジェクトのアクセスが許可されることが望ましい。
【００４２】
前記ケーパビリティリスト中の任意のケーパビリティを前記サブジェクト自体が変更する場合には、ケーパビリティを廃棄するかあるいはケーパビリティを弱めることが限定的に認められることが望ましい。
【００４３】
前記アクセスが許可されたときに強制されるケーパビリティの指定として、強制される前のケーパビリティリストを入力とし、強制された後のケーパビリティリストを出力するケーパビリティ強制関数を含むことが望ましい。
【００４４】
前記ケーパビリティリスト中のケーパビリティおよび前記アクセス許可に必要なケーパビリティを、属性名と属性値とを組とした可変長のリストとして構成し、前記アクセス許可に必要なケーパビリティの条件を、ケーパビリティに含まれる属性名および属性値の条件の可変長のリストとして構成し、前記ケーパビリティ強制関数を、ケーパビリティに強制的に追加もしくは上書きする属性名と属性値とを組とした可変長のリストとして構成し、もしくは、ケーパビリティに強制的に施される演算として定義し、前記ケーパビリティを弱めるときには、ケーパビリティの権限を削除する、あるいは、ケーパビリティに属性名と属性値との組を追加することによって行なうことが望ましい。
【００４５】
前記第四のステップに換えて、前記ケーパビリティに強制的に追加もしくは上書きする属性名および属性値に基づいて、前記サブジェクトが保持する情報と、前記サブジェクトから指定された情報と、前記サブジェクトごとに固有の前記コンピュータシステムが保持する情報とから認証に必要な情報を収集する第五のステップと、この第五のステップで収集された情報と、あらかじめ設定されたサブジェクトの正当性を検証するための情報とから前記サブジェクトの正当性を検証する第六のステップと、この第六のステップでの検証結果に基づいて、属性名および属性値を前記ケーパビリティリスト中のケーパビリティに強制的に追加、もしくは、上書きする第七のステップとを備えることもできる。
【００４６】
本発明の第二の観点は、コンピュータシステム用のアクセス制御装置であって、本発明の特徴とするところは、前記コンピュータシステムおよび前記コンピュータシステム中のデータベースに存在するアクセス可能なあらゆるオブジェクトのひとつひとつに対するアクセス制御情報を記憶する手段と、前記コンピュータシステムを使用中の特定のサブジェクトから特定のオブジェクトへのアクセス許可を決定する手段と、このアクセス許可を決定する手段によって決定された前記アクセス許可の範囲内に限定し、前記サブジェクトから前記オブジェクトへのアクセス要求を受理する手段と、前記サブジェクトが保持するケーパビリティリストに対して前記オブジェクトヘの前記アクセス要求におけるケーパビリティの強制を行う手段とを備えるところにある。
【００４７】
前記アクセス許可を決定するための情報として、前記サブジェクトがアクセスしようとしているオブジェクトおよびそのアクセス種別と、前記オブジェクトのアクセス制御情報と、前記サブジェクトが保持するケーパビリティリストとを用い、前記アクセス制御情報として、アクセス種別と、アクセス許可に必要なケーパビリティの条件と、アクセスが許可されたときに強制されるケーパビリティとの組をエントリとするアクセス制御リストを含み、前記アクセス許可を決定する手段は、前記アクセス許可を決定するための情報に、当該アクセス種別におけるアクセス許可に必要なケーパビリティの条件を満たす当該サブジェクトが保持しているケーパビリティリスト中の有効なケーパビリティと当該オブジェクトのアクセス制御リスト中のエントリとの組合せが少なくとも１つは存在する場合にのみ当該オブジェクトのアクセスを許可する手段を含むことが望ましい。
【００４８】
前記ケーパビリティリスト中の任意のケーパビリティを前記サブジェクト自体が変更する手段が設けられ、この変更する手段は、ケーパビリティを廃棄する手段と、ケーパビリティを弱める手段とを備えることが望ましい。
【００４９】
前記アクセスが許可されたときに強制されるケーパビリティの指定として、強制される前のケーパビリティリストを入力とし、強制された後のケーパビリティリストを出力するケーパビリティ強制関数を含むことが望ましい。
【００５０】
前記ケーパビリティリスト中のケーパビリティおよび前記アクセス許可に必要なケーパビリティを属性名と属性値とを組とした可変長のリストとして構成し、前記アクセス許可に必要なケーパビリティの条件をケーパビリティに含まれる属性名と属性値の条件の可変長のリストとして構成し、前記ケーパビリティ強制関数を、ケーパビリティに強制的に追加もしくは上書きする属性名と属性値とを組とした可変長のリストとして構成し、もしくは、ケーパビリティに強制的に施される演算として定義し、前記ケーパビリティを弱める手段は、ケーパビリティの権限を削除する手段と、ケーパビリティに属性名と属性値との組を追加する手段とを含むことが望ましい。
【００５１】
あるいは、前記ケーパビリティの強制を行なう手段に換えて、前記ケーパビリティに強制的に追加もしくは上書きする属性名および属性値に基づいて、前記サブジェクトが保持する情報と、前記サブジェクトから指定された情報と、前記サブジェクトごとに固有の前記コンピュータシステムが保持する情報とから認証に必要な情報を収集する手段と、この収集する手段により収集された情報とあらかじめ設定されたサブジェクトの正当性を検証するための情報とから前記サブジェクトの正当性を検証する手段とを備え、前記ケーパビリティを強制する手段は、この正当性を検証する手段による検証結果に基づいて属性名および属性値を前記ケーパビリティリスト中のケーパビリティに強制的に追加もしくは上書きする手段を含む構成とすることもできる。
【００５２】
本発明の第三の観点は、所定のハードウェアと、このハードウェアにインストールされた所定の基本ソフトウェアとを備えたコンピュータ装置に、さらにインストールすることによりそのコンピュータ装置に本発明のアクセス制御方法を実行させるソフトウェアあるいはそのコンピュータ装置を本発明のアクセス制御装置に相応する装置とするソフトウェアが記録された記録媒体である。
【００５３】
【発明の実施の形態】
本発明実施例のアクセス制御装置の構成を図１、図３、図６を参照して説明する。図１は本発明実施例のシステム全体のブロック構成図である。図３は本発明実施例のアクセス制御部のブロック構成図である。図６は本発明実施例の認証サーバを用いるアクセス制御部のブロック構成図である。
【００５４】
本発明は、図１に示すように、コンピュータシステム用のアクセス制御装置であって、本発明の特徴とするところは、図３および図６に示すように、前記コンピュータシステムおよび前記コンピュータシステム中のデータベースに存在するアクセス可能なあらゆるオブジェクトのひとつひとつに対するアクセス制御情報を記憶するＡＣＬレポジトリ３４と、前記コンピュータシステムを使用中の特定のサブジェクトから特定のオブジェクトへのアクセス許可を決定するアクセス権限検査部３６と、このアクセス権限検査部３６によって決定された前記アクセス許可の範囲内に限定し、前記サブジェクトから前記オブジェクトへのアクセス要求を受理する要求受理部５と、前記サブジェクトが保持するケーパビリティリストに対して前記オブジェクトヘの前記アクセス要求におけるケーパビリティの強制を行うケーパビリティ強制部３８とを備えたところにある。
【００５５】
前記アクセス許可を決定するための情報として、前記サブジェクトがアクセスしようとしているオブジェクトおよびそのアクセス種別と、前記オブジェクトのアクセス制御情報と、前記サブジェクトが保持するケーパビリティリストとを用い、前記アクセス制御情報として、アクセス種別と、アクセス許可に必要なケーパビリティの条件と、アクセスが許可されたときに強制されるケーパビリティとの組をエントリとするアクセス制御リストを含み、アクセス権限検査部３６は、前記アクセス許可を決定するための情報に、当該アクセス種別におけるアクセス許可に必要なケーパビリティの条件を満たす当該サブジェクトが保持しているケーパビリティリスト中の有効なケーパビリティと当該オブジェクトのアクセス制御リスト中のエントリとの組合せが少なくとも１つは存在する場合にのみ当該オブジェクトのアクセスを許可する。
【００５６】
ケーパビリティリスト保持部４は、前記ケーパビリティリスト中の任意のケーパビリティを前記サブジェクト自体の要求により変更することができる。この変更は、ケーパビリティを廃棄する、あるいは、ケーパビリティを弱めることにより行なう。
【００５７】
前記アクセスが許可されたときに強制されるケーパビリティの指定として、強制される前のケーパビリティリストを入力とし、強制された後のケーパビリティリストを出力するケーパビリティ強制関数を含む。
【００５８】
前記ケーパビリティリスト中のケーパビリティおよび前記アクセス許可に必要なケーパビリティを属性名と属性値とを組とした可変長のリストとして構成し、前記アクセス許可に必要なケーパビリティの条件をケーパビリティに含まれる属性名および属性値の条件の可変長のリストとして構成し、前記ケーパビリティ強制関数を、ケーパビリティに強制的に追加もしくは上書きする属性名と属性値とを組とした可変長のリストとして構成し、もしくは、ケーパビリティに強制的に施される演算として定義し、ケーパビリティ強制部３８がケーパビリティを弱めるときには、ケーパビリティの権限を削除する、あるいは、ケーパビリティに属性名と属性値との組を追加することにより行なう。
【００５９】
また、図６では、図３に示すケーパビリティ強制部３８に換えて、前記ケーパビリティに強制的に追加もしくは上書きする属性名および属性値に基づいて、前記サブジェクトが保持する情報と、前記サブジェクトから指定された情報と、前記サブジェクトごとに固有の前記コンピュータシステムが保持する情報とから認証に必要な情報を収集する認証情報収集部４２と、この認証情報収集部４２により収集された情報とあらかじめ設定されたサブジェクトの正当性を検証するための情報とから前記サブジェクトの正当性を検証する認証サーバ２とを備え、ケーパビリティ強制部４０は、この認証サーバ２による検証結果に基づいて属性名および属性値を前記ケーパビリティリスト中のケーパビリティに強制的に追加もしくは上書きする。
【００６０】
本発明実施例のアクセス制御装置は、所定のハードウェアと、このハードウェアにインストールされた所定の基本ソフトウェアとを備えたコンピュータ装置に、さらにインストールすることによりそのコンピュータ装置を本発明のアクセス制御装置に相応する装置とするソフトウェアが記録された記録媒体によりコンピュータ装置に当該ソフトウェアをインストールすることにより実現する。これにより、当該コンピュータ装置は、本発明のアクセス制御方法を実行する。
【００６１】
以下では、本発明実施例をさらに詳細に説明する。
【００６２】
図１は本発明の実施の形態を示したものである。本形態では、本発明によるアクセス制御方法はオペレーティングシステム１３内に実現されている。プロセス１から発行されるすべてのアクセス要求６は、アクセス制御部３にて本発明によるアクセス制御がなされ、ここで許可されたアクセス要求８のみがオペレーティングシステムの残りの部分で処理される。本形態によれば、アクセス制御を実現する部分の独立性が強まり、本発明によるアクセス制御方法を実現するためのオペレーティングシステムの改造を少なく済ませることができる。
【００６３】
なお、本出願では基盤となるオペレーティングシステムとしてＵＮＩＸおよびＵＮＩＸ互換のオペレーティングシステムでの実施の形態を示しているが、本発明の適用可能な範囲はＵＮＩＸおよびＵＮＩＸ互換のオペレーティングシステムに限られるものではない。また、シングルプロセサシステム、マルチプロセサシステム、分散コンピューティングシステムなど、ハードウェアアーキテクチャに依存するものでもない。
【００６４】
本形態においては、サブジェクト（アクセス主体）はプロセス（オペレーティングシステム上で動作中のプログラムで、オペレーティングシステムが提供する資源を割り当てる単位）であり、オブジェクト（アクセス対象）はファイルやそれ以外のオペレーティングシステムが提供する資源である。ケーパビリティリスト保持部４はシステム上の保護されたメモリ領域上に置かれる。
【００６５】
プロセス１は、自プロセスが保持するケーパビリティリスト保持部４中のどのケーパビリティかを指し示すことはできるが、ケーパビリティの内容を直接アクセスしたり、変更したりすることはできない。プロセス１は、自プロセスが保持しているケーパビリティにて、ケーパビリティの複製を他のプロセスに渡すこと（ただし、ケーパビリティ中の権限で許されている場合に限られる）と、ケーパビリティを削除することと、ケーパビリティを弱めることが可能である。
【００６６】
プロセスの複製が生成された場合、すなわち、子プロセスが生成された場合、親プロセスのケーパビリティリストがコピーされて子プロセスに引き継がれる。新たなプログラムが読み込まれ起動される場合には、ケーパビリティリスト中の個々のケーパビリティの持つ権限に依存して、ケーパビリティが引き継がれるか否かが決まる。
【００６７】
（ケーパビリティ）
図２はケーパビリティの実施例である。ケーパビリティ中の権限２２の例を以下に示す。
【００６８】
ｄ（ｄｕｐｌｉｃａｔｅ／ｍｏｄｉｆｙ）：ケーパビリティの複製を他のプロセスに渡したり、ケーパビリティの権限フィールドから任意の権限を取り除いたり、新たなプログラムを起動したときにケーパビリティを引き継ぐための権限。ａ（ａｌｌｏｃａｔｅ）：資源割り当て権限。ケーパビリティ中にこの権限が設定されていない場合には、資源の割り当てが必要な要求（ファイルの生成、ファイルサイズの追加書き込み、プロセスの生成など）は許可されない。
ｒ（ｒｅａｄ）：読み取り権限。ファイルなどからデータを読み取る権限。
ｗ（ｗｒｉｔｅ）：書き込み権限。ファイルなどへデータを（上書きで）書き込む権限。
ｘ（ｅｘｅｃｕｔｅ）：実行権限。ファイルをプログラムとして実行する権限、ディレクトリを検索する権限、ソケット（通信の端点）を作成する権限。
【００６９】
ケーパビリティ中のｃｉｄ２３のもっとも簡単な例としては、ｕｉｄ（利用者識別子）、ｇｉｄ（利用者グループの識別子）がある。ｃｉｄ中では、ｕｉｄはそのまま、ｇｉｄはｃｉｄ＝−（ｇｉｄ＋１）として扱う。ケーパビリティはオペレーティングシステムによって保護されているので、暗号化をする必要はない。より一般的な例としては、システム内で一意な数を生成し、特定のオブジェクトへの権限（の集合）にその数を割り当てる方法もある。
【００７０】
本形態においては、ケーパビリティの表記として、権限を表す文字列とｕｉｄもしくはｇｉｄの値を［］で囲んだものを用いる。
【００７１】
例えば、ケーパビリティリストとして
［ｄａｒｗｘ  ｕｉｄ＝２０１〕〔ｄａｒｗｘ  ｇｉｄ＝３１］
を保持するプロセスは、ｕｉｄ＝２０１、ｇｉｄ＝３１としての全ての権限を行使することができる。
［−−ｒ−−  ｕｉｄ＝９〕［−ａ−ｗ−  ｕｉｄ＝２０１］［−ａ−ｗ−  ｇｉｄ＝３１］
を保持するプロセスは、ｕｉｄ＝９としては読み取り権限のみを、ｕｉｄ＝２０１、ｇｉｄ＝３１としては資源割り当て権限と書き込み権限のみを、行使することができる。このプロセスは実行権限を保持しないため、新たなプログラムを起動することはできない。
［−ａｒ−ｘ  ｕｉｄ＝９］［−ａｒ−ｘ  ｇｉｄ＝９〕
を保持するプロセスは、ｕｉｄ＝９、ｇｉｄ＝９としては資源割り当て権限、読み取り権限、実行権限を行使することができる。このプロセスはケーパビリティの複製権限を保持しないため、このプロセス内で新たなプログラムを起動したとしても、ケーパビリティリストが空のプロセスとなる。このようなケーパビリティリストを持ったプロセスを乗っ取ったとしても、何らかの有益な情報を得るプログラムを起動することはできないであろう。すなわち、必要最小限の権限に設定することで、プログラムが乗っ取られたとしても、被害を最小限に食い止めることが可能となる。後述するケーパビリティ強制はこのようなケーパビリティリストの設定を、強制的に実施するものである、
【００７２】
（アクセス制御の処理の流れ）
以下では図３に沿ってアクセス制御の流れを記述する。はじめにＡＣＬレポジトリ３４の設定を行う。ＡＣＬレポジトリ３４にはオブジェクトごとのアクセス制御リストが格納されており、アクセス制御リストはオブジェクト識別子３１によって検索することができる。アクセス制御リストはシステムが動作中に変更を行うことも許可される。このため、アクセス制御リスト自体もオブジェクトとして扱われる。
【００７３】
オペレーティングシステム１３がプロセス１からのアクセス要求６を受け付けると、アクセス対象となるオブジェクトをオブジェクト識別子３１に変換し、ＡＣＬレポジトリ３４を検索し、オブジェクトのアクセス制御リスト３５を取り出す。引き続き、アクセス制御リスト３５と、アクセス種別３２と、プロセスが保持するケーパビリティリスト７との３つの情報から、オブジェクトへのアクセスを許可すべきかどうかを決定する（３６）。
【００７４】
オペレーティングシステムがオブジェクトへのアクセスを許可する場合には、アクセス制御リスト中のケーパピリティ強制関数のリスト３７を用いて、プロセスが保持するケーパビリティリスト７から強制されたケーパビリティリスト１０を求め（４０）、プロセスのケーパビリティリストとする。
【００７５】
（アクセス制御リストとケーパビリティ強制）
図４はアクセス制御リストのエントリの例である。アクセス制御リストのエントリ中のアクセス権６２の例を以下に示す。
【００７６】
ｍ（ｍｏｄｉｆｙ）：アクセス制御リストを変更できる権限。
ａ（ａｌｌｏｃａｔｅ）：資源割り当て権限。アクセス制御リストにこの権限がない場合には、資源の割り当てが必要な要求（ディレクトリヘのファイルの登録、ファイルサイズの拡大、プロセスの生成など）は拒絶される。
ｒ（ｒｅａｄ）：読み取り権限。ファイルなどからデータを読み取る権限。
ｗ（ｗｒｉｔｅ）：書き込み権限。ファイルなどへデータを書き込む権限。
ｘ（ｅｘｅｃｕｔｅ）：実行権限。ファイルをプログラムとして実行する権限、ディレクトリを検索する権限、ソケット（通信の端点）を作成する権限。
【００７７】
アクセス制御リストを変更できる権限を有効とするためには、少なくともケーパビリティ中の権限に全ての権限を含んでいなければならない。それ以外の資源割り当て権限、読み取り権限、書き込み権限、実行権限を有効とするためには、少なくともケーパビリティ中の権限と対応するアクセス制御リストでのアクセス権の両者が設定されていなければならない。また、新たにファイルなどのオブジェクトを生成した場合に設定されるアクセス制御リストでのアクセス権は、対応するケーパビリティ中の権限を超えることはできない。
【００７８】
アクセス許可に必要なケーパビリティの条件６３は、ケーパビリティ中の権限の条件やｃｉｄの条件を論理式として記述する。多くの場合、アクセス種別を表すアクセス権からケーパビリティ中の権限の条件は一意に決定できるため、ケーパビリティ中の権限の条件は省略できる。
【００７９】
アクセス制御リスト中のケーパビリティ強制関数６４の例を以下に示す。
【００８０】
ｆ（ｆｌｕｓｈ）：ケーパビリティリストを空にする。
ｉ（ｉｎｓｅｒｔ）：ケーパビリティリストに引数のケーパビリティを追加する。
ｍ（ｍｏｄｉｆｙ）：引数のケーパビリティのｃｉｄと同じｃｉｄを持つケーパビリティリスト中のケーパビリティについて、権限の論理積をとる。
，（ｃｏｎｃａｔｅｎａｔｅ）：関数を前から順に適用する。
【００８１】
本形態においては、アクセス制御リストの表記として、アクセス権を表す文字列、ｕｉｄもしくはｇｉｄの値、：に引き続いてケーパビリティ強制関数を記述したものを用いる。
【００８２】
（アクセス制御リストの例）
ｍａｒｗ−  ｕｉｄ＝２０１
が指定されているオブジェクトは、ｕｉｄ＝＝２０１を満たすケーパビリティを持つプロセスによってアクセス可能であり、アクセス制御リストの変更、資源の割り当て、読み取り、書き込みが可能である。
【００８３】
ｍａｒｗｘ  ｕｉｄ＝１０
が指定されているディレクトリは、ｕｉｄ＝１０を満たすケーパビリティを持つプロセスによってアクセス可能であり、アクセス制御リストの変更、ファイルの登録、読み取り、ファイル名の変更やファイルの削除、ディレクトリの検索が可能である。
−ａｒ−ｘ  ｕｉｄ＝２０１
が指定されているディレクトリは、ｕｉｄ＝２０１を満たすケーパビリティを持つプロセスによってアクセス可能であり、ファイルの登録、読み取り、ファイル名の変更、ディレクトリの検索が可能である。
−−−ｘ  ａｎｙ  ：［−ａ−ｗ−  ａｎｙ］，ｉ［−−ｒ−−  ｕｉｄ＝９］
が指定されているオブジェクトは、任意の実行権限を含むケーパビリティを持つプロセスによって実行可能であり、このオブジェクトを実行すると、プロセスが持つ全てのケーパビリティは、その権限と−ａ−ｗ−の論理積がとられたものに修正され、ｕｉｄ＝９の読み取り権限のケーパビリティがケーパビリティリストに追加される。プロセスの持つケーパビリティリストが
［ｄａｒｗｘ  ｕｉｄ＝２０１］［ｄａｒｗｘ  ｇｉｄ＝３１］
であるならば、ケーパビリティ強制によって、
［−−ｒ−−  ｕｉｄ＝９〕［−ａ−ｗ−  ｕｉｄ＝２０１］［−ａ−ｗ−  ｇｉｄ＝３１］
となる。
【００８４】
（属性によるケーパビリティ）
本発明では、ケーパビリティの表現として属性（属性名と属性値との組）の可変長のリストを用いる方法も提案している。これは、ｃｉｄのフィールド２３を属性リストに置き換えることで実現できる。例を図５に示す。
【００８５】
属性としてどのようなものを用いるかには制限はなく、アクセスを制限するための判断に利用できるものは属性として利用できる。また、システムが提供する属性だけではなく、利相者が自由に定義できる属性を利用することも可能である。属性の例を以下に示す。
利用者識別子（ｕｉｄ）：システムの利用者ごとに割り当てられた識別番号。
利用者グループ識別子（ｇｉｄ）：システムの利用者グループごとに割り当てられた識別番号。
プログラム識別子（ｐｒｏｇｉｄ）：プログラムごとに割り当てられた識別番号。
アプリケーション識別子（ａｐｐｌｉｄ）：アプリケーションの種類（アプリケーショングループ）ごとに割り当てられた識別番号。
情報起源識別子（ｏｒｉｇｉｄ）：情報の起源ごとに割り当てられた識別番号。信頼のおけるサイト／信頼のおけないサイト／ローカルなどの区別を行う。表記上は情報起源名（ｏｒｉｇ）としても扱う。
セキュリティレベル（ｓｌ）：機密分類を表し、一般（ｕｎｃｌａｓｓｉｆｉｅｄ）、秘密（ｃｏｎｆｉｄｅｎｔｉａｌ）、極秘（ｓｅｃｒｅｔ）、機密（ｔｏｐｓｅｃｒｅｔ）などを考えることができる。
ＣＰＵ使用率（ｐｃｐｕ）：プロセスに対して予約されたＣＰＶ使用率。
ネットワーク帯域使用率（ｐｎｗｂ）：プロセスに対して予約されたネットワーク帯域幅の使用率。
子プロセス数の最大数（ｎｐｒｏｃ）：プロセスが保持できる子プロセスの最大値。
同時利用最大数（ｎｏｐｅｎ）：ファイルを同時に利用できるプロセス数の最大値。
ファイル最大サイズ（ｆｓｉｚｅ）：生成可能なファイルの最大値。
【００８６】
属性によるケーパビリティの表記としては、権限を表す文字列に引き続き、「属性名＝属性値のリスト」を［］で囲んだものを用いる。
【００８７】
（属性によるケーパビリティを用いた場合のアクセス制御）
ケーパビリティから１つ以上の権限を削除したり、ケーパビリティへ１つ以上の属性を追加することは、ケーパビリティを相対的に弱めるものと考える。そこで、「ケーパビリティＣ１がケーパビリティＣ２より弱い」ということを「Ｃ１≠Ｃ２、かつ、Ｃ２に含まれる全ての属性をＣ１が含み、かつ、Ｃ１に含まれる全ての権限をＣ２が含む」と定義する。例えば、ケーパビリティ［ｒｉｇｈｔｓｘ，ｙ，ｚ］は［ｒｉｇｈｔｓ  ｘ，ｙ］を弱めたものであり、もし、あるオブジェクトが［ｒｉｇｈｔｓ  ｘ，ｙ，ｚ］でアクセス可能であるなら、［ｒｉｇｈｔｓ  ｘ，ｙ］でも同様にアクセス可能とする。言い換えると、［ｒｉｇｈｔｓ  ｘ，ｙ，ｚ］でアクセス可能なオブジェクトの集合は、［ｒｉｇｈｔｓ  ｘ，ｙ］の部分集合となっている。しかし、このようなアクセスを許可した場合に、ケーパビリティの強制の効果が消えてしまうため、［ｒｉｇｈｔｓ  ｘ，ｙ］でアクセスした場合には、自動的にｚが強制されるものとする。これを「暗黙の強制」と呼ぶ。
【００８８】
属性によるケーパビリティを用いた場合のケーパビリティ強制関数の例を以下に示す。
ｆ（ｆｌｕｓｈ）：ケーパビリティリストを空にする。
ｉ（ｉｎｓｅｒｔ）：ケーパビリティリストに引数のケーパビリティを追加する。
ｍ（ｍｏｄｉｆｙ）：ケーパビリティリスト中の各々のケーパビリティについて、引数のケーパビリティの権限との論理積をとり、引数のケーパビリティの属性を追加する。すでに同じ属性名があるときはその属性名の属性値が置き換えられる。
，（ｃｏｎｃａｔｅｎａｔｅ）：関数を前から順に適用する。
【００８９】
アクセス許可に必要なケーパビリティの条件としては、ケーパビリティ中の権限の条件や属性に関する条件を論理式として記述する。多くの場合には、アクセス種別を表すアクセス権からケーパビリティ中の権限の条件は一意に決定できるため、ケーパビリティ中の権限の条件は省略できる。
【００９０】
（属性の認証を伴うアクセス制御の処理の流れ）
本発明では、ケーパビリティの強制（３８）を行う際に、サブジェクトに関する情報に基づいてサブジェクトを認証し、その認証結果に基づいてケーパビリティ強制を行う方法も提案している。以下では図６に沿ってアクセス制御の流れを記述する。
【００９１】
はじめにＡＣＬレポジトリ３４の設定を行う。ＡＣＬレポジトリ３４にはオブジェクトごとのアクセス制御リストが格納されており、アクセス制御リストはオブジェクト識別子３１によって検索することができる。アクセス制御リストはシステムが動作中に変更を行うことも許可される。このため、アクセス制御リスト自体もオブジェクトとして扱われる。
【００９２】
オペレーティングシステム１３がプロセス１からのアクセス要求６を受け付けると、アクセス対象となるオブジェクトをオブジェクト識別子３１に変換し、ＡＣＬレポジトリ３４を検索し、オブジェクトのアクセス制御リスト３５を取り出す。引き続き、アクセス制御リスト３５と、アクセス種別３２と、プロセスが保持するケーパビリティリスト７との３つの情報から、オブジェクトへのアクセスを許可できるかどうかを判断する（３６）。
【００９３】
オブジェクトヘのアクセスが許可できると判断した場合には、アクセス制御リスト中のケーパビリティ強制関数のリスト３７をプロセスが保持するケーパビリティリスト７に適用する（３８）。ケーパビリティ強制関数には、以下の四つが含まれる。
ｆ（ｆｌｕｓｈ）ケーパビリティリストを空にする。
ｉ（ｉｎｓｅｒｔ）ケーパビリティリストに引数のケーパビリティを追加する。
ｍ（ｍｏｄｉｆｙ／ａｕｔｈｅｎｔｉｃａｔｅ）認証が不要な属性の場合には、ケーパビリティリスト中の各々のケーパビリティについて、引数のケーパビリティの権限との論理積をとり、引数のケーパビリティの属性を追加する。認証が必要な属性の場合には、ケーパビリティリスト中の各々のケーパビリティについて、引数のケーパビリティの属性を扱う認証サーバ２を呼出し、認証が成功すれば、ケーパビリティにその属性を追加し、引数のケーパビリティの権限との論理積をとる。もし、認証が失敗したときは、ケーパビリティ強制に失敗したとする。，（ｃｏｎｃａｔｅｎａｔｅ）関数を前から順に適用する。
【００９４】
ケーパビリティ強制に失敗した場合には、オブジェクトヘのアクセスを不許可とする。そうでない場合には、強制されたケーパビリティリスト１０をプロセスのケーパビリティリストとし、オブジェクトへのアクセスを許可する。
【００９５】
認証サーバ２は属性名、属性値、その他の認証に必要な情報１２を伴って呼び出される。そして、認証サーバ自体が保持する認証用のデータと照合し、認証を行い、結果１１を返す。
【００９６】
（認証サーバ）
認証すべき属性や強制の対象となっているケーパビリティの持つ属性ごとに認証サーバを置くこともできる。このようにする利点としては以下の理由が含まれる。
（１）個々の認証サーバのプログラム規模を小さくすることで設計上およびコーディング上のバグが可能な限り発生しないようにし、さらに、どれかひとつの認証サーバが乗っ取られたとしても、被害を最小限にとどめることができる。
（２）ケーパビリティが持つ属性にあわせて、認証サーバを用意することで、例えば、アプリケーションの種類やセキュリティレベルにあわせて認証方法を選択することができる。
【００９７】
認証サーバを実装する上では、オペレーティングシステムが持っている動作モードを利用し、メンテナンス用モードまたはそれに相当する動作モードにおいて認証サーバを立ち上げ、通常の動作モードにおいては、認証サーバの停止や立ち上げを許さないようにするのが望ましい。また、認証サーバが利用する認証用のデータも、メンテナンス用モードまたはそれに相当する動作モードにおいてのみ任意の読み書きを許可し、通常の動作モードにおいては、書き込み禁止、もしくは、上書き禁止とするのが望ましい。
【００９８】
前記のｕｉｄ、ｇｉｄ、ｐｒｏｇｉｄ、ａｐｐｌｉｄ、ｏｒｉｇｉｄは、以下に示すように認証が必要な属性として扱うことができる。
ｕｉｄ：ｕｉｄ認証サーバは、利用者名とパスワードなどの利用者を特定できる情報を得て、利用者を認証するために認証サーバが保持しているデータと照合することで認証を行う。
ｇｉｄ：ｇｉｄ認証サーバは、ケーパビリティを入力とし、そのケーパビリティ中のｕｉｄ属性を検証し、ｕｉｄが属するグループに対するｇｉｄを返す。
ｐｒｏｇｉｄ：メモリ上に展開されたプログラムに対する電子的な署名を検証することで認証を行う。例えば、プログラムコードのＭＤ５やＳＨＡ−１などのハッシュ関数によるハッシュ値を認証サーバに送り、認証サーバでは自身が保持するプログラム識別子とハッシュ値を照合する。
ａｐｐｌｉｄ：ａｐｐｌｉｄ認証サーバは、ケーパビリティを入力とし、そのケーパビリティ中のｐｒｏｇｉｄ属性を検証し、ｐｒｏｇｉｄが属するアプリケーショングループに対するａｐｐｌｉｄを返す。
ｏｒｉｇｉｄ：ｏｒｉｇｉｄ認証サーバは、プロセスがアクセスしているファイル、デバイス、ソケットなどの一覧を入力とし、どのような情報起源をアクセスしているかを検証し、それに対するｏｒｉｇｉｄを返す。
【００９９】
【発明の効果】
以上説明したように、本発明によれば、コンピュータシステムにおけるアクセス制御おいて、アクセス対象であるオブジェクトおよびアクセス主体であるサブジェクトを詳細に分類し、その分類に基づいて特有の制限を強制的に加えることを可能とする。これにより、単一の特権利用者を排除し、プログラムの乗っ取りによる被害を最小限にとどめ、もしくは、プログラムの乗っ取りを排除し、システム全体で統一したアクセス制御を提供することでコンピュータシステムのセキュリティを高めることができる。
【図面の簡単な説明】
【図１】本発明の実施形態によるシステム全体のブロック図。
【図２】本発明の実施形態によるケーパビリティを示す図。
【図３】本発明の実施形態によるアクセス制御の処理の流れを示すブロック図。
【図４】本発明の実施形態によるアクセス制御リストのエントリを示す図。
【図５】本発明の実施形態による属性を含むケーパビリティを示す図。
【図６】本発明の実施形態による属性の認証を伴うアクセス制御の処理の流れを示すブロック図。
【符号の説明】
１  プロセス
２  認証サーバ
３  アクセス制御部
４  ケーパビリティリスト保持部
５  要求受理部
６  アクセス要求
７  オブジェクトのアクセス前のケーパビリティリスト
８  許可されたアクセス要求
９  アクセス許可フラグ
１０  オブジェクトのアクセス検査後のケーパビリティリスト
１１  認証結果
１２  認証に必要な情報のリスト
１３  オペレーティングシステム
２２、５２  ケーパビリティ中の権限
２３  ケーパビリティ識別子ｃｉｄ
３１  オブジェクト識別子
３２  アクセス種別
３４  ＡＣＬレポジトリ
３５  アクセス制御リスト
３６  アクセス権限検査部
３７  ケーパビリティ強制関数のリスト
３８、４０  ケーパビリティ強制部
４１  属性名と属性値の組のリストとケーパビリティリスト
４２  認証用情報収集部
５１  ケーパビリティの全データ長
５３  属性値長１
５４  属性名１
５５  属性値１
５６  属性値長２
５７  属性名２
５８  属性値２
６２  アクセス権
６３  アクセス許可に必要なケーパビリティの条件
６４  ケーパビリティ強制関数
【図１】
0003756397.tif 000002
【図２】
0003756397.tif 000003
【図３】
0003756397.tif 000004
【図４】
0003756397.tif 000005
【図５】
0003756397.tif 000006
【図６】
0003756397.tif 000007