説明

プログラム使用ルール候補生成装置、プログラム使用ルール候補生成方法およびプログラム使用ルール候補生成プログラム

【課題】プログラムのアクセス制御ルールを自動生成すると共にアクセス制御ルールの候補数を減らし、アクセス制御ルールの確認および修正にかかる作業負荷を軽減する。
【解決手段】アクセス履歴ファイル395はプログラム(メインプログラム)とプログラムによって使用を許可されたサービス(サブプログラム)との組み合わせを複数示す。行列ACL生成部210はアクセス履歴ファイル395に基づいてサービス毎に使用プログラムを特定し、プログラム毎に使用サービスを特定する。グループ生成部220は使用プログラムが共通する複数のサービスをサービスグループとして特定し、使用サービスが共通する複数のプログラムをプログラムグループとして特定する。ACL候補生成部230はプログラムグループとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、プログラムの使用を許可するか否かを判定するためにプログラム使用ルールの候補を生成するプログラム使用ルール候補生成装置、プログラム使用ルール候補生成方法およびプログラム使用ルール候補生成プログラムに関するものである。
【背景技術】
【0002】
計算機システムにおいてプログラムを利用するユーザのアクセス制御を行うために、予め定義されたアクセス制御情報(ACL:Access Control List)に基づいてユーザによるプログラムの利用に対して「認可」が行われている。ユーザ、プログラムはそれぞれ利用者、リソースと汎化することができる。
また、アクセス制御の設定作業にかかる負荷を低減するため、利用者を役割でグループ化するRBAC(Role−Based Access Control)のような手法が用いられている。
【0003】
一方、近年ではシステム開発においてSOA(Service−Oriented Architecture)と呼ばれる手法が用いられるようになってきた。SOAとは、様々な機能を「サービス」と呼ばれる部品として提供し、サービスを組み合わせてシステムを構築する手法である。
SOAでは、プログラムの機能をサービスとして切り出し、他のプログラムからも利用可能とすることで再利用性を高めている。サービスをプログラムから切り出したことにより、プログラムによるサービスの利用に対して「認可」を行う必要が生じる。この場合、プログラム、サービスはそれぞれ利用者、リソースに相当する。
【0004】
また、利用者によるリソースの利用履歴を用いてACLを自動的に生成する技術が提案されている(たとえば、特許文献1)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−44243号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
SOA化された当初のシステムはプログラムとサービスとが分離しただけのサイロ型のシステムであると考えられる。すなわち、サービスはもともとソフトウェアを構成するプログラム群から利用されるサブルーチン群として実装されソフトウェアから切り出されたものであった。そして、プログラム群はサービスとして切り出されたサブルーチン群すべてを利用可能であるため、アクセス制御が「緩い」。
しかしながら、再利用が進んでサービスが他のプログラムからも利用されるようになると、「緩い」アクセス制御はシステムのセキュリティホールとなり得る。
【0007】
このような状況を回避するために利用履歴を用いてACLを自動生成する場合を考える。
まず、プログラムAによるサービスaの利用履歴が無い場合にプログラムAによるサービスaの利用を禁止するルールを生成すると仮定する。このとき、プログラムAの利用頻度が低ければプログラムAが利用履歴の取得期間中に利用されない可能性が高い。このため、プログラムAによるサービスaの利用が許可されるべきであっても利用を禁止するルールが生成されてしまう。
次に、プログラムAによるサービスaの利用履歴が有る場合にプログラムAによるサービスaの利用を許可するルールを生成すると仮定する。この場合、プログラムAによってサービスaが不正に利用されていたら、プログラムAによるサービスaの利用を禁止すべきであっても利用を許可するルールが生成されてしまう。
【0008】
そこで、利用履歴を用いて自動生成したACLをシステムに組み込む場合、誤ったルールが組み込まれないように人間が自動生成されたACLを確認および修正することが不可欠である。
そして、ACLが大量に生成されてしまうとACLの確認および修正にかかる作業負荷が高くなるという課題が生ずる。
【0009】
本発明は、例えば、ACLを自動生成すると共にACLの確認および修正にかかる作業負荷を軽減できるようにすることを目的とする。
【課題を解決するための手段】
【0010】
本発明のプログラム使用ルール候補生成装置は、
メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データとして記憶する使用履歴データ記憶部と、
前記使用履歴データ記憶部に記憶された使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定する使用プログラム特定部と、
前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定するプログラムグループ特定部と、
前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成するプログラム使用ルール候補生成部とを備える。
【発明の効果】
【0011】
本発明によれば、例えば、複数のサービス(サブプログラム)をグループ化することによりACL(プログラム使用ルール)の候補数を減らし、ACLの確認および修正にかかる作業負荷を軽減することができる。
【図面の簡単な説明】
【0012】
【図1】実施の形態1におけるアクセス制御システム100の機能構成図。
【図2】実施の形態1におけるアクセス制御情報生成処理を示すフローチャート。
【図3】実施の形態1におけるACL391を示す図。
【図4】実施の形態1におけるACLグラフ396を示す図。
【図5】実施の形態1におけるアクセス履歴ファイル395を示す図。
【図6】実施の形態1におけるアクセス履歴グラフ397を示す図。
【図7】実施の形態1における行列ACL295を示す図。
【図8】実施の形態1における行列ACL生成処理(S110)を示すフローチャート。
【図9】実施の形態1における行列ACL設定処理(S117)を示すフローチャート。
【図10】実施の形態1におけるグループ生成処理(S120)を示すフローチャート。
【図11】実施の形態1におけるACL391とACL候補291との関係図。
【図12】実施の形態1におけるアクセス制御テーブル生成処理(S130)を示すフローチャート。
【図13】実施の形態1におけるACL候補グラフ296を示す図。
【図14】実施の形態1におけるアクセス制御情報生成装置200およびアクセス制御装置300のハードウェア資源の一例を示す図。
【図15】実施の形態2におけるグループ生成処理(S120)を示すフローチャート。
【図16】実施の形態2における行列ACL295を示す図。
【図17】実施の形態2における(1)プログラム間距離と(2)サービス間距離とを示す図。
【図18】実施の形態2におけるプログラム間距離毎のプログラムの組み合わせを示す図。
【図19】実施の形態2におけるプログラムグループテーブル292とサービスグループテーブル293とを示す図。
【図20】実施の形態2における(1)サービス間距離毎のサービスの組み合わせと(2)特定サービス間距離毎のサービスの組み合わせと(3)結合後のサービスの組み合わせとを示す図。
【図21】実施の形態2(機能例1)におけるアクセス制御テーブル生成処理(S130)を示すフローチャート。
【図22】実施の形態2(機能例1)における(1)組み合わせ得点表と(2)アクセス制御テーブル294とを示す図。
【図23】実施の形態2(機能例2)におけるアクセス制御テーブル生成処理(S130)を示すフローチャート。
【図24】実施の形態2(機能例2)における(1)組み合わせ得点表と(2)ソート後の組み合わせ得点表を示す図。
【図25】実施の形態2(機能例2)における(1)グループ組み合わせと使用サービスとの対応図、(2)グループ組み合わせ一覧表および(3)ソート後のグループ組み合わせ一覧表を示す図。
【図26】実施の形態2(機能例2)における第2の(1)グループ組み合わせと使用サービスとの対応図、第2の(2)グループ組み合わせ一覧表および(3)アクセス制御テーブル294を示す図。
【図27】実施の形態2(機能例3)におけるアクセス制御テーブル生成処理(S130)を示すフローチャート。
【発明を実施するための形態】
【0013】
実施の形態1.
プログラムとサービスとをそれぞれグループ化してアクセス制御情報(ACL)を生成する形態について説明する。
【0014】
図1は、実施の形態1におけるアクセス制御システム100の機能構成図である。
実施の形態1におけるアクセス制御システム100の機能構成について、図1に基づいて以下に説明する。
【0015】
アクセス制御システム100は、アクセス制御装置300とアクセス制御情報生成装置200とを有する。
アクセス制御装置300とアクセス制御情報生成装置200は、LANやインターネットなどの通信網に接続し、データ通信を行う。
【0016】
アクセス制御装置300は、アクセス認可部310、ACL投入部320および制御装置記憶部390を備える。
【0017】
アクセス認可部310は、特定のアプリケーションプログラム(メインプログラムの一例)を実行する情報処理装置からアクセス認可要求を受信する。アプリケーションプログラムはサブルーチン、ライブラリ、オブジェクトなどのサービスプログラム(サブプログラムの一例)を使用する。アクセス認可要求とはサービスプログラムの使用許可を受けるための要求である。
アクセス認可部310は、制御装置記憶部390に予め記憶されたACL391に基づいて、アプリケーションプログラムによるサービスプログラムの使用を許可するか否かを判定するアクセス判定を行う。そして、アクセス認可部310は、判定結果(アクセス認可結果)を情報処理装置へ応答する。また、アクセス認可部310は判定結果をアクセス履歴ファイル395として制御装置記憶部390に記憶する。ACL391はアプリケーションプログラム毎にアプリケーションプログラムによる使用が許可されるサービスプログラムを特定するデータである。ACL391の詳細については後述する。
【0018】
ACL投入部320は、アクセス制御情報生成装置200から新たなACL391を受信し、受信したACL391を制御装置記憶部390に記憶する。以後、アクセス認可部310は新たなACL391に基づいてアクセス判定を行う。
【0019】
以下、アプリケーションプログラムを「プログラム」といい、サービスプログラムを「サービス」という。
【0020】
アクセス制御情報生成装置200(プログラム使用ルール候補生成装置の一例)は、行列ACL生成部210、グループ生成部220、ACL候補生成部230、ACL生成部240および生成装置記憶部290を備える。
【0021】
行列ACL生成部210(使用プログラム特定部の一例)は、アクセス履歴ファイル395(使用履歴データの一例)に基づいて、サービス(サブプログラムの一例)を使用したプログラム(メインプログラムの一例)を使用プログラムとしてサービス毎に特定する。
行列ACL生成部210は、アクセス履歴ファイル395に基づいて、プログラムによって使用されたサービスを使用サービスとしてプログラム毎に特定する。
アクセス履歴ファイル395(使用履歴データの一例)はプログラムとプログラムによる使用を許可されたサービス(つまり、プログラムによって使用されたサービス)との組み合わせを複数示すデータである。
後述する行列ACL295は行列ACL生成部210の特定結果の一例である。
【0022】
例えば、行列ACL生成部210は、ACL391(プログラム使用ルールの一例)に基づいて行列ACL295(ルール行列の一例)を生成する。行列ACL295はプログラムグループとサービスグループとの組み合わせ毎にプログラムグループを構成する複数のプログラムとサービスグループを構成する複数のサービスとを対応付ける行列を示すデータである。行列ACL生成部210は、アクセス履歴ファイル395に基づいて行列ACL295内の行列要素のうち使用プログラムと使用サービスとを対応付ける行列要素に特定の値を設定する。
【0023】
グループ生成部220(プログラムグループ特定部の一例)は、行列ACL生成部210の特定結果に基づいて、使用プログラムが共通する複数のサービスをサービスグループとして特定する。
グループ生成部220は、行列ACL生成部210の特定結果に基づいて、使用サービスが共通する複数のプログラムをプログラムグループとして特定する。
後述するプログラムグループテーブル292とサービスグループテーブル293はグループ生成部220の特定結果の一例である。
【0024】
例えば、グループ生成部220は、行列ACL生成部210により設定された行列ACL295の値に基づいて、行列要素の値が共通する複数のプログラムをプログラムグループとして特定し、行列要素の値が共通する複数のサービスをサービスグループとして特定する。
【0025】
ACL候補生成部230(プログラム使用ルール候補生成部の一例)は、グループ生成部220により特定されたサービスグループに基づいてプログラムとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルール(プログラム使用ルールの候補の一例)として生成する。
例えば、ACL候補生成部230は、グループ生成部220により特定されたプログラムグループとサービスグループとに基づいて、プログラムグループとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【0026】
アクセス制御テーブル294はプログラム使用ルールとして用いるプログラム使用ルールの候補である。プログラム使用ルールはプログラムがサービスを使用するときにプログラムに対してサービスの使用を許可するか否かを判定するための規則を示すデータである。
以下、プログラムグループテーブル292とサービスグループテーブル293とアクセス制御テーブル294とを含んだデータを「ACL候補291」という。
【0027】
ACL生成部240(候補グラフ生成部の一例)は、ACL候補生成部230により生成されたアクセス制御ルールに基づいてACL候補グラフ296(プログラム使用ルールの候補グラフの一例)を生成する。ACL候補グラフ296はプログラムグループを表す表記とサービスグループを表す表記とプログラムグループとサービスグループとの組み合わせを表す表記とを含んだグラフデータである。
ACL生成部240はACL候補グラフ296を表示してACL391の編集を管理者に促し、管理者の指示に従って新たなACL391を生成し、生成したACL391をアクセス制御装置300に送信する。
【0028】
生成装置記憶部290は、アクセス制御情報生成装置200で使用される各種データを記憶する。
ACL391、アクセス履歴ファイル395、ACL候補291、行列ACL295、ACL候補グラフ296は生成装置記憶部290に記憶されるデータの一例である。
【0029】
図2は、実施の形態1におけるアクセス制御情報生成処理を示すフローチャートである。
実施の形態1においてアクセス制御情報生成装置200が実行するアクセス制御情報生成処理(プログラム使用ルール候補生成方法の一例)について、図2に基づいて以下に説明する。
【0030】
まず、アクセス制御情報生成処理の概要について説明する。
【0031】
行列ACL生成部210は、ACL391とアクセス履歴ファイル395とに基づいて、行列ACL295を生成する(S110)。
グループ生成部220は、行列ACL295に基づいて、プログラムグループテーブル292とサービスグループテーブル293とを生成する(S120)。
ACL候補生成部230は、プログラムグループテーブル292とサービスグループテーブル293と行列ACL295とに基づいて、アクセス制御テーブル294を生成する(S130)。
ACL生成部240は、ACL候補291に基づいてACL候補グラフ296を生成する(S140)。
ACL生成部240は、ACL候補グラフ296を表示して管理者の指示に従ってACL391を生成する(S150)。
【0032】
次に、アクセス制御情報生成処理の詳細について説明する。
【0033】
S110において、行列ACL生成部210はアクセス制御装置300からACL391とアクセス履歴ファイル395とを受信し、受信したACL391とアクセス履歴ファイル395とを生成装置記憶部290に記憶する。
行列ACL生成部210は、ACL391とアクセス履歴ファイル395とに基づいて行列ACL295を生成し、生成した行列ACL295を生成装置記憶部290に記憶する。
S110の後、S120に進む。
【0034】
以下に、S110における行列ACL295の生成方法について説明する。
【0035】
図3は、実施の形態1におけるACL391を示す図である。
図4は、実施の形態1におけるACLグラフ396を示す図である。
実施の形態1におけるACL391について、図3および図4に基づいて説明する。
【0036】
S110(図2参照)において、行列ACL生成部210は図3に示すACL391を受信したものとする。
【0037】
ACL391には、プログラムグループテーブル392とサービスグループテーブル393とアクセス制御テーブル394とが含まれる。
【0038】
プログラムグループテーブル392は、プログラムグループ「PG1」に属するプログラム「P」「P」「P」と、プログラムグループ「PG2」に属するプログラム「P」「P」とを示している。
【0039】
サービスグループテーブル393は、サービスグループ「SG1」に属するサービス「S」「S」と、サービスグループ「SG2」に属するサービス「S」「S」「S」とを示している。
【0040】
アクセス制御テーブル394は、プログラムグループ「PG1」によるサービスグループ「SG1」の使用が許可され、プログラムグループ「PG2」によるサービスグループ「SG2」の使用が許可されることを示している。
【0041】
つまり、プログラムグループ「PG1」に属するプログラム「P」「P」「P」は、サービスグループ「SG1」に属するサービス「S」「S」を使用することを許可される。
また、プログラムグループ「PG2」に属するプログラム「P」「P」は、サービスグループ「SG2」に属するサービス「S」「S」「S」を使用することを許可される。
【0042】
ACL391を図で表したACLグラフ396を図4に示す。
【0043】
図5は、実施の形態1におけるアクセス履歴ファイル395を示す図である。
図6は、実施の形態1におけるアクセス履歴グラフ397を示す図である。
実施の形態1におけるアクセス履歴ファイル395について、図5および図6に基づいて説明する。
【0044】
S110(図2参照)において、行列ACL生成部210は図5に示すACL391を受信したものとする。
【0045】
アクセス履歴ファイル395は、「行番号」「時刻」「プログラム」「サービス」「判断」を示す。
【0046】
例えば、行番号「1」のレコードは、「2010年2月9日9時40分29秒」にプログラム「P」によるサービス「S」の使用が「許可」されたことを示している。ACL391(図3、図4参照)がプログラム「P」によるサービス「S」の使用を「許可」しているためである。
また、行番号「5」のレコードは、「2010年2月9日10時4分21秒」にプログラム「P」によるサービス「S」の使用が「拒否」されたことを示している。ACL391(図3、図4参照)がプログラム「P」によるサービス「S」の使用を「許可」していないためである。
【0047】
アクセス履歴ファイル395を図で表したアクセス履歴グラフ397を図6に示す。
実線が「許可」を示し、点線が「拒否」を示している。
【0048】
図7は、実施の形態1における行列ACL295を示す図である。
実施の形態1における行列ACL295について、図7に基づいて以下に説明する。
【0049】
S110(図2参照)において、行列ACL生成部210は図3に示したACL候補291と図5に示したアクセス履歴ファイル395とに基づいて図7に示す第1の行列ACLと第2の行列ACLとを生成する。
【0050】
各行列ACL295は、プログラムグループに属する複数のプログラムとそのプログラムグループによる使用がACL391によって許可されるサービスグループに属する複数のサービスとを対応付けている。
【0051】
第1の行列ACLは、プログラムグループ「PG1」に属するプログラム「P」「P」「P」とサービスグループ「SG1」に属するサービス「S」「S」とを対応付けた3行2列の行列である。
第2の行列ACLは、プログラムグループ「PG2」に属するプログラム「P」「P」とサービスグループ「SG2」に属するサービス「S」「S」「S」とを対応付けた2行3列の行列である。
【0052】
行列の要素に設定されている値「1」は、プログラムによるサービスの使用許可を示す履歴がアクセス履歴ファイル395に含まれていることを示している。
値「0」は、プログラムによるサービスの使用許可を示す履歴がアクセス履歴ファイル395に含まれていないことを示している。
【0053】
例えば、図5に示したアクセス履歴ファイル395にはプログラム「P」によるサービス「S」の使用許可を示すレコード(行番号「1」「4」)が含まれる。このため、図7においてプログラム「P」とサービス「S」とに対応する第1の行列ACLの1行1列に値「1」が設定されている。
また、図5に示したアクセス履歴ファイル395にはプログラム「P」によるサービス「S」の使用許可を示すレコードが含まれない。このため、図7においてプログラム「P」とサービス「S」とに対応する第1の行列ACLの1行2列に値「0」が設定されている。
【0054】
図8は、実施の形態1における行列ACL生成処理(S110)を示すフローチャートである。
実施の形態1における行列ACL生成処理(図3、S110)について、図8に基づいて説明する。
【0055】
S111において、行列ACL生成部210は、アクセス制御テーブル394から最初のアクセス制御ルールを取得する。
例えば、行列ACL生成部210は、図3に示したアクセス制御テーブル394からプログラムグループ「PG1」とサービスグループ「SG1」とを対応付ける1行目のアクセス制御ルールを取得する。
以下、取得したアクセス制御ルールを「取得制御ルール」という。
また、取得制御ルールに示されるプログラムグループ、サービスグループを「対象プログラムグループ」「対象サービスグループ」という。
S111の後、S112に進む。
【0056】
S112において、行列ACL生成部210は、取得制御ルールを参照して対象プログラムグループを特定し、特定した対象プログラムグループに属するプログラム群をプログラムグループテーブル392に基づいて特定する。
例えば、行列ACL生成部210は、図3に示したプログラムグループテーブル392を参照し、対象プログラムグループ「PG1」に属するプログラム群「P」「P」「P」を特定する。
以下、特定したプログラム群を「特定プログラム群」という。
S112の後、S113に進む。
【0057】
S113において、行列ACL生成部210は、取得制御ルールを参照して対象サービスグループを特定し、特定した対象サービスグループに属するサービス群をサービスグループテーブル393に基づいて特定する。
例えば、行列ACL生成部210は、図3に示したサービスグループテーブル393を参照し、対象サービスグループ「SG1」に属するサービス群「S」「S」を特定する。
以下、特定したサービス群を「特定サービス群」という。
S113の後、S114に進む。
【0058】
S114において、行列ACL生成部210は、特定プログラム群に属するプログラムと特定サービス群に属するサービスとを対応付けて行列ACL295を生成する。
例えば、行列ACL生成部210は、特定プログラム群「P」「P」「P」それぞれを行に対応付け、特定サービス群「S」「S」それぞれを列に対応付けて3行2列の行列ACL295を生成する。生成される行列ACL295は、図7に示した第1の行列ACLである。6つ(=3行×2列)の行列要素には初期値「0」を設定する。
S114の後、S115に進む。
【0059】
S115において、行列ACL生成部210は、アクセス制御テーブル394に未処理のアクセス制御ルールが残っているか否かを判定する。
未処理のアクセス制御ルールが残っている場合(YES)、S116に進む。
全てのアクセス制御ルールを処理済みの場合(NO)、S117に進む。
【0060】
S116において、行列ACL生成部210は、アクセス制御テーブル394から取得制御ルールの次のアクセス制御ルールを取得する。
例えば、行列ACL生成部210は、図3に示したアクセス制御テーブル394からプログラムグループ「PG2」とサービスグループ「SG2」とを対応付ける2行目のアクセス制御ルールを取得する。
S116の後、S112に戻る。
【0061】
その後、S116で取得したアクセス制御ルールを新たな取得制御ルールとしてS112からS114を実行する。そして、全てのアクセス制御ルールの処理を終えるまでS112からS116を繰り返す。
これにより、アクセス制御テーブル394のレコード数分の行列ACL295が生成される。
例えば、図3に示したアクセス制御テーブル394に対して、図7に示した第1の行列ACLと第2の行列ACLとが生成される。但し、行列要素の値は全て初期値「0」である。
【0062】
S117において、行列ACL生成部210は、アクセス履歴ファイル395に基づいて各行列ACL295に値を設定する。設定方法については後述する。
S117により、行列ACL生成処理(S110)は終了する。
【0063】
図9は、実施の形態1における行列ACL設定処理(S117)を示すフローチャートである。
実施の形態1における行列ACL設定処理(S117)について、図9に基づいて以下に説明する。
【0064】
S117−1において、行列ACL生成部210は、アクセス履歴ファイル395から最初のアクセス履歴レコードを取得する。
例えば、行列ACL生成部210は、図5に示したアクセス履歴ファイル395から行番号「1」のアクセス履歴レコードを取得する。
以下、取得したアクセス履歴レコードを「取得履歴レコード」という。
また、取得履歴レコードに示されるプログラムを「対象プログラム」、取得履歴レコードに示されるサービスを「対象サービス」という。
S117−1の後。S117−2に進む。
【0065】
S117−2において、行列ACL生成部210は、取得履歴レコードを参照して対象プログラムと対象サービスとを特定する。
行列ACL生成部210は、対象プログラムと対象サービスとを対応付ける行列ACL295を特定し、特定した行列ACL295から対象プログラムと対象サービスとに対応する行列要素を特定する。
例えば、行列ACL生成部210は、図5に示した行番号「1」の取得履歴レコードから対象プログラム「P」と対象サービス「S」とを特定する。次に、行列ACL生成部210は、図7に示した2つの行列ACL295のうち第1の行列ACLを特定する。そして、行列ACL生成部210は、第1の行列ACLの1行1列を対象プログラム「P」と対象プログラム「S」とに対応する行列要素として特定する。
以下、特定した行列ACL295を「特定行列」、特定した行列要素を「特定行列要素」という。
S117−2の後、S117−3に進む。
【0066】
S117−3において、行列ACL生成部210は、取得履歴レコードの「判断」に「許可」と「拒否」とのいずれが設定されているかを判定する。
「許可」が設定されている場合、S117−4に進む。
「拒否」が設定されている場合、S117−5に進む。
【0067】
S117−4において、行列ACL生成部210は、特定行列要素に「1」を設定する。
例えば、図5に示した行番号「1」の取得履歴レコードの「判断」には「許可」が設定されているため、行列ACL生成部210は図7に示すように対象プログラム「P」と対象サービス「S」とに対応する対象行列要素に「1」を設定する。
S117−4の後、S117−5に進む。
【0068】
S117−5において、行列ACL生成部210は、アクセス履歴ファイル395に未処理のアクセス履歴レコードが残っているか否かを判定する。
未処理のアクセス履歴レコードが残っている場合(YES)、S117−6に進む。
全てのアクセス履歴レコードを処理済みの場合(NO)、行列ACL設定処理(S117)は終了する。
【0069】
S117−6において、行列ACL生成部210は、アクセス履歴ファイル395から取得履歴レコードの次のアクセス履歴レコードを取得する。
S117−6の後、S117−2に戻る。
【0070】
その後、S117−6で取得したアクセス履歴レコードを新たな取得履歴レコードとしてS117−2からS117−4を実行する。そして、全てのアクセス履歴レコードの処理を終えるまでS117−2からS117−6を繰り返す。
これにより、各行列ACL295の行列要素のうちサービスの使用を許可されたプログラムとプログラムによる使用が許可されたサービスとに対応する行列要素に「1」が設定される。その他の行列要素の値は初期値「0」である。
例えば、図5に示したアクセス履歴ファイル395に基づいて図7に示す2つの行列ACL295が生成される。
【0071】
図2に戻り、アクセス制御情報生成処理の説明を続ける。
【0072】
S120において、グループ生成部220は、行列ACL295に基づいて以下のようにプログラムグループテーブル292とサービスグループテーブル293とを生成する。
S120の後、S130に進む。
【0073】
図10は、実施の形態1におけるグループ生成処理(S120)を示すフローチャートである。
実施の形態1におけるグループ生成処理(S120)について、図10に基づいて以下に説明する。
【0074】
S121において、グループ生成部220は、行列ACL295を一つ選択する。
例えば、グループ生成部220は、図7に示した2つの行列ACL295のうち第1の行列ACLを選択する。
以下、選択した行列ACL295を「選択行列」という。
S121の後、S122に進む。
【0075】
S122において、グループ生成部220は、選択行列から一行を選択する。
例えば、グループ生成部220は、図7に示した第1の行列ACLからプログラム「P」に対応する行を選択する。
以下、選択する行を「グループ化対象行」という。
S122の後、S123に進む。
【0076】
S123において、グループ生成部220は、選択行列からグループ化対象行以外の一行を選択する。
例えば、グループ生成部220は、図7に示した第1の行列ACLからプログラム「P」に対応する行を選択する。
以下、選択する行を「突き合わせ対象行」という。
S123の後、S124に進む。
【0077】
S124において、グループ生成部220は、グループ化対象行の設定値と突き合わせ対象行の設定値とを列毎に比較し、グループ化対象行の設定値と突き合わせ対象行の設定値とが全ての列で一致するか否かを判定する。
グループ化対象行の設定値と突き合わせ対象行の設定値とが全ての列で一致する場合(YES)、S125に進む。
【0078】
S125において、グループ生成部220は、グループ化対象行のプログラムと突き合わせ対象行のプログラムとを同じグループとしてプログラムグループテーブル292に設定する。
例えば、図7の第1の行列ACLにおいてプログラム「P」に対応するグループ化対象行の設定値{1,0}とプログラム「P」に対応する突き合わせ対象行の設定値{1,0}とが一致する。このため、グループ生成部220は、図11に示すプログラムグループテーブル292のようにプログラム「P」とプログラム「P」とに同一グループ「PG1.1」を設定する。
図11は、実施の形態1におけるACL391とACL候補291との関係図である。
S125の後、S126に進む。
【0079】
S126において、グループ生成部220は、現在のグループ化対象行に対して突き合わせ対象行として選択されていない行が選択行列に残っているか否かを判定する。但し、前回以前のグループ化対象行に対応するプログラムと同じグループに設定されたプログラムに対応する行を除く。特定のグループに属しているプログラムは他のグループには属さないため、既に特定のグループに設定されたプログラムを現在のグループ化対象行に対応するプログラムと同じグループに設定する必要がないからである。
【0080】
突き合わせ対象行として選択されていない行が残っている場合(YES)、S123に戻る。S123において、グループ生成部220は現在のグループ化対象行に対して突き合わせ対象行として選択されてなく且つ対応するプログラムがまだ特定のグループに設定されていない行を突き合わせ対象行として選択する。そして、グループ生成部220は新たに選択した突き合わせ対象行に対してS124とS125とを実行する。
突き合わせ対象行として選択されていない行が残っていない場合(NO)、S127に進む。
【0081】
S127において、グループ生成部220は、グループ化対象行として選択されていない行が選択行列に残っているか否かを判定する。但し、前回以前のグループ化対象行に対応するプログラムと同じグループに設定されたプログラムに対応する行を除く。理由はS126と同様である。
グループ化対象行として選択されていない行が残っている場合(YES)、S122に戻る。S122において、グループ生成部220はグループ化対象行として選択されてなく且つ対応するプログラムがまだ特定のグループに設定されていない行をグループ化対象行として選択する。そして、グループ生成部220は新たに選択したグループ化対象行に対してS123からS126を実行する。
グループ化対象行として選択されていない行が残っていない場合(NO)、S122’〜S127’に進む。
【0082】
S122〜S127により選択行列に属するプログラム群がグループ分けされる。
【0083】
S122’〜S127’において、グループ生成部220は、選択行列に属するサービス群をグループ分けするために「行」と「列」とを読み替えてS122〜S127を実行する。
【0084】
つまり、グループ生成部220は、選択行列からグループ化対象列を選択し(S122’)、突き合わせ対象列を選択する(S123’)。
グループ生成部220は、グループ化対象列の設定値と突き合わせ対象列の設定値とが一致する場合(S124’「YES」)、グループ化対象列に対応するサービスと突き合わせ対象列に対応するサービスとを同一グループに設定する(S125’)。
グループ生成部220は、S122’〜S125’を繰り返して選択行列の全てのサービスをグループ分けする(S126’、S127’)。
【0085】
S122’〜S127’の後、S128に進む。
【0086】
S128において、グループ生成部220は、未選択の行列ACL295が残っているか否かを判定する。
未選択の行列ACL295が残っている場合(YES)、S121に戻り、未選択の行列ACL295に対してS122〜S127、S122’〜S127’を実行する。
全ての行列ACL295を選択済みの場合(NO)、グループ生成処理(S120)は終了する。
【0087】
グループ生成処理(S120)により、図11に示すようにACL391に対してプログラムグループテーブル292とサービスグループテーブル293とが生成される。
プログラムグループテーブル292は使用サービスが一致した複数のプログラムをグループとして示すテーブルである。サービスグループテーブル293は使用プログラムが一致した複数のサービスをグループとして示すテーブルである。
【0088】
図2に戻り、アクセス制御情報生成処理の説明を続ける。
【0089】
S130において、ACL候補生成部230は、プログラムグループテーブル292とサービスグループテーブル293と行列ACL295とに基づいて以下のようにアクセス制御テーブル294を生成する。
【0090】
図12は、実施の形態1におけるアクセス制御テーブル生成処理(S130)を示すフローチャートである。
実施の形態1におけるアクセス制御テーブル生成処理(S130)について、図12に基づいて以下に説明する。
【0091】
S131において、ACL候補生成部230は、プログラムグループテーブル292からプログラムグループを一つ選択する。
例えば、ACL候補生成部230は、図11に示したプログラムグループテーブル292からプログラムグループ「PG1.1」を選択する。
以下、選択したプログラムグループを「選択プログラムグループ」という。
S131の後、S132に進む。
【0092】
S132において、ACL候補生成部230は、選択プログラムグループからプログラムを一つ選択する。
例えば、ACL候補生成部230は、図11において選択プログラムグループ「PG1.1」からプログラム「P」を選択する。
以下、選択したプログラムを「選択プログラム」という。
S132の後、S133に進む。
【0093】
S133において、ACL候補生成部230は、サービスグループテーブル293からサービスグループを一つ選択する。
例えば、ACL候補生成部230は、図11に示したサービスグループテーブル293からサービスグループ「SG1.1」を選択する。
以下、選択したサービスグループを「選択サービスグループ」という。
S133の後、S134に進む。
【0094】
S134において、ACL候補生成部230は、選択サービスグループからサービスを一つ選択する。
例えば、ACL候補生成部230は、図11において選択サービスグループ「SG1.1」からサービス「S」を選択する。
以下、選択したサービスを「選択サービス」という。
S134の後、S135に進む。
【0095】
S135において、ACL候補生成部230は、行列ACL295の行列要素のうち選択プログラムと選択サービスとに対応する行列要素を参照する。
例えば、ACL候補生成部230は、図7において選択プログラム「P」と選択サービス「S」とに対応する第1の行列ACLの1行1列を参照する。
以下、参照する行列要素を「参照行列要素」という。
S135の後、S136に進む。
【0096】
S136において、ACL候補生成部230は、参照行列要素の値が「0」と「1」とのいずれであるかを判定する。
参照行列要素の値が「1」である場合(YES)、S137に進む。
参照行列要素の値が「0」である場合(NO)、S138に進む。
【0097】
S137において、ACL候補生成部230は、選択プログラムと選択サービスとを対応付けるアクセス制御ルールをアクセス制御テーブル294に設定する。
例えば、図7において選択プログラム「P」と選択サービス「S」とに対応する参照行列要素の値は「1」である。このため、ACL候補生成部230は、図11に示すようにアクセス制御テーブル294に選択プログラム「P」と選択サービス「S」とを対応付けてアクセス制御ルールを設定する。
S137の後、S138に進む。
【0098】
S138において、ACL候補生成部230は、選択プログラムグループに対して選択していないサービスグループがサービスグループテーブル293に残っているか否かを判定する。
選択していないサービスグループが残っている場合(YES)、S133に戻り、未選択のサービスグループに対してS134〜S137を実行する。
サービスグループを全て選択済みの場合(NO)、S139に進む。
【0099】
S139において、ACL候補生成部230は、選択していないプログラムグループがプログラムグループテーブル292に残っているか否かを判定する。
選択していないプログラムグループが残っている場合(YES)、S131に戻り、未選択のプログラムグループに対してS132〜S137を実行する。
プログラムグループを全て選択済みの場合(NO)、アクセス制御テーブル生成処理(S130)は終了する。
【0100】
アクセス制御テーブル生成処理(S130)により、図11に示すようなアクセス制御テーブル294が生成される。
【0101】
図2に戻り、アクセス制御情報生成処理の説明を続ける。
【0102】
S140において、ACL生成部240は、ACL候補291に基づいてACL候補グラフ296を生成する。
例えば、ACL生成部240は、図11に示したACL候補291に基づいて図13に示すようなACL候補グラフ296を生成する。
【0103】
図13は、実施の形態1におけるACL候補グラフ296を示す図である。
図13に示すように、プログラムグループに対応するサービスグループ、プログラムグループに属するプログラム、サービスグループに属するサービスをACL候補グラフ296により容易に把握することができる。
【0104】
図2に戻り、アクセス制御情報生成処理の説明を続ける。
【0105】
S140の後、S150に進む。
【0106】
S150において、ACL生成部240は、ACL候補グラフ296を表示装置に表示してACL候補291の編集を管理者に促す。
管理者は、ACL候補グラフ296を確認して編集(変更、追加、削除)が必要な部分を特定し、キーボードやマウスなどの入力装置を用いてACL候補グラフ296を編集する。ACL生成部240は、ACL候補グラフ296に対する編集指示に従ってACL候補291を修正する。
ACL生成部240は、修正後のACL候補291を新たなACL391としてアクセス制御装置300に送信する。
S150により、アクセス制御情報生成処理は終了する。
【0107】
図14は、実施の形態1におけるアクセス制御情報生成装置200およびアクセス制御装置300のハードウェア資源の一例を示す図である。
図14において、アクセス制御情報生成装置200およびアクセス制御装置300は、CPU911(Central・Processing・Unit)(マイクロプロセッサ、マイクロコンピュータともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、ドライブ装置904、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置904は、FD(Flexible・Disk・Drive)、CD(Compact Disc)、DVD(Digital・Versatile・Disc)などの記憶媒体を読み書きする装置である。
【0108】
通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
【0109】
磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
【0110】
プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【0111】
ファイル群924には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
【0112】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【0113】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【0114】
実施の形態1において、例えば、以下のようなアクセス制御情報生成装置200について説明した。
【0115】
アクセス制御情報生成装置200は、ACL391およびアクセス履歴ファイル395を入力とし、新たなACLの候補であるACL候補291を生成する。ACL391とは、プログラムがサービスを利用する際にアクセス制御を行う認可機能(アクセス認可部310)がアクセス可否を判断するためのルールの集合である。アクセス履歴ファイル395はアクセス可否を判断した結果である。
アクセス制御情報生成装置200は、グループ生成機能(グループ生成部220、ACL候補生成部230)を備える。
グループ生成機能は、同一のサービスを利用するプログラムの集合であるプログラムグループ、同一のプログラムから利用されるサービスの集合であるサービスグループ、プログラムグループと該プログラムグループが利用可能なサービスグループとの組から構成されるアクセス制御ルールを生成する。
【0116】
グループ生成機能は、利用対象となるサービスがすべて一致するプログラムについてプログラムグループを生成し、利用者であるプログラムがすべて一致するサービスについてサービスグループを生成する。
【0117】
既存のACL391とアクセス履歴ファイル395とをもとにACL候補291を生成することにより、より厳しいアクセス制御を行うことができるようになる。これは、プログラムグループとサービスグループとを細分化したためである。
例えば、図11において、ACL391はプログラム「P」(PG1)によるサービス「S」(SG1)の使用を許可する。しかし、ACL候補291はプログラム「P」(PG1.2)によるサービス「S」(SG1.1)の使用を許可しない。
【0118】
また、プログラムグループおよびサービスグループを生成することによりアクセス制御ルールを減らすことができる。ACL候補291をACL391として採用するかどうかは人手により判断する必要があるが、判断が必要なルールの数が減ることにより運用負荷が軽減される。
例えば、プログラムおよびサービスをグループ化しない場合、図5に示したアクセス履歴ファイル395から抽出されるルールの数は5つである(図6参照)。しかし、図11に示したアクセス制御テーブル294に設定されたルールの数は4つであり、アクセス履歴ファイル395から抽出されるルールの数(5つ)より少ない。
【0119】
プログラムグループおよびサービスグループを階層化してもよい。
つまり、プログラムグループにプログラムだけでなくプログラムグループが属してもよいし、サービスグループにサービスだけでなくサービスグループが属してもよい。
【0120】
テーブル形式のACL391およびACL候補291(図11参照)はRDB(Realational Database)を用いて実装することができる。
但し、ACL391およびACL候補291はLDAP(Light−weight Directory Access Protocol)、フラットファイルまたはその他の方式で実装しても構わない。
【0121】
プログラムグループとサービスグループとのいずれかを生成しても構わない。つまり、サービスだけをグループ化してもよいし、プログラムだけをグループ化してもよい。
【0122】
ACL391を用いずにACL候補291を生成しても構わない。また、行列ACL295を生成せずにACL候補291を生成しても構わない。
例えば、グループ生成部220はアクセス履歴ファイル395を参照し、プログラム毎に使用許可されたサービス(使用サービス)を特定する。図5の場合、プログラム「P」「P」「P」「P」「P」の使用サービスはそれぞれ{S}{S}{S}{S,S}{S}である。次に、グループ生成部220は使用サービスが一致する複数のプログラムをプログラムグループとして特定する。プログラム「P」「P」は使用サービスが{S}で一致するため一つのプログラムグループを構成する。サービスグループもプログラムグループと同様に特定することができる。次に、ACL候補生成部230はプログラムグループからいずれかのプログラムを選択し、サービスグループからいずれかのサービスを選択する。そして、ACL候補生成部230は、選択したサービスが選択したプログラムの使用サービスである場合にプログラムグループとサービスグループとを対応付けてアクセス制御ルールを生成する。
【0123】
実施の形態2.
サービスが類似する複数のプログラムをグループ化し、プログラムが類似する複数のサービスをグループ化する形態について説明する。
プログラムは複数のプログラムグループに属すことがあり、サービスは複数のサービスグループに属すことがあるものとする。
【0124】
実施の形態2におけるアクセス制御システム100の構成は、実施の形態1(図1参照)と同じである。
但し、グループ生成部220の機能とACL候補生成部230の機能は、実施の形態1と一部異なる。
【0125】
まず、グループ生成部220の機能概要について説明する。
【0126】
グループ生成部220(プログラムグループ特定部の一例)は、行列ACL生成部210の特定結果(行列ACL295)に基づいてサービスの組み合わせ毎に使用プログラムが共通する度合いを示すサービス間距離(メインプログラム共通度の一例)を算出する。
グループ生成部220は、サービス間距離が小さい順にサービスの組み合わせを複数選択し、選択したサービスの組み合わせ毎にサービスの組み合わせに含まれる複数のサービスをサービスとして設定する。
【0127】
グループ生成部220は、行列ACL生成部210の特定結果に基づいてプログラムの組み合わせ毎に使用サービスが共通する度合いを示すプログラム間距離(サブプログラム共通度の一例)を算出する。
グループ生成部220は、プログラム間距離が小さい順にプログラムの組み合わせを複数選択し、選択したプログラムの組み合わせ毎にプログラムの組み合わせに含まれる複数のプログラムをプログラムグループとして設定する。
【0128】
例えば、グループ生成部220は、2つのサービスを含んだサービスの組み合わせを複数生成し、生成したサービスの組み合わせ毎にサービス間距離を算出し、サービス間距離が小さい順にサービスの組み合わせを複数選択する。
グループ生成部220は、選択したサービスの複数の組み合わせを組み合わせて3つ以上のサービスを含んだサービスの組み合わせを生成し、生成したサービスの組み合わせに含まれる3つ以上のサービスをサービスグループとして設定する。
同様に、グループ生成部220は、3つ以上のプログラムをプログラムグループとして設定する。
【0129】
次に、グループ生成部220の機能の詳細について説明する。
【0130】
図15は、実施の形態2におけるグループ生成処理(S120)を示すフローチャートである。
実施の形態2におけるグループ生成処理(S120)について、図15に基づいて以下に説明する。
【0131】
S121Bにおいて、グループ生成部220は、行列ACL295に基づいてプログラムの組み合わせ毎にプログラム間距離を算出する。プログラム間距離とは、一致しない使用サービス(および不使用サービス)の数を意味する。使用サービスとはプログラムが使用した(使用を許可された)サービスであり、不使用サービスとはプログラムが使用しなかった(使用許可を受けなかった)サービスである。
また、サービス間距離とは、一致しない使用プログラム(および不使用プログラム)の数を意味する。使用プログラムとはサービスを使用した(サービスの使用を許可された)プログラムであり、不使用プログラムとはサービスを使用しなかった(サービスの使用許可を受けなかった)プログラムである。
【0132】
図16は、実施の形態2における行列ACL295を示す図である。
図17は、実施の形態2における(1)プログラム間距離と(2)サービス間距離とを示す図である。
図18は、実施の形態2におけるプログラム間距離毎のプログラムの組み合わせを示す図である。
【0133】
例えば、図16に示す行列ACL295の一行目(P)と二行目(P)とを比較すると全ての列で値が一致する。そこで、グループ生成部220は、プログラム「P」とプログラム「P」とのプログラム間距離を「0」とする。
また、図16に示す行列ACL295の一行目(P)と四行目(P)とを比較すると一列目(S)のみ値が一致しない。そこで、グループ生成部220は、プログラム「P」とプログラム「P」とのプログラム間距離を「1」とする。
【0134】
図16の行列ACL295に基づいて算出されるプログラム間距離を図17(1)に示し、プログラム間距離毎のプログラムの組み合わせを図18(1)に示す。
【0135】
S121Bの後、S122Bに進む。
【0136】
S122Bにおいて、グループ生成部220は、グループ化の対象にするプログラム間距離を特定する。以下、特定するプログラム間距離を「特定プログラム間距離」という。
【0137】
例えば、グループ生成部220は、プログラム間距離の小さい順にプログラムの組み合わせを参照し、全てのプログラムが少なくともいずれかのプログラムの組み合わせに含まれたときのプログラム間距離を特定プログラム間距離とする。
図18(1)の場合、全てのプログラム「P」〜「P」はプログラム間距離「0」〜「2」を有する5つのプログラムの組み合わせの少なくともいずれかに含まれるため、特定プログラム間距離は「0」〜「2」である。特定プログラム間距離「0」〜「2」のプログラムの組み合わせを図18(2)に示す。
【0138】
S122Bの後、S123Bに進む。
【0139】
S123Bにおいて、グループ生成部220は、特定プログラム間距離を有するプログラムの組み合わせの数(以下、「特定プログラム組み合わせ数」という)と所定のプログラムグループ数閾値とを比較する。
特定プログラム組み合わせ数がプログラムグループ閾値以下である場合(YES)、S125Bに進む。
特定プログラム組み合わせ数がプログラムグループ閾値より大きい場合(NO)、S124Bに進む。
【0140】
S124Bにおいて、グループ生成部220は、特定プログラム組み合わせ数をプログラムグループ数閾値以下にするために、同じ特定プログラム間距離を有するプログラムの組み合わせを結合する。
それでも特定プログラム組み合わせ数がプログラムグループ数閾値以下にならない場合、グループ生成部220は、異なるプログラム間距離を有するプログラムの組み合わせを結合する。
【0141】
例えば、プログラムグループ数閾値を「3」とする。図18(2)に示す特定プログラム組み合わせ数は「5」である。
グループ生成部220は、特定プログラム組み合わせ数をプログラムグループ閾値である「3」に減らすため、プログラム間距離の小さい順にプログラムの組み合わせを結合する。
つまり、グループ生成部220は、プログラム間距離「1」のプログラムの組み合わせ{P,P}{P,P}を結合し、プログラム間距離「2」のプログラムの組み合わせ{P,P}{P,P}を結合する。プログラムの組み合わせの結合はプログラムの組み合わせの和集合をとることを意味する。
これにより、プログラムの組み合わせは{P,P}{P,P,P}{P,P,P}の3つになる(図18(3))。
【0142】
S124Bの後、S125Bに進む。
【0143】
S125Bにおいて、グループ生成部220は、特定プログラム間距離を有するプログラムの組み合わせをプログラムグループとしてプログラムグループテーブル292に設定する。
【0144】
図19は、実施の形態2におけるプログラムグループテーブル292とサービスグループテーブル293とを示す図である。
【0145】
例えば、グループ生成部220は、図18(3)に示すプログラムの組み合わせに基づいて図19に示すようにプログラムグループテーブル292を設定する。
【0146】
S125Bの後、S121B’〜S125B’に進む。
【0147】
S121B’〜S125B’において、グループ生成部220は、S121B〜S125Bと同様にしてサービスグループをサービスグループテーブル293に設定する。
つまり、グループ生成部220はサービスの組み合わせ毎にサービス間距離を算出し(S121B’)、グループ化の対象にするサービス間距離を特定する(S122B’)。
グループ生成部220は、特定サービス組み合わせ数がサービスグループ数閾値より大きければ(S123B’「NO」)、サービスの組み合わせを結合する(S124B’)。
グループ生成部220は、各サービスの組み合わせをサービスグループとしてサービスグループテーブル293に設定する(S125B’)。
【0148】
図16の行列ACL295に基づいて算出されるサービス間距離を図17(2)に示す。
図20に(1)サービス間距離毎のサービスの組み合わせ、(2)特定サービス間距離毎のサービスの組み合わせ、(3)結合後のサービスの組み合わせを示す。但し、サービスグループ数閾値を「4」とする。
図19にサービスグループテーブル293を示す。
【0149】
S121B’〜S125B’により、グループ生成処理(S120)は終了する。
【0150】
次に、ACL候補生成部230の機能概要について説明する。
【0151】
ACL候補生成部230(プログラム使用ルール候補生成部の一例)は、プログラムグループとサービスグループとのグループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの使用サービスの数を合計して使用サービス数(使用サブプログラム合計数の一例)を算出する。
ACL候補生成部230は、グループ組み合わせ毎にプログラムとサービスとの組み合わせ数に対する使用サービス数の割合に相当する組み合わせ得点(使用サブプログラム割合数の一例)を算出する。
ACL候補生成部230は、組み合わせ得点が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルール(プログラム使用ルールの候補の一例)として生成する。
【0152】
例えば、ACL候補生成部230は、プログラムグループとサービスグループとのグループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの使用サービスの数を合計して使用サービス数を算出する。
ACL候補生成部230は、グループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの不使用サービスの数を合計して不使用サービス数(不使用サブプログラム合計数の一例)を算出する。
ACL候補生成部230は、グループ組み合わせ毎に使用サービス数と不使用サービス数との差を組み合わせ得点として算出する。
ACL候補生成部230は、算出した組み合わせ得点が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【0153】
また、ACL候補生成部230は、グループ組み合わせ毎に当該グループ組み合わせより大きい組み合わせ得点を有するグループ組み合わせと重複する使用サービスを除いて使用サービス合計数を算出する。
ACL候補生成部230は、算出した使用サービス合計数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【0154】
また、ACL候補生成部230は、プログラムグループとサービスグループとの複数のグループ組み合わせのうち少なくともいずれかのグループ組み合わせを選択する。
ACL候補生成部230は、選択したグループ組み合わせの構成を変更して新たな複数のグループ組み合わせをグループ組み合わせ群として複数生成する。
ACL候補生成部230は、生成した複数のグループ組み合わせ群のうちいずれかのグループ組み合わせ群を選択する。
ACL候補生成部230は、選択したグループ組み合わせ群からグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【0155】
次に、ACL候補生成部230の機能の詳細について機能例1〜機能例3を説明する。
【0156】
まず、ACL候補生成部230の機能例1について説明する。
機能例1では、プログラムグループとサービスグループとの組み合わせのうち使用サービス数の割合が高い組み合わせをアクセス制御ルールとして選択する。
【0157】
図21は、実施の形態2(機能例1)におけるアクセス制御テーブル生成処理(S130)を示すフローチャートである。
実施の形態2(機能例1)におけるアクセス制御テーブル生成処理(S130)について、図21に基づいて以下に説明する。
【0158】
S131Bにおいて、ACL候補生成部230は、プログラムグループテーブル292とサービスグループテーブル293とに基づいてプログラムグループとサービスグループとの組み合わせを生成する。
例えば、ACL候補生成部230は、図19に示したプログラムグループテーブル292とサービスグループテーブル293とに基づいて3つのプログラムグループ「PG1」〜「PG3」と4つのサービスグループ「SG1」〜「SG4」とを組み合わせて12個の組み合わせを生成する。
以下、生成した組み合わせを「グループ組み合わせ」という。
S131Bの後、S132Bに進む。
【0159】
S132Bにおいて、ACL候補生成部230は、行列ACL295に基づいてグループ組み合わせ毎に使用サービス数と不使用サービス数とを算出する。使用サービス数とは値が「1」である行列要素の数であり、不使用サービス数とは値が「0」である行列要素の数である。
例えば、プログラムグループ「PG2」とサービスグループ「SG2」との組み合わせをグループ組み合わせ「R6」とする。図19においてプログラムグループ「PG2」に属するプログラムは「P」「P」「P」であり、サービスグループ「SG2」に属するサービスは「S」「S」である。図16においてプログラム「P」とサービス「S」「S」とに対応する行列要素(P,S)(P,S)の値はそれぞれ「1」「1」である。また、プログラム「P」とサービス「S」「S」とに対応する行列要素(P,S)(P,S)の値はそれぞれ「1」「1」である。また、プログラム「P」とサービス「S」「S」に対応する行列要素(P,S)(P,S)の値はそれぞれ「0」「1」である。したがって、グループ組み合わせ「R6」の使用サービス数は「5」、不使用サービス数は「1」である。
S132Bの後、S133Bに進む。
【0160】
S133Bにおいて、ACL候補生成部230は、グループ組み合わせ毎に使用サービス数と不使用サービス数との差をグループ組み合わせの組み合わせ得点として算出する。
例えば、使用サービス数が「5」であり不使用サービス数が「1」であるグループ組み合わせ「R6」の組み合わせ得点は「4(=5−1)」である。
S133Bの後、S134Bに進む。
【0161】
S134Bにおいて、ACL候補生成部230は、組み合わせ得点が高いグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル294に設定する。
例えば、ACL候補生成部230は、所定の得点閾値以上の組み合わせ得点を有するグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル294に設定する。
また、ACL候補生成部230は、組み合わせ得点が高い順に所定の数のグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル294に設定する。
S134Bにより、機能例1のアクセス制御テーブル生成処理(S130)は終了する。
【0162】
図22は、実施の形態2(機能例1)における(1)組み合わせ得点表と(2)アクセス制御テーブル294とを示す図である。
図19に示したプログラムグループテーブル292とサービスグループテーブル293および図16に示した行列ACL295を用いた場合、グループ組み合わせと組み合わせ得点とは図22(1)に示す通りである。
また、組み合わせ得点が「0」以上のグループ組み合わせをアクセス制御ルールとして設定したアクセス制御テーブル294を図22(2)に示す。
【0163】
S133Bにおいて、ACL候補生成部230は、使用サービス数と不使用サービス数との合計数(行列ACL295の行列要素の数)に対する使用サービス数の割合を組み合わせ得点として算出しても構わない。
また、ACL候補生成部230は組み合わせ得点を算出せず、使用サービス数の多いグループ組み合わせをアクセス制御ルールとしても構わない。
【0164】
次に、ACL候補生成部230の機能例2について説明する。
機能例2では、他のグループ組み合わせと類似するグループ組み合わせを除外して、アクセス制御ルールにするグループ組み合わせを選択する。
【0165】
図23は、実施の形態2(機能例2)におけるアクセス制御テーブル生成処理(S130)を示すフローチャートである。
実施の形態2(機能例2)におけるアクセス制御テーブル生成処理(S130)について、図23に基づいて以下に説明する。
【0166】
S131B〜S133Bは、機能例1(図21参照)と同じである。以下、S131C以降の処理について説明する。
【0167】
S131Cにおいて、ACL候補生成部230は、使用サービス数が「0」であるグループ組み合わせを削除し、残ったグループ組み合わせを組み合わせ得点が高い順にソートする。
S131Cの後、S132Cに進む。
【0168】
図24は、実施の形態2(機能例2)における(1)組み合わせ得点表と(2)ソート後の組み合わせ得点表を示す図である。
S131C(図23参照)において、ACL候補生成部230は図24(1)の組み合わせ得点表から使用サービス数「0」のグループ組み合わせ「R1」「R4」「R5」「R8」を削除する。さらに、ACL候補生成部230は残ったグループ組み合わせを組み合わせ得点順にソートする。ソート後の組み合わせ得点表を図24(2)に示す。
【0169】
図23に戻り、機能例2のアクセス制御テーブル生成処理(S130)の説明を続ける。
【0170】
S132Cにおいて、ACL候補生成部230は、グループ組み合わせ毎に使用サービス数を算出する。但し、上位のグループ組み合わせ(組み合わせ得点が高いグループ組み合わせ)でカウントされた使用サービスは、下位のグループ組み合わせでカウントしない。
S132Cの後、S133Cに進む。
【0171】
図25は、実施の形態2(機能例2)における(1)グループ組み合わせと使用サービスとの対応図、(2)グループ組み合わせ一覧表および(3)ソート後のグループ組み合わせ一覧表を示す図である。
図25(1)は、図16に示した行列ACL295において使用サービスの行列要素(値「1」)内に、当該使用サービスが含まれるグループ組み合わせを記載したものである。図23(2)の組み合わせ得点表に基づいて、使用サービスの行列要素に対応するグループ組み合わせのうち最上位の組み合わせ得点を有するグループ組み合わせを行列要素内の上段に記載し、その他のグループ組み合わせを行列要素内の下段に記載している。
S132C(図23参照)において、ACL候補生成部230は、図25(1)の上段に記載されるグループ組み合わせの数をグループ組み合わせ毎に使用サービス数としてカウントする。
図25(1)から算出されるグループ組み合わせ毎の使用サービス数を図25(2)に示す。
【0172】
図23に戻り、機能例2のアクセス制御テーブル生成処理(S130)の説明を続ける。
【0173】
S133Cにおいて、ACL候補生成部230は、S132Cで算出した使用サービス数が「0」であるグループ組み合わせが有るか否かを判定する。
使用サービス数が「0」であるグループ組み合わせが有る場合(YES)、S134Cに進む。
使用サービス数が「0」であるグループ組み合わせが無い場合(NO)、S135Cに進む。
【0174】
S134Cにおいて、ACL候補生成部230は、使用サービス数が「0」であるグループ組み合わせを削除し、残ったグループ組み合わせを使用サービス数が多い順にソートする。
【0175】
図25(2)に示すグループ組み合わせ一覧表から使用サービス数が「0」であるグループ組み合わせ「R3」「R7」「R9」を削除し、残ったグループ組み合わせを使用サービス数が多い順にソートしたものを図25(3)に示す。
【0176】
S134Cの後、S132Cに戻る。
以後、使用サービス数が「0」であるグループ組み合わせが無くなるまでS132C〜S134Cを繰り返す。
【0177】
図26は、実施の形態2(機能例2)における第2の(1)グループ組み合わせと使用サービスとの対応図、第2の(2)グループ組み合わせ一覧表および(3)アクセス制御テーブル294を示す図である。
図25(3)に対応するグループ組み合わせと使用サービスとの対応図を図26(1)に示す。
S132C(図23参照)において、ACL候補生成部230は、図26(1)の上段に記載されるグループ組み合わせの数をグループ組み合わせ毎に使用サービス数としてカウントする。
図26(1)から算出されるグループ組み合わせ毎の使用サービス数を図26(2)に示す。
図26(2)のグループ組み合わせ一覧表には使用サービス数が「0」であるグループ組み合わせが存在しないため(S133C「NO」)、S138Cに進む。
【0178】
図23に戻り、機能例2のアクセス制御テーブル生成処理(S130)の説明を続ける。
【0179】
S135Cにおいて、ACL候補生成部230は、残ったグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル294に設定する。
S135Cにより、機能例2のアクセス制御テーブル生成処理(S130)は終了する。
【0180】
図26(2)のグループ組み合わせ一覧表から生成されるアクセス制御テーブル294を図26(3)に示す。
【0181】
次に、ACL候補生成部230の機能例3について説明する。
機能例3では、遺伝アルゴリズムを用いてアクセス制御ルールにするグループ組み合わせを生成する。
【0182】
図27は、実施の形態2(機能例3)におけるアクセス制御テーブル生成処理(S130)を示すフローチャートである。
実施の形態2(機能例3)におけるアクセス制御テーブル生成処理(S130)について、図27に基づいて以下に説明する。
【0183】
S131B〜S133Bは、機能例1(図21参照)と同じである。
S131C〜S134Cは、機能例2(図23参照)と同じである。
以下、S131D以降の処理について説明する。
【0184】
S131B〜S133Dはループして所定の回数、繰り返される。
以下、n回目のループで処理されるグループ組み合わせ群を第n世代のグループ組み合わせ群という。
【0185】
S131Dにおいて、ACL候補生成部230は、グループ組み合わせ群の評価点を算出する。ACL候補生成部230は、S131Dが1回目であれば第1世代のグループ組み合わせ群の評価点を算出し、S131Dがn回目であれば第n世代のグループ組み合わせ群の評価点を算出する。
例えば、ACL候補生成部230は、第n世代のグループ組み合わせ群に含まれるグループ組み合わせの数の逆数を第n世代のグループ組み合わせ群の評価点として算出する。つまり、グループ組み合わせの数が4つであればその評価点は「0.25(=1/4)」になる。
S131Dの後、S132Dに進む。
【0186】
S132Dにおいて、ACL候補生成部230は、所定の世代までグループ組み合わせ群の評価点を算出したか否かを判定する。
所定の世代までグループ組み合わせ群の評価点を算出した場合(YES)、S134Dに進む。
所定の世代までグループ組み合わせ群の評価点を算出していない場合(NO)、S133Dに進む。
【0187】
S133Dにおいて、ACL候補生成部230は、当世代のグループ組み合わせ群の構成を一部変異させて次世代のグループ組み合わせ群を生成する。
【0188】
例えば、ACL候補生成部230は、当世代のグループ組み合わせ群からグループ組み合わせをランダムに選択し、選択したグループ組み合わせの構成を一部変異させる。
つまり、ACL候補生成部230は、グループ組み合わせを構成するプログラムグループからランダムにプログラムを選択し、選択したプログラムを変更する。変更後のプログラムはプログラムグループに属する他のプログラムと重複しないものとする。
または、ACL候補生成部230は、選択したプログラムをプログラムグループから削除する。
または、ACL候補生成部230は、プログラムグループに属しているプログラムと異なるプログラムをプログラムグループに追加する。
また、ACL候補生成部230は、プログラムグループと同様にサービスグループに対してサービスを変更、追加または削除する。
ACL候補生成部230は、プログラムグループとサービスグループとの両方を変異させてもよいし、プログラムグループとサービスグループとのいずれかを変異させてもよい。
ACL候補生成部230は、全てのグループ組み合わせを変異させても構わない。
【0189】
例えば、ACL候補生成部230は、当世代のグループ組み合わせ群に新たにグループ組み合わせを追加する。
また、ACL候補生成部230は、当世代のグループ組み合わせ群からランダムにグループ組み合わせを選択し、選択したグループ組み合わせを削除する。
【0190】
S133Dの後、組み合わせ得点算出処理(S131B〜S133B)に戻る。
ACL候補生成部230は、次世代のグループ組み合わせ群を処理対象にして組み合わせ得点算出処理(S131B〜S133B)、グループ組み合わせ絞り込み処理(S131C〜S134C)およびS131D〜S133Dを実行する。
【0191】
S134Dにおいて、ACL候補生成部230は、評価点が最も高い世代のグループ組み合わせ群を選択する。
そして、ACL候補生成部230は、選択した世代のグループ組み合わせ群に含まれるグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル294に設定する。
S134Dにより、アクセス制御テーブル生成処理(S130)(機能例3)は終了する。
【0192】
機能例3においてグループ組み合わせ絞り込み処理(S131C〜S134C)を省略しても構わない。
【0193】
機能例3では最適化アルゴリズムとして遺伝アルゴリズムを適用しているが、その他の最適化アルゴリズム(例えば、ヒルクライム)を適用しても構わない。
【0194】
実施の形態2において、アクセス制御ルールの数が少なくなるように最適化する形態について説明した。
1つのプログラムが複数のプログラムグループに所属し、1つのサービスが複数のサービスグループに所属して膨大な数のアクセス制御ルールが生成され得る場合に特に有効である。人手により判断が必要なルールの数を削減することにより、運用負荷を軽減することができる。
【符号の説明】
【0195】
100 アクセス制御システム、200 アクセス制御情報生成装置、210 行列ACL生成部、220 グループ生成部、230 ACL候補生成部、240 ACL生成部、290 生成装置記憶部、291 ACL候補、292 プログラムグループテーブル、293 サービスグループテーブル、294 アクセス制御テーブル、295 行列ACL、296 ACL候補グラフ、300 アクセス制御装置、310 アクセス認可部、320 ACL投入部、390 制御装置記憶部、391 ACL、392 プログラムグループテーブル、393 サービスグループテーブル、394 アクセス制御テーブル、395 アクセス履歴ファイル、396 ACLグラフ、397 アクセス履歴グラフ、901 表示装置、902 キーボード、903 マウス、904 ドライブ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

【特許請求の範囲】
【請求項1】
メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データとして記憶する使用履歴データ記憶部と、
前記使用履歴データ記憶部に記憶された使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定する使用プログラム特定部と、
前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定するプログラムグループ特定部と、
前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成するプログラム使用ルール候補生成部と
を備えることを特徴とするプログラム使用ルール候補生成装置。
【請求項2】
前記使用プログラム特定部は、前記使用履歴データに基づいて、メインプログラムによって使用されたサブプログラムを使用サブプログラムとしてメインプログラム毎に特定し、
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいて、使用サブプログラムが共通する複数のメインプログラムをメインプログラムグループとして特定し、
前記プログラム使用ルール候補生成部は、前記プログラムグループ特定部により特定されたメインプログラムグループとサブプログラムグループとに基づいて、メインプログラムグループとサブプログラムグループとの組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項1記載のプログラム使用ルール候補生成装置。
【請求項3】
前記使用プログラム特定部は、前記プログラム使用ルールに基づいてメインプログラムグループとサブプログラムグループとの組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムとサブプログラムグループを構成する複数のサブプログラムとを対応付ける行列を示すデータをルール行列として生成し、前記使用履歴データに基づいて前記ルール行列内の行列要素のうち使用メインプログラムと使用サブプログラムとを対応付ける行列要素に特定の値を設定し、
前記プログラムグループ特定部は、前記使用プログラム特定部により設定されたルール行列の値に基づいて、行列要素の値が共通する複数のメインプログラムをメインプログラムグループとして特定し、行列要素の値が共通する複数のサブプログラムをサブプログラムグループとして特定する
ことを特徴とする請求項2記載のプログラム使用ルール候補生成装置。
【請求項4】
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいてサブプログラムの組み合わせ毎に使用メインプログラムが共通する度合いを示すメインプログラム共通度を算出し、メインプログラム共通度が高い順にサブプログラムの組み合わせを複数選択し、選択したサブプログラムの組み合わせ毎にサブプログラムの組み合わせに含まれる複数のサブプログラムをサブプログラムグループとして設定する
ことを特徴とする請求項1記載のプログラム使用ルール候補生成装置。
【請求項5】
前記プログラムグループ特定部は、2つのサブプログラムを含んだサブプログラムの組み合わせを複数生成し、生成したサブプログラムの組み合わせ毎に前記メインプログラム共通度を算出し、メインプログラム共通度が高い順にサブプログラムの組み合わせを複数選択し、選択したサブプログラムの複数の組み合わせを組み合わせて3つ以上のサブプログラムを含んだサブプログラムの組み合わせを生成し、生成したサブプログラムの組み合わせに含まれる3つ以上のサブプログラムをサブプログラムグループとして設定する
ことを特徴とする請求項4記載のプログラム使用ルール候補生成装置。
【請求項6】
前記使用プログラム特定部は、前記使用履歴データに基づいて、メインプログラムによって使用されたサブプログラムを使用サブプログラムとしてメインプログラム毎に特定し、
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいてメインプログラムの組み合わせ毎に使用サブプログラムが共通する度合いを示すサブプログラム共通度を算出し、サブプログラム共通度が高い順にメインプログラムの組み合わせを複数選択し、選択したメインプログラムの組み合わせ毎にメインプログラムの組み合わせに含まれる複数のメインプログラムをメインプログラムグループとして設定し、
前記プログラム使用ルール候補生成部は、前記プログラムグループ特定部により特定されたメインプログラムグループとサブプログラムグループとに基づいて、メインプログラムグループとサブプログラムグループとの組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項4記載のプログラム使用ルール候補生成装置。
【請求項7】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムとサブプログラムとの組み合わせ数に対する使用サブプログラム合計数の割合に相当する使用サブプログラム割合数を算出し、使用サブプログラム割合数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項6記載のプログラム使用ルール候補生成装置。
【請求項8】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの不使用サブプログラムの数を合計して不使用サブプログラム合計数を算出し、グループ組み合わせ毎に使用サブプログラム合計数と不使用サブプログラム合計数との差を前記使用サブプログラム割合数として算出し、算出した使用サブプログラム割合数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項6記載のプログラム使用ルール候補生成装置。
【請求項9】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの不使用サブプログラムの数を合計して不使用サブプログラム合計数を算出し、グループ組み合わせ毎に使用サブプログラム合計数と不使用サブプログラム合計数との差を前記使用サブプログラム割合数として算出し、グループ組み合わせ毎に当該グループ組み合わせより大きい使用サブプログラム割合数を有するグループ組み合わせと重複する使用サブプログラムを除いて使用サブプログラム合計数を算出し、算出した使用サブプログラム合計数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項6記載のプログラム使用ルール候補生成装置。
【請求項10】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとの複数のグループ組み合わせのうち少なくともいずれかのグループ組み合わせを選択し、選択したグループ組み合わせの構成を変更して新たな複数のグループ組み合わせをグループ組み合わせ群として複数生成し、生成した複数のグループ組み合わせ群のうちいずれかのグループ組み合わせ群を選択し、選択したグループ組み合わせ群からグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項7〜請求項9いずれかに記載のプログラム使用ルール候補生成装置。
【請求項11】
前記プログラム使用ルール候補生成装置は、さらに、
前記プログラム使用ルール候補生成部により生成されたプログラム使用ルールの候補に基づいてメインプログラムグループを表す表記とサブプログラムグループを表す表記とメインプログラムグループとサブプログラムグループとの組み合わせを表す表記とを含んだグラフを前記プログラム使用ルールの候補グラフとして生成する候補グラフ生成部を備える
ことを特徴とする請求項2、請求項3、請求項6〜請求項10いずれかに記載のプログラム使用ルール候補生成装置。
【請求項12】
使用プログラム特定部が、メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定し、
プログラムグループ特定部が、前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定し、
プログラム使用ルール候補生成部が、前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成する
ことを特徴とするプログラム使用ルール候補生成方法。
【請求項13】
請求項12記載のプログラム使用ルール候補生成方法をコンピュータに実行させるプログラム使用ルール候補生成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2011−227788(P2011−227788A)
【公開日】平成23年11月10日(2011.11.10)
【国際特許分類】
【出願番号】特願2010−98373(P2010−98373)
【出願日】平成22年4月22日(2010.4.22)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】