(57)【要約】 【課題】矛盾・冗長検出を備えたアクセス制御システムを提供する。【解決手段】アクセス制御システム２に備えられた矛盾ルール検出処理部９は、ロール変換手段１０及び矛盾ルール検出手段１１並びに矛盾部分抽出手段１２から構成されている。ロール変換手段１０は、サブジェクトロールリポジトリ５またはオブジェクトロールリポジトリ６から全てのサブジェクトのロール及びオブジェクトのロールを読出し、ロールの情報を、それぞれのロールの構造における地位を一意に特定できる識別記号へ変換する。矛盾ルール検出手段１１及び矛盾部分抽出手段１２は、ロール変換手段１０から、ロールの情報を受信し、伝播規則リポジトリ８から伝播規則を読出し、伝播規則が適用されたＡＣＬ（アクセスコントロールリスト）リポジトリ７内から矛盾があるリストを抽出し、抽出されたリストの中から矛盾のあるサブジェクトロールとオブジェクトロールの組み合わせを抽出する。【選択図】  図１
2005182478.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級の情報を前記客体に対応付けて保存した客体階級データベースと、前記客体にアクセスする個人やシステム等の主体の種類に応じて設定されるアクセス権限のレベルを示す主体階級の情報を前記主体に対応付けて保存した主体階級データベースと、ある主体階級に属する主体がある客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報を保存したアクセス権制御規則データベースと、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権として適用する伝播規則の情報を保存した伝播規則データベースと、前記主体から前記客体へのアクセスの要求を受信するリクエスト受付部と、前記リクエスト受付部からリクエストを受信し、前記アクセス権制御規則データベースに設定されている前記アクセス権制御規則を基に、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを判断するアクセス許可判断部と、を備えたアクセス制御システムにおいて、
前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、
前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、矛盾するアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する矛盾ルール検出手段と、
前記矛盾ルール検出手段で検出された矛盾する前記アクセス権制御規則の中から、矛盾がある前記主体階級と前記客体階級の組み合わせを前記識別記号を用いて抽出する矛盾部分抽出手段と、
からなる矛盾ルール検出処理部を備えたことを特徴とするアクセス制御システム。
【請求項２】
前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、
前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、冗長となるアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する冗長ルール検出手段と、
からなる冗長ルール検出処理部をさらに備えたことを特徴とする請求項１に記載のアクセス制御システム。
【請求項３】
前記伝播規則は、運用に応じて前記伝播規則データベース内で変更可能としたことを特徴とする請求項１または２に記載のアクセス制御システム。
【請求項４】
前記主体階級及び前記客体階級は、それぞれの階級の地位をノードとする木構造として構成されており、前記階級情報変換手段は、
最上段に位置するノードの深さを１とし、一段下がる毎に深さが１つ増える規則に基づいて、前記ノードに前記ノードの深さに応じて第１識別記号を付与する手段と、
あるノードに接続する深さが１つ深いノードを子ノードとする場合に、前記木構造の全てのノードの子ノードの数を検索し、最大子ノード数を検出する手段と、
最上段に位置するノードに第２識別記号として１を付与し、最上段に位置するノード以外のノードには、前記第１識別符号が小さい前記ノードから順に、前記ノードの親の第２識別符号をnとしたとき、max(n-1)は(n-1)に前記最大子ノード数を乗じて求めた値を表し、max(n-1)に１加えたものと初期値とし、当該親の１番目の子ノードに第２識別記号として初期値を付与し、２番目以降の子ノードには、１つ前の子ノードに付与した第２識別記号に１加えたものを第２識別記号として付与する手段と、
を備えたことを特徴とする請求項１または２に記載のアクセス制御システム。
【請求項５】
前記伝播規則は、前記木構造において、あるノードから見て上位にたどって到達できるノードの集合を祖先ノード、下位にたどって到達できるノードの集合を子孫ノードとする場合に、
前記アクセス権制御規則の中の１規則として、ある主体階級とある客体階級の間のアクセスを許可する設定がある場合、当該主体階級の祖先ノードに該当する全ての階級に属する主体から、当該客体階級の子孫ノードに該当する全ての階級に属する客体へのアクセスを許可するPermitPropagation(down)という規則と、
前記アクセス権制御規則の１規則として、ある主体階級とある客体階級の間のアクセスを許可する設定がある場合、当該主体階級の祖先ノードに該当する全ての階級に属する主体から、当該客体階級の祖先ノードに該当する全ての階級に属する客体へのアクセスを許可するPermitPropagation(up)という規則と、
前記アクセス権制御規則の１規則として、ある主体階級とある客体階級の間のアクセスを禁止する設定がある場合、当該主体階級の子孫ノードに該当する全ての階級に属する主体から、当該客体階級の子孫ノードに該当する全ての階級に属する客体へのアクセスを禁止するProhibitPropagationという規則と、
PermitPropagation(down)とPermitPropagation(up)とProhibitPropagationの任意の組み合わせから構成される規則と、
を備えたことを特徴とする請求項４に記載のアクセス制御システム。
【請求項６】
前記矛盾ルール検出手段は、
前記アクセス権制御規則データベースに設定されている全ての前記アクセス権制御規則の中から任意の２つのアクセス権制御規則を選択して得られる組み合わせのうち、許可の規則と禁止の規則の組み合わせのみを全て抽出する手段と、
前記階級情報変換手段から受信した、前記第１識別記号と前記第２識別記号が付与された前記主体階級及び前記客体階級の情報に基づいて、抽出した前記アクセス権制御規則の組み合わせの許可の規則の主体階級の識別記号のうち第１識別記号をａに代入し、第２識別記号をｂに代入し、客体階級の識別記号のうち第１識別記号をｃに代入し、第２識別記号をｄに代入し、禁止の規則の主体階級の識別記号のうち第１識別記号をｅに代入し、第２識別記号をｆに代入し、客体階級の識別記号のうち第１識別記号をｇに代入し、第２識別記号をｈに代入する手段と、
前記階級情報変換手段から受信した、前記主体階級の木構造の最大子ノード数をmaxsに代入し、前記客体階級の木構造の最大子ノード数をmaxoに代入する手段と、
前記伝播規則データベースから有効に設定されている前記伝播規則を読出す手段と、
読み出した前記伝播規則がPermitPropagation(up)かつProhibitPropagationまたはPermitPropagation(up)またはProhibitPropagationである場合に、
【数１】
2005182478.tif 000011
の式の記号はχ以上の自然数のうち、最小の自然数を意味する場合に、
【数２】
2005182478.tif 000012
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、
読み出した前記伝播規則がPermitPropagation(down)かつProhibitPropagationまたはPermitPropagation(down)である場合に、
前記式（２）または、
【数３】
2005182478.tif 000013
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、
前記伝播規則が設定されていない場合に、
【数４】
2005182478.tif 000014
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、
を備えたことを特徴とする請求項５に記載のアクセス制御システム。
【請求項７】
前記矛盾部分抽出手段は、
前記客体階級の木構造の深さの最大値をdepoに代入する手段と、
前記矛盾ルール検出手段から受信した、前記矛盾するアクセス権制御規則に基づいて、
前記伝播規則がPermitPropagation(up)かつProhibitPropagationの場合で、かつ
前記式（２）の条件に合致して矛盾が検出された場合に、
【数５】
2005182478.tif 000015
の式を満たす前記主体階級と
【数６】
2005182478.tif 000016
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がPermitPropagation(up)の場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がｅで、第２識別記号がｆである前記主体階級と第１識別記号がｇで第２識別記号がｈである前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がProhibitPropagationの場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がPermitPropagation(down)かつProhibitPropagationの場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、式（５）を満たす前記主体階級と
【数７】
2005182478.tif 000017
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がPermitPropagation(down)の場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がｅで、第２識別記号がｆである前記主体階級と第１識別記号がｇで第２識別記号がｈである前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がPermitPropagation(down)かつProhibitPropagationの場合で、かつ前記式（３）の条件に合致して矛盾が検出された場合に、前記主体階級が前記式（５）を満たす前記主体階級と
【数８】
2005182478.tif 000018
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則がPermitPropagation(down)の場合で、かつ前記式（３）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、
前記伝播規則が設定されていない場合で、かつ前記式（４）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、
を備えることを特徴とする請求項６に記載のアクセス制御システム。
【請求項８】
前記冗長ルール検出手段は、
前記アクセス権制御規則データベースに設定されている全ての前記アクセス権制御規則の中から任意の２つのアクセス権制御規則を選択して得られる組み合わせのうち、許可の規則同士の組み合わせと、禁止の規則同士の組み合わせを全て抽出する手段と、
前記階級情報変換手段から受信した、前記第１識別記号と前記第２識別記号が付与された前記主体階級及び前記客体階級の情報に基づいて、抽出した前記アクセス権制御規則の組み合わせの主体階級情報の第１識別記号を比較した場合に、第１識別記号の値が小さい方の規則の主体階級の識別記号のうち第１識別記号をａに代入し、第２識別記号をｂに代入し、客体階級の識別記号のうち第１識別記号をｃに代入し、第２識別記号をｄに代入し、他方の規則の主体階級の識別記号のうち第１識別記号をｅに代入し、第２識別記号をｆに代入し、客体階級の識別記号のうち第１識別記号をｇに代入し、第２識別記号をｈに代入する手段と、
前記階級情報変換手段から受信した、前記主体階級の木構造の最大子ノード数をmaxsに代入し、前記客体階級の木構造の最大子ノード数をmaxoに代入する手段と、
前記伝播規則データベースから前記伝播規則を読出す手段と、
読み出した前記伝播規則がPermitPropagation(up)かつProhibitPropagationまたはPermitPropagation(up)またはProhibitPropagationである場合に、
式（１）の記号はχ以上の自然数のうち、最小の自然数を意味する場合に、式（２）を満たす場合には冗長設定であるアクセス権制御規則を検出したと判定する手段と、
読み出した前記伝播規則がPermitPropagation(down)かつProhibitPropagationまたはPermitPropagation(down)である場合に、
前記式（２）または、式（３）を満たす場合には冗長設定であるアクセス権制御規則を検出したと判定する手段と、
前記伝播規則が設定されていない場合に、式（４）を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、
を備えたことを特徴とする請求項５に記載のアクセス制御システム。
【請求項９】
コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級の情報と、前記客体にアクセスする個人やシステム等の主体の種類に応じて設定されるアクセス権限のレベルを示す主体階級の情報と、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報と、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権として適用する伝播規則の情報と、に基づいてアクセス制御を実行するコンピュータを、
前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、
前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、矛盾するアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する矛盾ルール検出手段と、
前記矛盾ルール検出手段で検出された矛盾する前記アクセス権制御規則の中から、矛盾がある前記主体階級と前記客体階級の組み合わせを前記識別記号に基づいて抽出する矛盾部分抽出手段として機能させるための矛盾ルール検出プログラム。
【請求項１０】
コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級の情報と、前記客体にアクセスする個人やシステム等の主体の種類に応じて設定されるアクセス権限のレベルを示す主体階級の情報と、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報と、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権に適用する伝播規則の情報と、に基づいてアクセス制御を実行するコンピュータを、
前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、
前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、冗長となるアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する冗長ルール検出手段として機能させるための冗長ルール検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのアクセス権の矛盾・冗長ルール検出を行うアクセス制御システム及びそのコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータのオペレーティングシステム等には、システム管理者と一般ユーザ等のユーザの種別に応じてファイルやアプリケーションに対するアクセス権限を制御するアクセス制御の機能が備わっている。
そのようなアクセス制御のシステムにおいて、アクセスする主体である個人・システム等は「サブジェクト（Ｓｕｂｊｅｃｔ）」（＝主体）と呼ばれており、アクセスされる客体であるファイル、アプリケーション、サービス等は「オブジェクト（Ｏｂｊｅｃｔ）」（＝客体）と呼ばれている。通常、サブジェクトやオブジェクトは、その特権、役職、種類などに応じてグループにまとめられる。このグループはロール（＝階級）と呼ばれている。ロールの例としては課長・部長等の役職、所属組織、機密ファイル・公開ファイル等のファイル種別などがある。
一般的に、アクセス制御システムでは、サブジェクト及びオブジェクト間、または、サブジェクトロール及びオブジェクトロール間にアクセス権の有無、即ちアクセス可能または禁止を設置することによりアクセスの制御を行う。この設定された情報の１つ１つはルール（＝規則）と呼ばれており、ルールを集めた全体はアクセスコントロールリスト（以下、ＡＣＬ：Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）と呼ばれている。アクセス制御システムは、主体が客体へアクセスしたいというリクエストを受け取った場合、そのリクエストに含まれる主体と客体をＡＣＬと照らし合わせてチェックすることにより、リクエストを受け入れるべきか拒否するべきかを判断する。（例えば、非特許文献１によるアクセス制御方法がある。）
しかし、管理者の誤設定などの原因により、ＡＣＬの中において同一のサブジェクトまたはサブジェクトロールとオブジェクトもしくはオブジェクトロールの同一の組み合わせに相反するアクセス権が設定されてしまう場合がある。つまり、ある１つのルールにおいて、あるサブジェクトは、あるオブジェクトにアクセス可能と設定されているにも関わらず、別のルールにおいて、当該サブジェクトが当該オブジェクトに対してアクセス禁止と設定されている場合である。このような場合、２つのルールが互いに矛盾していると呼ばれている。ＡＣＬの中に矛盾するルールが存在する場合、システムはアクセスを許可すべきなのか、禁止すべきなのかを判断することができないため、何らかの方法を用いて矛盾するルールを事前に検出し回避する手段を講じる必要がある。
特許文献１に示す従来の技術では、ＡＣＬに記述されているルールの主体と客体の組み合わせが完全に一致し、アクセス権が相反するルールが存在する場合には、それらを矛盾するルールとして静的、即ちシステム稼動前に検出することが可能である。また、動的、即ちシステム運用時に発生したリクエストを逐一、全ＡＣＬと照らし合わせてチェックすることにより、矛盾を検出することも可能である。さらに、矛盾が発生した場合には「許可優先」あるいは「禁止優先」などの強制的な回避ルールを事前に定義しておくことにより、矛盾を回避することを可能としている。
【非特許文献１】デビット  エフ  フェライオロ（David F. Ferraiolo），ラビ  エス  サンダウ（Ravi S. Sandhu），サーバン  アイ  ガビリラ（Serban I.Gavrilia），ディー  リチャード  クーン（D. Richard Kuhn），ラマスァミィ  チャンドラモウリィ（Ramaswamy Chandramouli），「プロポーズド  エヌアイエスティ  スタンダード  フォー  ロール−ベイスド  アクセス  コントロール（Proposed NIST standard for Role-based access control）」，（米国），エーシーエム  トランザクション  オン  インフォメーション  アンド  システム  セキュリティ（ACM Transactions on Information and System Security），第４巻（Ｖｏｌ．４），第３号（Ｎｏ．３），２００１年８月（Ａｕｇｕｓｔ  ２００１），ｐ２２４−２７４
【特許文献１】特開２００３−１８６７０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の従来技術においては、ロールの構造に従ったアクセス権の伝播に起因する矛盾を静的に検出することが出来ないという問題がある。以下に簡単な例を用いて、このことについて説明する。
階層関係を持つロールのアクセス制御においては、次のようなアクセス権の伝播を考えることが一般的である。即ち、あるロールに属するサブジェクトがあるオブジェクトに対してアクセス可能と設定されている場合には、それより上位のロールに属するサブジェクトも同一のオブジェクトに対してアクセスが許可されていると考えられる。逆に、あるロールに属するサブジェクトがあるオブジェクトに対してアクセス禁止と設定されている場合には、それより下位のロールに属するサブジェクトも同一のオブジェクトに対してアクセスが禁止されていると考えられる。このようなアクセス権の規則が伝播規則と呼ばれている。ロールを用いたアクセス制御は一般的であるが、伝播規則を考慮してアクセス制御を行う場合には、矛盾の検出がより複雑になる。
例えば、サブジェクトロールとして、「一般社員」「課長」「部長」「副本部長」「本部長」というロールが存在していると仮定する。これらの属性は階層関係になっており、一番階層の低いのが「一般社員」であり、一番高いのが「本部長」である。この時、以下のような２つのルールを考える。
ルール１：（“Subject  Role＝課長”は“Object  Role＝機密ファイル”にアクセス可能）
ルール２：（“Subject  Role＝副本部長”は“Object  Role＝機密ファイル”にアクセス禁止）
一見したところ上記のルール１及びルール２はサブジェクトに設定されているサブジェクトロールが異なるため、矛盾していないように思える。しかし、ここで伝播規則を考慮すると矛盾が発生する。ルール１では「課長」に「機密ファイル」へのアクセスが許可されている為、伝播規則により、「課長」より上位の役職である「部長」「副本部長」「本部長」にも同様のアクセス権が設定されていると考えるべきである。逆に、ルール２では、「副本部長」が「機密ファイル」へアクセスすることを禁止しているため、伝播規則により、「副本部長」より下位の役職である「一般社員」「課長」「部長」にも同様のアクセス権が設定されていると考えるべきである。つまり、上記の２つのルールにより、サブジェクトロールが「課長」「部長」「副本部長」のいずれかに属する社員に対して「許可」と「禁止」の両方のアクセス権が設定されており矛盾が発生している。
従来の技術では、上記で示したロールの構造（以下、ロール構造）に従って発生する伝播規則に起因した矛盾を静的に検出することが不可能であるという問題がある。静的に矛盾を検出できない場合、システム稼動後に露呈する矛盾に対して、管理者はリアルタイムに対処を施さなければならない。そのため、サービスの一時停止などの応急措置が必要となる可能性がある。
【０００４】
本発明は、上記問題を解決すべくなされたもので、その目的は、伝播規則に起因した矛盾を静的に検出することを可能にすることである。また、矛盾するルールの対を検出するだけではなく、それらのルールから、矛盾するアクセス権がどのサブジェクトロールとどのオブジェクトロールの間で設定されているのかを抽出することを可能にすることである。
【課題を解決するための手段】
【０００５】
請求項１に記載の発明は、コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級（例えば、発明を実施するための最良の形態におけるオブジェクトロール）の情報を前記客体に対応付けて保存した客体階級データベース（例えば、発明を実施するための最良の形態におけるオブジェクトロールリポジトリ６）と、前記客体にアクセスする個人やシステム等の主体（例えば、発明を実施するための最良の形態のリクエスター１）の種類に応じて設定されるアクセス権限のレベルを示す主体階級（例えば、発明を実施するための最良の形態におけるサブジェクトロール）の情報を前記主体に対応付けて保存した主体階級データベース（例えば、発明を実施するための最良の形態におけるサブジェクトロールリポジトリ５）と、ある主体階級に属する主体がある客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報（例えば、発明を実施するための最良の形態におけるアクセスコントロールリスト）を保存したアクセス権制御規則データベース（例えば、発明を実施するための最良の形態におけるＡＣＬリポジトリ７）と、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権として適用する伝播規則の情報を保存した伝播規則データベース（例えば、発明を実施するための最良の形態における伝播規則リポジトリ８）と、前記主体から前記客体へのアクセスの要求を受信するリクエスト受付部（例えば、発明を実施するための最良の形態のリクエスト受付部３）と、前記リクエスト受付部からリクエストを受信し、前記アクセス権制御規則データベースに設定されている前記アクセス権制御規則を基に、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを判断するアクセス許可判断部（例えば、発明を実施するための最良の形態のアクセス許可判断部４）と、を備えたアクセス制御システムにおいて、前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段（例えば、発明を実施するための最良の形態のロール変換手段１０及び識別記号付与処理）と、前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、矛盾するアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する矛盾ルール検出手段（例えば、発明を実施するための最良の形態の矛盾ルール検出手段１１及び矛盾ルール抽出処理と矛盾ルール判定処理）と、前記矛盾ルール検出手段で検出された矛盾する前記アクセス権制御規則の中から、矛盾がある前記主体階級と前記客体階級の組み合わせを前記識別記号を用いて抽出する矛盾部分抽出手段（例えば、発明を実施するための最良の形態の矛盾部分抽出手段１２及び矛盾部分抽出処理）とからなる矛盾ルール検出処理部（例えば、発明を実施するための最良の形態の矛盾ルール検出処理部９及び矛盾ルール検出処理）を備えたことを特徴とするアクセス制御システム（例えば、発明を実施するためのアクセス制御システム２）。
【０００６】
請求項２に記載の発明は、請求項１に記載の発明において、前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段（例えば、発明を実施するための最良の形態のロール変換手段１４及び識別記号付与処理）と、前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、冗長となるアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する冗長ルール検出手段（例えば、発明を実施するための最良の形態の冗長ルール検出手段１５及び冗長ルール抽出処理と冗長ルール判定処理）とからなる冗長ルール検出処理部（例えば、発明を実施するための最良の形態の冗長ルール検出処理部１３及び冗長ルール検出処理）をさらに備えたことを特徴とする。
【０００７】
請求項３に記載の発明は、請求項１または２に記載の発明において、前記伝播規則は、運用に応じて前記伝播規則データベース内で変更可能としたことを特徴とする。
【０００８】
請求項４に記載の発明は、前記主体階級及び前記客体階級は、それぞれの階級の地位をノードとする木構造として構成されており、前記階級情報変換手段は、最上段に位置するノードの深さを１とし、一段下がる毎に深さが１つ増える規則に基づいて、前記ノードに前記ノードの深さに応じて第１識別記号を付与する手段と、あるノードに接続する深さが１つ深いノードを子ノードとする場合に、前記木構造の全てのノードの子ノードの数を検索し、最大子ノード数を検出する手段と、最上段に位置するノードに第２識別記号として１を付与し、最上段に位置するノード以外のノードには、前記第１識別符号が小さい前記ノードから順に、前記ノードの親の第２識別符号をnとしたとき、max(n-1)は(n-1)に前記最大子ノード数を乗じて求めた値を表し、max(n-1)に１加えたものと初期値とし、当該親の１番目の子ノードに第２識別記号として初期値を付与し、２番目以降の子ノードには、１つ前の子ノードに付与した第２識別記号に１加えたものを第２識別記号として付与する手段と、を備えたことを特徴とする。
【０００９】
請求項５に記載の発明は、請求項４に記載の発明において、前記伝播規則は、前記木構造において、あるノードから見て上位にたどって到達できるノードの集合を祖先ノード、下位にたどって到達できるノードの集合を子孫ノードとする場合に、前記アクセス権制御規則の中の１規則として、ある主体階級とある客体階級の間のアクセスを許可する設定がある場合、当該主体階級の祖先ノードに該当する全ての階級に属する主体から、当該客体階級の子孫ノードに該当する全ての階級に属する客体へのアクセスを許可するPermitPropagation(down)という規則と、前記アクセス権制御規則の１規則として、ある主体階級とある客体階級の間のアクセスを許可する設定がある場合、当該主体階級の祖先ノードに該当する全ての階級に属する主体から、当該客体階級の祖先ノードに該当する全ての階級に属する客体へのアクセスを許可するPermitPropagation(up)という規則と、前記アクセス権制御規則の１規則として、ある主体階級とある客体階級の間のアクセスを禁止する設定がある場合、当該主体階級の子孫ノードに該当する全ての階級に属する主体から、当該客体階級の子孫ノードに該当する全ての階級に属する客体へのアクセスを禁止するProhibitPropagationという規則と、PermitPropagation(down)とPermitPropagation(up)とProhibitPropagationの任意の組み合わせから構成される規則と、を備えたことを特徴とする。
【００１０】
請求項６に記載の発明は、請求項５に記載の発明において、前記矛盾ルール検出手段は、前記アクセス権制御規則データベースに設定されている全ての前記アクセス権制御規則の中から任意の２つのアクセス権制御規則を選択して得られる組み合わせのうち、許可の規則と禁止の規則の組み合わせのみを全て抽出する手段と、前記階級情報変換手段から受信した、前記第１識別記号と前記第２識別記号が付与された前記主体階級及び前記客体階級の情報に基づいて、抽出した前記アクセス権制御規則の組み合わせの許可の規則の主体階級の識別記号のうち第１識別記号をａに代入し、第２識別記号をｂに代入し、客体階級の識別記号のうち第１識別記号をｃに代入し、第２識別記号をｄに代入し、禁止の規則の主体階級の識別記号のうち第１識別記号をｅに代入し、第２識別記号をｆに代入し、客体階級の識別記号のうち第１識別記号をｇに代入し、第２識別記号をｈに代入する手段と、前記階級情報変換手段から受信した、前記主体階級の木構造の最大子ノード数をmaxsに代入し、前記客体階級の木構造の最大子ノード数をmaxoに代入する手段と、前記伝播規則データベースから有効に設定されている前記伝播規則を読出す手段と、読み出した前記伝播規則がPermitPropagation(up)かつProhibitPropagationまたはPermitPropagation(up)またはProhibitPropagationである場合に、
【００１１】
【数１】
2005182478.tif 000003
【００１２】
の式の記号はχ以上の自然数のうち、最小の自然数を意味する場合に、
【００１３】
【数２】
2005182478.tif 000004
【００１４】
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、読み出した前記伝播規則がPermitPropagation(down)かつProhibitPropagationまたはPermitPropagation(down)である場合に、前記式（２）または、
【００１５】
【数３】
2005182478.tif 000005
【００１６】
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、前記伝播規則が設定されていない場合に、
【００１７】
【数４】
2005182478.tif 000006
【００１８】
の式を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、を備えたことを特徴とする。
【００１９】
請求項７に記載の発明は、請求項６に記載の発明において、前記矛盾部分抽出手段は、
前記客体階級の木構造の深さの最大値をdepoに代入する手段と、前記矛盾ルール検出手段から受信した、前記矛盾するアクセス権制御規則に基づいて、前記伝播規則がPermitPropagation(up)かつProhibitPropagationの場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、
【００２０】
【数５】
2005182478.tif 000007
【００２１】
の式を満たす前記主体階級と
【００２２】
【数６】
2005182478.tif 000008
【００２３】
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がPermitPropagation(up)の場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がｅで、第２識別記号がｆである前記主体階級と第１識別記号がｇで第２識別記号がｈである前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がProhibitPropagationの場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がPermitPropagation(down)かつProhibitPropagationの場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、式（５）を満たす前記主体階級と
【００２４】
【数７】
2005182478.tif 000009
【００２５】
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がPermitPropagation(down)の場合で、かつ前記式（２）の条件に合致して矛盾が検出された場合に、第１識別記号がｅで、第２識別記号がｆである前記主体階級と第１識別記号がｇで第２識別記号がｈである前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がPermitPropagation(down)かつProhibitPropagationの場合で、かつ前記式（３）の条件に合致して矛盾が検出された場合に、前記主体階級が前記式（５）を満たす前記主体階級と
【００２６】
【数８】
2005182478.tif 000010
【００２７】
の式を満たす前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則がPermitPropagation(down)の場合で、かつ前記式（３）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、前記伝播規則が設定されていない場合で、かつ前記式（４）の条件に合致して矛盾が検出された場合に、第１識別記号がａで、第２識別記号がｂである前記主体階級と第１識別記号がｃで第２識別記号がｄである前記客体階級が矛盾部分であることを抽出する手段と、
を備えることを特徴とする。
【００２８】
請求項８に記載の発明は、請求項５に記載の発明において、前記冗長ルール検出手段は、前記アクセス権制御規則データベースに設定されている全ての前記アクセス権制御規則の中から任意の２つのアクセス権制御規則を選択して得られる組み合わせのうち、許可の規則同士の組み合わせと、禁止の規則同士の組み合わせを全て抽出する手段と、前記階級情報変換手段から受信した、前記第１識別記号と前記第２識別記号が付与された前記主体階級及び前記客体階級の情報に基づいて、抽出した前記アクセス権制御規則の組み合わせの主体階級情報の第１識別記号を比較した場合に、第１識別記号の値が小さい方の規則の主体階級の識別記号のうち第１識別記号をａに代入し、第２識別記号をｂに代入し、客体階級の識別記号のうち第１識別記号をｃに代入し、第２識別記号をｄに代入し、他方の規則の主体階級の識別記号のうち第１識別記号をｅに代入し、第２識別記号をｆに代入し、客体階級の識別記号のうち第１識別記号をｇに代入し、第２識別記号をｈに代入する手段と、前記階級情報変換手段から受信した、前記主体階級の木構造の最大子ノード数をmaxsに代入し、前記客体階級の木構造の最大子ノード数をmaxoに代入する手段と、前記伝播規則データベースから前記伝播規則を読出す手段と、読み出した前記伝播規則がPermitPropagation(up)かつProhibitPropagationまたはPermitPropagation(up)またはProhibitPropagationである場合に、
式（１）の記号はχ以上の自然数のうち、最小の自然数を意味する場合に、式（２）を満たす場合には冗長設定であるアクセス権制御規則を検出したと判定する手段と、読み出した前記伝播規則がPermitPropagation(down)かつProhibitPropagationまたはPermitPropagation(down)である場合に、前記式（２）または、式（３）の式を満たす場合には冗長設定であるアクセス権制御規則を検出したと判定する手段と、前記伝播規則が設定されていない場合に、式（４）を満たす場合には矛盾するアクセス権制御規則を検出したと判定する手段と、を備えたことを特徴とする。
【００２９】
請求項９に記載の発明は、コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級の情報と、前記客体にアクセスする個人やシステム等の主体の種類に応じて設定されるアクセス権限のレベルを示す主体階級の情報と、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報と、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権として適用する伝播規則の情報と、に基づいてアクセス制御を実行するコンピュータを、前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、矛盾するアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する矛盾ルール検出手段と、前記矛盾ルール検出手段で検出された矛盾する前記アクセス権制御規則の中から、矛盾がある前記主体階級と前記客体階級の組み合わせを前記識別記号に基づいて抽出する矛盾部分抽出手段として機能させるための矛盾ルール検出プログラムである。
【００３０】
請求項１０に記載の発明は、コンピュータシステムにおけるファイルやアプリケーションやサービス等の客体の種類に応じて設定されるアクセス権限のレベルを示す客体階級の情報と、前記客体にアクセスする個人やシステム等の主体の種類に応じて設定されるアクセス権限のレベルを示す主体階級の情報と、前記主体階級に属する主体が前記客体階級に属する客体にアクセスすることを許可するか禁止するかを前記主体階級と前記客体階級の組み合わせに対して定めたアクセス権制御規則の情報と、前記アクセス権制御規則に含まれる前記主体階級と前記客体階級の間のアクセス権を、所定の規則に基づいて、当該主体階級及び当該客体階級と上位または下位の階級の関係にある主体階級及び客体階級の間のアクセス権に適用する伝播規則の情報と、に基づいてアクセス制御を実行するコンピュータを、前記主体階級データベース及び前記客体階級データベースから全ての前記主体階級及び前記客体階級の情報を読出し、前記主体階級及び前記客体階級の情報を、それぞれの階級構造における地位を一意に特定できる識別記号へ変換する階級情報変換手段と、前記階級情報変換手段から前記識別記号が付与された前記主体階級及び前記客体階級の情報を受信し、前記伝播規則データベースから前記伝播規則を読出し、前記アクセス権制御規則データベース内のアクセス権制御規則に前記伝播規則を適用し、前記伝播規則を適用した後の前記主体階級と前記客体階級の上位階級、下位階級及び同位階級の間のアクセス権において、冗長となるアクセス権を発生させる前記アクセス権制御規則を前記識別記号に基づいて検出する冗長ルール検出手段として機能させるための冗長ルール検出プログラムである。
【発明の効果】
【００３１】
以上説明したように、この発明によれば、アクセス制御システムに矛盾ルール検出処理部を付加し、その矛盾ルール検出処理部において、全てのサブジェクトロールとオブジェクトロールを一意に特定する識別記号を付与している。また、矛盾ルール検出処理部は、伝播規則が適用されたＡＣＬ内のアクセス制御リストをＡＣＬリポジトリから読出し、識別記号が付与されたサブジェクトロールとオブジェクトロールに基づき、矛盾するＡＣＬを抽出する構成をとっている。そのため、システム起動前に、伝播規則に起因するアクセス権の矛盾を検出することができ、システム管理者はシステム起動前にその矛盾を回避する策を講じることができる効果がある。
【００３２】
また、本発明によれば、アクセス制御システムに冗長ルール検出処理部を付加し、その冗長ルール検出処理部において、矛盾ルール検出処理部と同様に、全てのサブジェクトロールとオブジェクトロールを一意に特定する識別記号を付与している。また、矛盾ルール検出処理部は、伝播規則が適用されたＡＣＬ内のアクセス制御リストをＡＣＬリポジトリから読出し、識別記号が付与されたサブジェクトロールとオブジェクトロールに基づき、冗長に設定されているＡＣＬを抽出する構成をとっている。そのため、システム起動前に、伝播規則に起因するアクセス権の冗長を検出することができ、システム管理者はシステム起動前にその冗長設定を削除することができる効果がある。
【００３３】
さらに、また、本発明によれば、矛盾ルール検出処理部及び冗長ルール検出処理部は、アクセス制御システムと独立して動作可能な構成となっている。そのため、アクセス制御システムの仕様にとらわれることなく容易に、矛盾ルール検出処理部及び冗長ルール検出処理部をシステムに統合することが可能である。
【００３４】
最後に、本発明によれば、サブジェクトロールとオブジェクトロールが木構造である場合に、識別記号を自動的に付与し、付与した識別記号に基づいて、所定の式により自動的にＡＣＬから矛盾ルールの検出及び矛盾部分の抽出並びに冗長ルールの検出ができる構成になっている。そのため、システム管理者は、短時間でＡＣＬリポジトリに設定されているＡＣＬから、矛盾ルールを修正する策を講じることができ、また冗長ルールを削除することが可能となる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の一実施形態を図面を参照して説明する。
図１は、本発明の一実施形態によるアクセス制御システムの構成を示す概略ブロック図である。
リクエスター１は、あるオブジェクト、即ち「客体」に対するアクセスの要求を行うサブジェクト、即ち「主体」であり、人であったり、アプリケーションソフトウェアであったりする。リクエスト受付部３は、リクエスター１からのリクエストを受け付け、そのリクエストをアクセス許可判断部４に転送する役目を担っている。アクセス許可判断部４は、受信したリクエストをＡＣＬと照らし合わせて解析し、そのリクエストが許可されるか拒否されるかを判断する。判断結果は、リクエスト受付部３に返信され、アクセスが許可された場合には、サブジェクトに対してオブジェクトへのアクセスを提供し、アクセスが拒否された場合には、サブジェクトにその旨を通知する。サブジェクトロールリポジトリ５は、アクセス制御に用いられるサブジェクトが属するロール、即ち「階級」の情報を保持するデータベースであり、ロール構造に関する情報も保持している。オブジェクトロールリポジトリ６は、アクセス制御に用いられるオブジェクトが属するロールの情報を保持するデータベースであり、ロール構造に関する情報も保持される。ＡＣＬリポジトリ７は、アクセス制御を行うためのルール、即ち「規則」が保持されているデータベースであり、ＡＣＬリポジトリ７にはアクセス制御ルールの一覧が保存されている。伝播規則リポジトリ８は、アクセス権制御のルールに適用される伝播規則を設定するためのデータベースであり、伝播規則リポジトリ８には、伝播規則の一覧が保存されている。
矛盾ルール検出処理部９は、ロール変換手段１０と矛盾ルール検出手段１１と矛盾部分抽出手段１２から構成されている。ロール変換手段１０は、サブジェクトロールリポジトリ５及びオブジェクトロールリポジトリ６に保存されているロールの情報を矛盾ルールの検出を行うことができる形式に変換する。矛盾ルール検出手段１１は、ＡＣＬリポジトリ７からルールを抽出し、ルールの矛盾の有無を解析する。矛盾部分抽出手段１２は、矛盾ルール検出手段１１より検出された互いに矛盾するルールの対を解析することにより、どのサブジェクトロールとどのオブジェクトロールの組み合わせに相反するアクセス権が設定されているかを抽出する。
冗長ルール検出処理部１３は、ロール変換手段１４と冗長ルール検出手段１５から構成されている。ロール変換手段１４は、サブジェクトロールリポジトリ５及びオブジェクトロールリポジトリ６に保存されているロールの情報を、冗長ルールの検出を行うことができる形式に変換する。冗長ルール検出手段１５は、ＡＣＬリポジトリ７からルールを抽出し、冗長して設定されているルールの有無を解析する。
アクセス制御システム２の管理者は、アクセス制御の対象となるサブジェクトロールをサブジェクトロールリポジトリ５に、オブジェクトロールをオブジェクトロールリポジトリ６に設定する。次に、これらの設定された情報を基に、アクセス制御を行うためのＡＣＬをＡＣＬリポジトリ７に設定する。伝播規則を有効にする場合には、伝播規則を伝播規則リポジトリ８に設定し、その状態を有効に設定する。伝播規則が伝播規則リポジトリ８に有効に設定されている場合は、その伝播規則がＡＣＬに適用される。
矛盾ルールを検出する矛盾ルール検出処理部９では、矛盾ルール検出処理が行われる。最初に行われるロール変換手段１０は、サブジェクトロールリポジトリ５及びオブジェクトロールリポジトリ６の内容をそれぞれの検出処理において処理が可能な形式に変換する。そして、矛盾ルール検出手段１１は、ＡＣＬリポジトリ７からルールを抽出して、矛盾あるか否かを検出する。矛盾がある場合には、矛盾部分抽出手段１２が、矛盾部分抽出処理を行い、どのサブジェクトロールとどのオブジェクトロールの組み合わせに相反するアクセス権が設定されているかを導き出しその結果を管理者に通知する。
冗長ルールを検出する冗長ルール検出処理部１３では、冗長ルール検出処理が行われる。最初に行われるロール変換手段１４は、サブジェクトロールリポジトリ５及びオブジェクトロールリポジトリ６の内容をそれぞれの検出処理において処理が可能な形式に変換する。そして、冗長ルール検出手段１５は、ＡＣＬリポジトリ７からルールを抽出して、冗長があるか否かを検出する。冗長が検出された場合には、その旨を管理者に通知する。ここまでの処理は、システム稼動前、即ち静的に実行される。
矛盾ルール検出処理部９及び冗長ルール検出処理部１３は、アクセス制御システム２と独立して動作可能なシステム構成となっている。そのため、アクセス制御システム２の仕様にとらわれることなく比較的容易に、矛盾ルール検出処理部９及び冗長ルール検出処理部１３をシステムに統合することが可能である。
アクセス制御システム２が稼動すると、リクエスター１から、リクエスト受付部３に対して、オブジェクトに対するアクセスのリクエストが発行される。リクエスト受付部３は、そのリクエストをアクセス許可判断部４に転送する。アクセス許可判断部４では、受信したリクエストが許可されるべきか禁止されるべきかをＡＣＬの情報に基づいて判断し、判断結果をリクエスト受付部３に返信する。リクエスト受付部３は、その返信の内容に基づいて、オブジェクトを提供したり、アクセスを拒否したりする。
【００３６】
図２は、ＡＣＬリポジトリ７に保存されているルールの一覧を示した例である。また、図３は、伝播規則リポジトリ８に保存されている伝播規則の一覧を示した例である。図３において、ＯＮはその伝播規則が有効であることを示し。ＯＦＦはその伝播規則が無効であることを示している。
【００３７】
次に、本発明の一実施形態による木構造に特化した識別記号付与の処理について図４から図７を参照して説明する。
矛盾ルール検出処理部９及び冗長ルール検出処理部１３において、最初にロール変換手段１０及びロール変換手段１４が矛盾ルール及び冗長ルールの検出を可能にするため前処理を行う。その前処理とは、サブジェクトロールリポジトリ５及びオブジェクトロールリポジトリ６に保存されているロールの情報に対して行う処理であり、ロール構造が木構造をしている場合、各ノードに以下に説明する方法で識別番号を付与することにより、矛盾するルール及び冗長するルールの検出を容易にすることが可能となる。
木構造の例を図４に示す。木構造において各点はノードと呼ばれている。ここで、木構造とは１つのルートを持ち、かつ各ノードは有限個の子ノードを持つものであって、深さが有限なものとする。ルートノードとは一番上位に位置するノードである。また、ルートノードの深さを１として、以降ノードが１つ下の階層に下がる毎に、深さも１つ下がるものとする。また、あるノードに対して、それに接続する深さが１つ深いノードを子ノードとする。逆に、あるノードに対して、それに接続する深さが１つ浅いノードを親ノードとする。さらに、あるノードから上にたどって到達できるノードの集合を祖先ノード、下にたどって到達できるノードの集合を子孫ノードとする。
本実施形態では、木の各ノードが１つのロールに対応しているものと想定する。木構造で示されるロールの例としては、図５に示すような社員の役職等が考えられる。
【００３８】
次に、本実施形態のノードに対する識別記号付与処理の手順について説明する。識別記号は２組の自然数から構成される。以下の説明では、各ノードにＰ（，）という記号を付与し、これに対して識別記号を付与する手順について図６の木構造を例に説明していく。
手順１：与えられた木の全ノードについて、そのノードが持つ子ノードの数を検索し、そのうち最大のものをmaxとする。図６では、深さが４で左から４番目に位置するノードが最大の子ノードを有しており、その数は４個である。従って、max=4となる。
手順２：深さに応じて、各ノードに第１識別記号を付与する。ルートの第１識別記号は１となり、ルートの子ノードの第１識別記号は２となる。この時、深さの最大値をdepとすると、図６ではdep=7となる。
手順３：ルートノードの第２識別記号を１とする。ルートノード以外のノードの第２識別記号は次の手順で付与する。ある親ノードの第２識別記号を n としたとき、max(n-1)は(n-1)にmaxを乗じた値を示し、その子ノードの第２識別記号は左から順番にmax(n-1)+1,max(n-1)+2,・・・,max(n-1)+maxとする。第２識別記号は第１識別記号が小さいノードから順次計算するものとする。また、max個の子ノードを持たないノードについては、第２識別記号の計算を途中で打ち切り、次のノードの計算を行うようにする。
以上が、ノードへの識別記号付与の処理手順である。上記、手順に従えば、全ての木構造に対して識別記号を一意に付与することが可能である。
また、上記の手順１において、１つの木において、あるノードが保持する最大の子ノードの数をmaxとしている。しかし、実際には、あるノードが保持する最大の子ノード数以上の任意の自然数をmaxとして手順２以降の作業を行ってもよい。つまり、上記の例では４以上の任意の自然数をmaxに設定しても問題はない。例えば、max=全ノード数などとしても良い。
【００３９】
次に、上記のノードに付与された識別記号に基づいた矛盾ルールの検出の処理について説明する。最初に、前提条件として、ＡＣＬの中のルールは以下の形式で記述されるとする。
ルールの記述形式：Auth±(SubjectRole=“○○○○○”，ObjectRole=“○○○○○”)
ここで、Auth+は許可を表し、Auth-は禁止を表すものとする。例えば、
Auth+(SubjectRole=“部長”，ObjectRole=“機密ファイル”)というルールは、サブジェクトロールが部長に属するサブジェクトはオブジェクトロールが機密ファイルに属するオブジェクトにアクセスが許可されていることを定義している。また、
Auth-(SubjectRole=“課長”，ObjectRole=“重要ファイル”)
というルールは、サブジェクトロールが課長に属するサブジェクトはオブジェクトロールが重要ファイルに属するオブジェクトにアクセスが禁止されていることを定義している。
【００４０】
本実施形態では、矛盾ルールを「同一のサブジェクトロールが同一のオブジェクトロールに対する相異なるアクセス権（Auth+とAuth-）を保持するように２つのルールで設定されている場合に、それらの２つのルールを矛盾ルールとする。」と定義する。
最も単純な形式の矛盾ルールの例としては、以下のような２つのルールがある。１つめのルールがAuth+(SubjectRole=“部長”，ObjectRole=“機密ファイル”)であり、２つめのルールがAuth-(SubjetRole=“部長”，ObjectRole=“機密ファイル”)の場合である。
次に、本実施形態で前提とする３種類の伝播規則について説明する。伝播規則とは、ＡＣＬに明示的に設定されたアクセス権が、ロール構造に基づいて、ある一定の規則で他のロール間のアクセス権に伝播して、アクセス権の設定範囲を拡張することを定める規則である。ＡＣＬに明示的に宣言されたルールに対して、伝播規則に従って設定されたアクセス権は暗黙的に設定されたアクセス権と呼ばれている。伝播規則には以下の３つの規則がある。
１つめは、PermitPropagation(down)であり、ルール：Auth+(SubjectRole=“Ａ”，ObjectRole=“Ｂ”)がＡＣＬで設定されている場合に、サブジェクトロールがＡの祖先ノードに該当する全サブジェクトロールに所属するサブジェクトから、オブジェクトロールがＢの子孫ノードに該当する全オブジェクトロールに所属するオブジェクトへのアクセスを許可する規則である。
２つめは、PermitPropagation(up)であり、ルール：Auth+(SubjectRole=“Ａ”，ObjectRole=“Ｂ”)がＡＣＬで設定されている場合に、サブジェクトロールがＡの祖先ノードに該当する全サブジェクトロールに所属するサブジェクトから、オブジェクトロールがＢの祖先ノードに該当する全オブジェクトロールに所属するオブジェクトへのアクセスを許可する規則である。
３つめは、ProhibitPropagationであり、ルール：Auth-(SubjectRole=“Ａ”，ObjectRole=“Ｂ”)がＡＣＬで設定されている場合に、サブジェクトロールがＡの子孫ノードに該当する全サブジェクトロールに所属するサブジェクトから、オブジェクトロールがＢの子孫ノードに該当する全オブジェクトロールに所属するオブジェクトへのアクセスを禁止する規則である。
これらの３種類の伝播規則のうちどれを使うかは、伝播規則リポジトリ８の中で定義されている。なお、伝播規則は１つのみを使用する場合の他に、複数を組み合わせて使用してもよく、逆に１つも使用していなくても良いものとする。
【００４１】
次に、本実施形態における矛盾ルール検出処理について説明する。
矛盾ルール検出処理は、大きく分けて「矛盾ルール抽出処理」・「矛盾ルール判定処理」・「矛盾部分抽出処理」の３つの処理から構成される。
最初に、矛盾ルール抽出処理について図８を参照して説明する。ＡＣＬリポジトリ７からＡＣＬを読み出し、ＡＣＬに記述されているルールから矛盾ルールとなる可能性のあるルールの組み合わせを抽出する。即ち、ＡＣＬに含まれる全てのルールの組み合わせをチェックし、Auth+とAuth-の組を抽出する。そして、抽出されたこれらの組を矛盾ルール検出処理に引き渡す。ルールの数がｎ個の場合には、組み合わせの総数はnC2=n(n-1)/2となる（ステップＳ８−１）。全てのルールに連続で番号を振り、総当たりで検出を行うため、ｉとｊのパラメータを設定する。ｉに０を設定し（ステップＳ８−２）、ｉがｎより小さい場合に、処理を継続するループを設定する（ステップＳ８−３とステップＳ８−１２の間）。ｉにｉ＋１を設定する（ステップＳ８−４）。ｊにｉを設定する（ステップＳ８−５）。次に、ｊがｎ以下の場合に処理を継続するループを設定する（ステップＳ８−６とステップＳ８−１１の間）。ｊにｊ＋１を設定する（ステップＳ８−７）。もし、ｉとｊが等しい場合（Ｙｅｓの場合）には、同じルールを判定する処理となるためスキップし、次の組み合わせに進むためステップＳ８−６に戻る。ｉとｊが等しくない場合（Ｎｏの場合）には次の処理に進む（ステップＳ８−８）。ｉ番目のルールがAuth+かつｊ番目のルールがAuth-であるか、または、ｉ番目のルールがAuth-かつｊ番目のルールがAuth+であるかを判定する。この判定は、Auth+同士、Auth-同士の判定処理を除外するためである。もし、上記判定条件に一致しない場合（Ｎｏの場合）は次の組み合わせに進むためステップＳ８−６に戻る。上記判定条件に一致する場合（Ｙｅｓの場合）には次の矛盾ルール判定処理へ進む（ステップＳ８−９）。ｉ番目とｊ番目のルールを引数として、矛盾ルール判定処理を呼び出す（ステップＳ８−１０）。矛盾ルール判定処理の後、ｊがｎ以下の場合にはステップＳ８−６に戻り、ｊを１増やして次の組み合わせについて処理を行い（ステップＳ８−１１）、ｊがｎを超えると、次にｉがｎ以上になるまでステップＳ８−３に戻って処理を行う（ステップＳ８−１２）。この処理により、ＡＣＬリポジトリ７の中のルールのうちAuth+とAuth-の組み合わせが抽出され、その組み合わせについて矛盾ルール判定処理が行われることになる。
【００４２】
また、矛盾ルール抽出処理において、ＡＣＬのルールを予めAuth+とAuth-の２組に分類して並べ替えを行っていれば、矛盾ルール抽出処理は、図９に示すように簡略化される。図９に示す処理は、まず、１番目からｎ番目までのルールがAuth+、ｎ＋１番目からｎ＋ｍ番目のルールまでが、Auth-となるように並べ替えを行っている。そして、ｎにAuth+ルールの総数を設定し、ｍにAuth-ルールの総数を設定する（ステップＳ９−１）。次に、ｉに０を設定し（ステップＳ９−２）、ｉがｎより小さい場合に処理を継続するループを設定する（ステップＳ９−３からステップＳ９−１０の間）。ｊにｎを設定し（ステップＳ９−４）、ｉにｉ＋１を設定する（ステップＳ９−５）。次に、ｊがｎ＋ｍより小さい場合に処理を継続するループを設定する（ステップＳ９−６とステップＳ９−９の間）。ｊにｊ＋１を設定し（ステップＳ９−７）、ｉ番目とｊ番目のルールを引数として、矛盾ルール判定処理を呼び出す（ステップＳ９−８）。矛盾ルール判定処理の後、ｊがｎ＋ｍより小さい場合にはステップＳ９−６に戻り、ｊを１増やして矛盾ルール判定処理を継続し（ステップＳ９−９）、ｊがｎ＋ｍ以上になると、次にｉがｎ以上になるまでステップＳ９−３に戻って処理を継続する（ステップＳ９−１０）。
【００４３】
次に、図１０を参照して矛盾ルール抽出処理から呼び出される矛盾ルール判定処理について説明する。最初に、図１０において、maxsは、ロール変換手段１０によりサブジェクトロールに識別符号を付与する際に決定されたmax値を、また、maxoは、オブジェクトロールに識別符号を付与する際に決定されたmax値を意味するものとする。また、式（１）
の記号はχ以上の自然数のうち、最小の自然数を意味するものとする。
矛盾ルール判定処理には引数として、以下の２つのルールが渡される。このとき、サブジェクトロール及びオブジェクトロールは、ロール変換手段１０で上述した識別記号を用いた形式で記述されており、Auth+のサブジェクトロールはP(a,b)として、オブジェクトロールはQ(c,d)としてAuth+(SubjectRole=“P(a,b)”，ObjectRole=“Q(c,d)”)のように設定される。同様にAuth-のサブジェクトロールはP(e,f)として、オブジェクトロールはQ(g,h)としてAuth-(SubjectRole=“P(e,f)”，ObjectRole=“Q(g,h)”)のように設定される。ここでａ、ｃ、ｅ、ｇは第１識別記号であり、ｂ、ｄ、ｆ、ｈは第２識別記号である（ステップＳ１０−１）。
２つのルールが矛盾ルールとなるかならないかは、伝播規則リポジトリ８に、どのような伝播規則が定義されているかにより異なる。本実施形態では、以下の６種類の伝播規則が設定されている場合の矛盾ルールの判定処理について説明する。６種類のうち、１つめはPermitPropagation(up)+ProhibitPropagation、２つめはPermitPropagation(down)+ProhibitPropagation、３つめはPermitPropagation(up)、４つめはPermitPropagation(down)、５つめはProhibitPropagation、６つめはPropagtion無しである。この前提で設定されている伝播規則を伝播規則リポジトリ８から読み出し、設定が有効である伝播規則に従って処理を分岐する（ステップＳ１０−２）。
「PermitPropagation(up)+ProhibitPropagation」「PermitPropagation(up)」「ProhibitPropagation」のいずれかの伝播規則が伝播規則リポジトリ８に有効として設定されている場合には、式（２）の条件に一致するか否かで矛盾ルールであるか否かを判定することができる（ステップＳ１０−３）。条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には矛盾検出として判定され（ステップＳ１０−４）、検出された部分を引数として矛盾部分抽出処理を呼び出す（ステップＳ１０−５）。
「PermitPropagation(down)+ProhibitPropagation」「PermitPropagation(down)」「PermitPropagation(down)」のいずれかの伝播規則が伝播規則リポジトリ８により設定されている場合には、式（２）または、式（３）の条件に一致するか否かで矛盾ルールであるか否かを判定することができる（ステップＳ１０−６）。条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には矛盾検出として判定され（ステップＳ１０−７）、検出された部分を引数として矛盾部分抽出処理を呼び出す（ステップＳ１０−８）。
Propagation無しの場合には式（４）の条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には矛盾検出として判定され（ステップＳ１０−１０）、検出された部分を引数として矛盾部分抽出処理を呼び出す（ステップＳ１０−１１）。
それ以外の伝播規則の場合には判定不能として処理される（ステップＳ１０−１２）。
【００４４】
次に、矛盾ルール判定処理から呼び出される矛盾部分抽出処理について説明する。矛盾部分抽出処理では、図１０で説明した矛盾ルール判定処理により矛盾と判定された２つのルールに関して、矛盾部分を抽出する作業を行う。矛盾部分抽出処理は、図１０に示すどの過程で矛盾が検出されたかにより異なる処理を必要とする。具体的には、伝播規則と矛盾ルール検出処理で用いられた式の組み合わせにより、以下に示す８通りに分岐して処理が行われる。
１つめの組み合わせは、PermitPropagation(up)+ProhibitPropagationの場合に式（２）の条件に合致して矛盾が検出された場合の矛盾部分はサブジェクトロールが式（５）を満たし、オブジェクトロールが式（６）を満たす部分となる。
２つめの組み合わせは、PermitPropagation(up)の場合で式（２）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールがP(e,f)で、オブジェクトロールがQ(g,h)の部分となる。
３つめの組み合わせは、ProhibitPropagationの場合で式（２）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールがP(a,b)でオブジェクトロールがQ(c,d)の部分となる。
４つめの組み合わせは、PermitPropagation(down)+ProhibitPropagationの場合で、式（２）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールが式（５）を満たし、オブジェクトロールが式（７）を満たす部分となる。式（７）において、depoは識別記号付与方法において決定されたオブジェクトロールのdep値を意味するものとする。
５つめの組み合わせは、PermitPropagation(down)の場合で式（２）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールがP(e,f)で、オブジェクトロールがQ(g,h)の部分となる。
６つめの組み合わせは、PermitPropagation(down)+ProhibitPropagationの場合で式（３）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールが式（５）を満たし、オブジェクトロールが式（８）を満たす部分となる。
７つめの組み合わせは、PermitPropagation(down)の場合で式（３）の条件に合致して矛盾が検出された場合の矛盾部分はサブジェクトロールがP(a,b)で、オブジェクトロールがQ(c,d)の部分がとなる。
８つ目の組み合わせは、Propagation無しの場合で、式（４）の条件に合致して矛盾が検出された場合の矛盾部分は、サブジェクトロールがP(a,b)で、オブジェクトロールがQ(c,d)の部分となる。
矛盾部分抽出処理により抽出された矛盾部分は、管理者に通知され、管理者は矛盾無くアクセス制御が行われるよう、それらのルールに対して回避策を講じる必要がある。
また、上記１つめと４つめと６つめの組み合わせにおいては、式で示されるサブジェクトロールの集合が、式で示されるオブジェクトロールの集合に対して相反するアクセス権を設定していることを意味する。また、４つめ及び６つめの組み合わせで示す式（５）、式（７）、式（８）を用いてサブジェクトロール及びオブジェクトロールを導くと、実際には存在しないサブジェクトロールやオブジェクトロールが導かれる可能性がある。これは、付与された識別記号に起因して発生する。この問題を避けるために抽出された矛盾部分に該当するサブジェクトロールやオブジェクトロールが実際に存在するか否かをチェックする必要がある。
【００４５】
次に、上記識別記号付与方法に基づいた冗長ルール検出処理について説明する。本実施形態では、冗長ルールを「同一のアクセス権（Auth+とAuth-、または、Auth-とAuth+）を定める２つのルールにおいて、片方のルールで設定しているアクセス権が、もう片方のルールで設定しているアクセス権を完全に包含している場合に、後者のルールを冗長ルールとする。」と定義する。
冗長ルールの例としては次のものが考えられる。例えば、サブジェクトロール構造として「一般社員」「課長」「部長」「副本部長」「本部長」というロールが存在していると仮定する。これらの属性は階層関係になっており、一番階層の低いのが「一般社員」であり、一番高いのが「本部長」である。さらに伝播規則リポジトリ８にPermitPropagation(up)が設定されているとする。ここで、以下のような２つのルールを考える。
ルール１：Auth+(SubjectRole=“課長”，ObjectRole=“機密ファイル”)
ルール２：Auth+(SubjectRole=“副本部長”，ObjectRole=“機密ファイル”)
この時、ルール１では、サブジェクトロールが「課長」に属するサブジェクトが「機密ファイル」にアクセスすることを許可している。伝播規則により、サブジェクトロールが「部長」「副本部長」「本部長」に属するサブジェクトが「機密ファイル」にアクセスすることが同時に許可される。さらに、ルール２では、サブジェクトロールが「副本部長」に属するサブジェクトが「機密ファイル」にアクセスすることを許可している。伝播規則により、サブジェクトロールが「本部長」に属するサブジェクトが「機密ファイル」にアクセスすることが同時に許可される。
つまり、ルール２で設定されているアクセス権は全てルール１で設定済みであり、ルール２はＡＣＬの中に不要である。この時、ルール２は冗長ルールと呼ばれる。
冗長ルール検出方法におけるその他の前提条件は、上述した矛盾ルール検出方法における前提条件と同じである。
【００４６】
冗長ルール検出処理について説明する。冗長ルール検出処理は、大きく分けて「冗長ルール抽出処理」と「冗長ルール判定処理」の２つの処理から構成される。
最初に、図１１を参照して冗長ルール抽出処理について説明する。ＡＣＬリポジトリ７からＡＣＬを読み出し、ＡＣＬに記述されているルールから冗長ルールとなる可能性のあるルールの組み合わせを抽出する。即ち、ＡＣＬに含まれる全てのルールの組み合わせをチェックし、Auth+とAuth+、または、Auth-とAuth-のルールの組を抽出する。ルールの数がｎ個の場合には、組み合わせの総数はnC2=n(n-1)/2となる（ステップＳ１１−１）。全てのルールに連続で番号を振り、総当たりで検出を行うため、ｉとｊのパラメータを設定する。ｉに０を設定し（ステップＳ１１−２）、ｉがｎより小さい場合に、処理を継続するループを設定する（ステップＳ１１−３とステップＳ１１−１２の間）。ｉにｉ＋１を設定する（ステップＳ１１−４）。ｊにｉを設定する（ステップＳ１１−５）。次に、ｊがｎ以下の場合に処理を継続するループを設定する（ステップＳ１１−６とステップＳ１１−１１の間）。ｊにｊ＋１を設定する（ステップＳ１１−７）。もし、ｉとｊが等しい場合（Ｙｅｓの場合）には、同じルールを判定する処理となるためスキップし、次の組み合わせに進むためステップＳ１１−６に戻る。ｉとｊが等しくない場合（Ｎｏの場合）には次の処理に進む（ステップＳ１１−８）。ｉ番目のルールがAuth+かつｊ番目のルールがAuth+であるか、または、ｉ番目のルールがAuth-かつｊ番目のルールがAuth-であるかを判定する。この判定は、Auth+とAuth-の組み合わせの判定処理を除外するためである。もし、上記判定条件に一致しない場合（Ｎｏの場合）は次の組み合わせに進むためステップＳ１１−６に戻る。上記判定条件に一致する場合（Ｙｅｓの場合）には次の冗長ルール判定処理へ進む（ステップＳ１１−９）。ｉ番目とｊ番目のルールを引数として、冗長ルール判定処理を呼び出す（ステップＳ１１−１０）。矛盾ルール判定処理の後、ｊがｎ以下の場合にはステップＳ１１−６に戻り、ｊを１増やして次の組み合わせに進み（ステップＳ１１−１１）、ｊがｎを超えると、次にｉがｎ以上になるまでステップＳ１１−３に戻って処理を行う（ステップＳ１１−１２）。この処理により、ＡＣＬリポジトリ７の中にあるルールのうちAuth++同士、Auth-同士の組み合わせが抽出され、その組み合わせについて冗長ルール判定処理が行われることになる。
上記処理において、矛盾ルール抽出処理の場合と同様に、ＡＣＬのルールを予めAuth+とAuth-の２組に分類して並べ替えをしておくことで冗長ルールを簡略化することができる。
【００４７】
次に、冗長ルールの判定処理を図１２を参照して説明する。最初に、図１２において、maxsは、前述した識別記号付与方法によりサブジェクトロールに識別符号を付与する際に決定されたmax値を、また、maxoは、前述した識別記号付与方法によりオブジェクトロールに識別符号を付与する際に決定されたmax値を意味するものとする。また、式（１）の記号はχ以上の自然数のうち、最小の自然数を意味するものとする。
冗長ルール判定処理には引数として、以下の２つのルールが渡されている。
ルール１：Auth+(SubjectRole=“P(a,b)”，ObjectRole=“Q(c,d)”)
ルール２：Auth+(SubjectRole=“P(e,f)”，ObjectRole=“Q(g,h)”)
または、
ルール１：Auth-(SubjectRole=“P(a,b)”，ObjectRole=“Q(c,d)”)
ルール２：Auth-(SubjectRole=“P(e,f)”，ObjectRole=“Q(g,h)”)
上記のように、サブジェクトロール及びオブジェクトロールは、ロール変換手段１４により付与された識別記号を用いた形式で記述されている。また、冗長ルール検出処理においても、矛盾ルール検出処理で用いたものと同様の識別記号付与手順により付与された記号を用いて検出することが可能である。
上記において、a≦eとなるようにルール１とルール２を決定する。特にa＝eの場合は、どちらをルール１にしてもルール２としても良い（ステップＳ１２−１）。
２つのルールのうち片方が冗長ルールとなるかならないかは、伝播規則リポジトリ８にどのような伝播規則が定義されているかにより異なる。本実施形態では、以下の６種類の伝播規則が設定されている場合の冗長ルールの判定処理について説明する。６種類のうち、１つめはPermitPropagation(up)+ProhibitPropagation、２つめはPermitPropagation(down)+ProhibitPropagation、３つめはPermitPropagation(up)、４つめはPermitPropagation(down)、５つめはProhibitPropagation、６つめはPropagtion無しである。この前提で設定されている伝播規則を伝播規則リポジトリ８から読み出し、設定が有効である伝播規則に従って処理を分岐する（ステップＳ１２−２）。
「PermitPropagation(up)+ProhibitPropagation」「PermitPropagation(up)」「ProhibitPropagation」のいずれかの伝播規則が伝播規則リポジトリ８に有効として設定されている場合には、上記した矛盾ルール判定処理で用いた式（２）の条件に一致するか否かで冗長ルールであるか否かを判定することができる（ステップ１２−３）。条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には冗長検出として判定される（ステップＳ１２−４）。
「PermitPropagation(down)+ProhibitPropagation」「PermitPropagation(down)」のいずれかの伝播規則が伝播規則リポジトリ８により設定されている場合には、同様に式（２）または式（３）の条件に一致するか否かで冗長ルールであるか否かを判定することができる（ステップＳ１２−５）。条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には冗長検出として判定される（ステップＳ１２−６）。
Propagation無しの場合には、同様に式（４）の条件に一致しない場合（Ｎｏの場合）、処理は終了し、条件に一致する場合（Ｙｅｓの場合）には冗長検出として判定される（ステップＳ１２−８）。
それ以外の伝播規則の場合には判定不能として処理される（ステップＳ１２−９）。
上記手順に従い、冗長ルールであると検出された場合には、管理者にその旨が通知され、管理者は冗長ルールと判定されたルールを削除することにより、ＡＣＬから不要なルールを排除し、ＡＣＬの管理作業軽減を図ることができる。
【００４８】
次に、図１３から図１５を参照して本実施形態における具体的な動作例について説明する。最初に、図１３に示すようなサブジェクトロール構造が定義されているものとする。簡略化のため、ここではオブジェクトロールはただ１つ（Or1のみ）しかないものとする。
サブジェクトロールリポジトリには、以下のような形式で図１３に示すサブジェクトロールが保存されているものとする。
Sr1(Sr2(Sr3(Sr5(Sr10),Sr6),Sr4(Sr7,Sr8,Sr9(Sr12,Sr13))))
括弧の中は子ノードであることを表している。
ＡＣＬには以下の３つのルールが予め設定されているものとする。
ルール１００：Auth+(SubjectRole=”Sr12”,ObjectRole=”Or1”)
ルール１０１：Auth-(SubjectRole=”Sr4”,ObjectRole=”Or1”)
ルール１０２：Auth+(SubjectRole=”Sr2”,ObjectRole=”Or1”)
伝播規則リポジトリ８には、以下の２つの伝播規則が有効になっているものとする。
・  PermitPropagation(up)
・  ProhibitPropagation
本実施形態の信頼性を確認するため、まず、上記の前提であるサブジェクトロール構造、ＡＣＬ、伝播規則に基づいてＡＣＬに矛盾ルールと冗長ルールが含まれていることを手作業により確認する。
まず、ルール１００は、サブジェクトロールがSr12に属するサブジェクトが、Or1のオブジェクトロールに属するオブジェクトへアクセスすることを許可している。このルールにPermitPropagation(up)を適用することにより、サブジェクトロールがSr1,Sr2,Sr4,Sr9に属するサブジェクトも、Or1のオブジェクトロールに属するオブジェクトへアクセスすることが許可される。
次に、ルール１０１は、サブジェクトロールがSr4に属するサブジェクトが、Or1のオブジェクトロールに属するオブジェクトへアクセスすることを禁止している。このルールにProhibitPropagationを適用することにより、サブジェクトロールがSr7,Sr8,Sr9,Sr11,Sr12,Sr13に属するサブジェクトも、Or1のオブジェクトロールに属するオブジェクトへアクセスすることが禁止される。
最後に、ルール１０２は、サブジェクトロールがSr2に属するサブジェクトが、Or1のオブジェクトロールに属するオブジェクトへアクセスすることを許可している。このルールにPermitPropagtion(up)を適用することにより、サブジェクトロールがSr1に属するサブジェクトも、Or1のオブジェクトロールに属するオブジェクトへアクセスすることが許可される。
以上から、導かれた事実を整理すると、図１４に示すように各ロールにアクセス権が設定されていることがわかる。ここで、図１４中の記号＋は許可を、記号−は禁止を示している。ＡＣＬと図１４を照らし合わせることにより、以下の事実がわかる。１点目は、ルール１００とルール１０１は矛盾ルールである。２点目は、矛盾部分はサブジェクトロールがSr4,Sr9,Sr12で、オブジェクトロールがOr1である。３点目は、ルール１０２は冗長ルールである。
【００４９】
次に、本実施形態において説明した識別記号付与処理、矛盾ルール検出処理、矛盾部分検出処理、冗長ルール検出処理のそれぞれの手順を用いて、上記の事実が自動的に導かれることを説明する。まず、矛盾ルール検出処理を行うために、サブジェクトロールに識別記号を付与する。図１３に示すサブジェクトロールにおいては、Sr4が最大の子ノードをもっており、そのノード数は３である。従って、maxs＝３と設定する。次に、上記で述べた識別記号付与方法により、識別記号を付与する。図１５に識別記号が付与されたサブジェクトロール構造を示す。図１５では、識別記号を付与した結果、Sr1=A(1,1),Sr2=A(2,1),Sr3=A(3,1),Sr4=A(3,2),Sr5=A(4,1),Sr6=A(4,2),Sr7=A(4,4),Sr8=A(4,5),Sr9=A(4,6),Sr10=A(5,1),Sr11=A(5,10),Sr12=A(5,16),Sr13=A(5,17)となる。オブジェクトロールはOr1のみから構成されているが、ここでは便宜上、Or1=B(1,1)とする。この時、maxo＝１と設定される。
矛盾ルール抽出処理では、Auth+及びAuth-のルールの組み合わせが抽出の対象となる。従って、例に示すＡＣＬの場合は、ルール１００とルール１０１の組み合わせ及びルール１０１とルール１０２の組み合わせの２組が矛盾ルール判定の対象となる。
最初に、ルール１００とルール１０１の組み合わせについて矛盾ルール判定を行う。図１０の矛盾ルール検出処理のフローチャートに従うと、
・Auth+のサブジェクトロールはP(a,b)
・Auth+のオブジェクトロールはQ(c,d)
・Auth-のサブジェクトロールはP(e,f)
・Auth-のオブジェクトロールはQ(g,h)
と定義されている。従って、Sr12=P(a,b)よりa=5,b=16となり、Sr4=P(e,f)よりe=3,f=2となる。また、Or1=Q(c,d)よりc=1,d=1となり、Or1=Q(g,h)よりg=1,h=1となる。これらは、式（２）の条件を満足する。従って、ルール１００とルール１０１の組み合わせは矛盾ルールであると判定される。
次に、ルール１０１とルール１０２の組み合わせについて矛盾ルール判定を行う。上記と同様に、Sr2=P(a,b)よりa=2,b=1,Sr4=P(e,f)よりe=3,f=2となる。また、Or1=Q(c,d)よりc=1,d=1となり、Or1=Q(g,h)よりg=1,h=1となる。これらは、式（２）を満足しない、従って、ルール１０１とルール１０２の組み合わせは矛盾ルールでないと判定される。
【００５０】
次に、矛盾ルール判定処理により矛盾ルールと判定された組み合わせについて、上述した矛盾部分抽出処理に従って矛盾部分を抽出する。ルール１００とルール１０１の組み合わせは、上述した矛盾部分抽出処理に従うと、１つめの組み合わせに該当することがわかる。従って、矛盾部分は、サブジェクトロールが式（５）で導かれ、オブジェクトロールが式（６）で導かれるものとなる。ここで、式（５）及び式（６）のパラメータは、a=5,b=16,c=1,d=1,e=3,f=2,g=1,h=1,maxs=3,maxo=1であり、これらを代入するとサブジェクトロールがA(5,16),A(4,6),A(3,2)の部分が該当し、オブジェクトロールがB(1,1)の部分が該当することとなり、これらが矛盾部分として抽出される。
【００５１】
最後に、冗長ルールの検出処理について説明する。冗長ルールの抽出処理では、Auth+及びAuth+、またはAuth-及びAuth-のルールの組み合わせが抽出の対象となる。従って、上記のＡＣＬの例では、ルール１００とルール１０２の組み合わせが冗長ルールの判定対象となる。図１２において、
・ルール１のサブジェクトロールはP(a,b)
・ルール１のオブジェクトロールはQ(c,d)
・ルール２のサブジェクトロールはP(e,f)
・ルール２のオブジェクトロールはQ(g,h)
・ルール１とルール２はa≦eとなるように決定
と定義されている。従って、ルール１０２がルール１となり、ルール１００がルール２となる。さらに、Sr2=P(a,b)よりa=2,b=1となり、Sr12=P(e,f)よりe=5,f=16となる。また、Or1=Q(c,d)よりc=1,d=1となり、Or1=Q(g,h)よりg=1,h=1となる。これらは式（２）を満足する。従ってルール１０２は冗長ルールであると判定される。
【００５２】
上述のアクセス制御システム２、矛盾検出処理部９、冗長ルール検出処理部１３は内部に、コンピュータシステムを有している。そして、上述した識別記号付与、矛盾ルール検出、冗長ルール検出の処理過程は、プログラム形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
【図面の簡単な説明】
【００５３】
【図１】本発明の一実施形態におけるアクセス制御システムのブロック図である。
【図２】同実施形態におけるＡＣＬリポジトリの設定例を示す図である。
【図３】同実施形態における伝播規則リポジトリの設定例を示す図である。
【図４】同実施形態における木構造の構成例を示す図である。
【図５】同実施形態における木構造と具体的なロールの対応例を示す図である。
【図６】同実施形態における木構造における第１識別記号の付与例を示す図である。
【図７】同実施形態における木構造における第２識別記号の付与例を示す図である。
【図８】同実施形態における矛盾ルール検出処理のフローチャートである。
【図９】同実施形態における矛盾ルール検出処理の簡略化版のフローチャートである。
【図１０】同実施形態における矛盾ルール判定処理のフローチャートである。
【図１１】同実施形態における冗長ルール検出処理のフローチャートである。
【図１２】同実施形態における冗長ルール判定処理のフローチャートである。
【図１３】同実施形態における具体的動作例を示すための木構造を示す図である。
【図１４】同実施形態における具体的動作例を示すための木構造に伝播規則を適用した状態を示す図である。
【図１５】同実施形態における具体的動作例を示すための木構造に識別記号を付与した状態を示す図である。
【符号の説明】
【００５４】
１  リクエスター
２  アクセス制御システム
３  リクエスト受付部
４  アクセス許可判断部
５  サブジェクトロールリポジトリ
６  オブジェクトロールリポジトリ
７  ＡＣＬリポジトリ
８  伝播規則リポジトリ
９  矛盾ルール検出処理部
１０  ロール変換手段
１１  矛盾ルール検出手段
１２  矛盾部分抽出手段
１３  冗長ルール検出処理部
１４  ロール変換手段
１５  冗長ルール検出手段
【図１】
2005182478.tif 000019
【図２】
2005182478.tif 000020
【図３】
2005182478.tif 000021
【図４】
2005182478.tif 000022
【図５】
2005182478.tif 000023
【図６】
2005182478.tif 000024
【図７】
2005182478.tif 000025
【図８】
2005182478.tif 000026
【図９】
2005182478.tif 000027
【図１０】
2005182478.tif 000028
【図１１】
2005182478.tif 000029
【図１２】
2005182478.tif 000030
【図１３】
2005182478.tif 000031
【図１４】
2005182478.tif 000032
【図１５】
2005182478.tif 000033