(57)【要約】【課題】プログラムのアクセス制御ルールを自動生成すると共にアクセス制御ルールの候補数を減らし、アクセス制御ルールの確認および修正にかかる作業負荷を軽減する。【解決手段】アクセス履歴ファイル３９５はプログラム（メインプログラム）とプログラムによって使用を許可されたサービス（サブプログラム）との組み合わせを複数示す。行列ＡＣＬ生成部２１０はアクセス履歴ファイル３９５に基づいてサービス毎に使用プログラムを特定し、プログラム毎に使用サービスを特定する。グループ生成部２２０は使用プログラムが共通する複数のサービスをサービスグループとして特定し、使用サービスが共通する複数のプログラムをプログラムグループとして特定する。ＡＣＬ候補生成部２３０はプログラムグループとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。【選択図】図１
2011227788.tif 000002
【特許請求の範囲】
【請求項１】
メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データとして記憶する使用履歴データ記憶部と、
前記使用履歴データ記憶部に記憶された使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定する使用プログラム特定部と、
前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定するプログラムグループ特定部と、
前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成するプログラム使用ルール候補生成部と
を備えることを特徴とするプログラム使用ルール候補生成装置。
【請求項２】
前記使用プログラム特定部は、前記使用履歴データに基づいて、メインプログラムによって使用されたサブプログラムを使用サブプログラムとしてメインプログラム毎に特定し、
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいて、使用サブプログラムが共通する複数のメインプログラムをメインプログラムグループとして特定し、
前記プログラム使用ルール候補生成部は、前記プログラムグループ特定部により特定されたメインプログラムグループとサブプログラムグループとに基づいて、メインプログラムグループとサブプログラムグループとの組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項１記載のプログラム使用ルール候補生成装置。
【請求項３】
前記使用プログラム特定部は、前記プログラム使用ルールに基づいてメインプログラムグループとサブプログラムグループとの組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムとサブプログラムグループを構成する複数のサブプログラムとを対応付ける行列を示すデータをルール行列として生成し、前記使用履歴データに基づいて前記ルール行列内の行列要素のうち使用メインプログラムと使用サブプログラムとを対応付ける行列要素に特定の値を設定し、
前記プログラムグループ特定部は、前記使用プログラム特定部により設定されたルール行列の値に基づいて、行列要素の値が共通する複数のメインプログラムをメインプログラムグループとして特定し、行列要素の値が共通する複数のサブプログラムをサブプログラムグループとして特定する
ことを特徴とする請求項２記載のプログラム使用ルール候補生成装置。
【請求項４】
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいてサブプログラムの組み合わせ毎に使用メインプログラムが共通する度合いを示すメインプログラム共通度を算出し、メインプログラム共通度が高い順にサブプログラムの組み合わせを複数選択し、選択したサブプログラムの組み合わせ毎にサブプログラムの組み合わせに含まれる複数のサブプログラムをサブプログラムグループとして設定する
ことを特徴とする請求項１記載のプログラム使用ルール候補生成装置。
【請求項５】
前記プログラムグループ特定部は、２つのサブプログラムを含んだサブプログラムの組み合わせを複数生成し、生成したサブプログラムの組み合わせ毎に前記メインプログラム共通度を算出し、メインプログラム共通度が高い順にサブプログラムの組み合わせを複数選択し、選択したサブプログラムの複数の組み合わせを組み合わせて３つ以上のサブプログラムを含んだサブプログラムの組み合わせを生成し、生成したサブプログラムの組み合わせに含まれる３つ以上のサブプログラムをサブプログラムグループとして設定する
ことを特徴とする請求項４記載のプログラム使用ルール候補生成装置。
【請求項６】
前記使用プログラム特定部は、前記使用履歴データに基づいて、メインプログラムによって使用されたサブプログラムを使用サブプログラムとしてメインプログラム毎に特定し、
前記プログラムグループ特定部は、前記使用プログラム特定部の特定結果に基づいてメインプログラムの組み合わせ毎に使用サブプログラムが共通する度合いを示すサブプログラム共通度を算出し、サブプログラム共通度が高い順にメインプログラムの組み合わせを複数選択し、選択したメインプログラムの組み合わせ毎にメインプログラムの組み合わせに含まれる複数のメインプログラムをメインプログラムグループとして設定し、
前記プログラム使用ルール候補生成部は、前記プログラムグループ特定部により特定されたメインプログラムグループとサブプログラムグループとに基づいて、メインプログラムグループとサブプログラムグループとの組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項４記載のプログラム使用ルール候補生成装置。
【請求項７】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムとサブプログラムとの組み合わせ数に対する使用サブプログラム合計数の割合に相当する使用サブプログラム割合数を算出し、使用サブプログラム割合数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項６記載のプログラム使用ルール候補生成装置。
【請求項８】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの不使用サブプログラムの数を合計して不使用サブプログラム合計数を算出し、グループ組み合わせ毎に使用サブプログラム合計数と不使用サブプログラム合計数との差を前記使用サブプログラム割合数として算出し、算出した使用サブプログラム割合数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項６記載のプログラム使用ルール候補生成装置。
【請求項９】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとのグループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの使用サブプログラムの数を合計して使用サブプログラム合計数を算出し、グループ組み合わせ毎にメインプログラムグループを構成する複数のメインプログラムそれぞれの不使用サブプログラムの数を合計して不使用サブプログラム合計数を算出し、グループ組み合わせ毎に使用サブプログラム合計数と不使用サブプログラム合計数との差を前記使用サブプログラム割合数として算出し、グループ組み合わせ毎に当該グループ組み合わせより大きい使用サブプログラム割合数を有するグループ組み合わせと重複する使用サブプログラムを除いて使用サブプログラム合計数を算出し、算出した使用サブプログラム合計数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項６記載のプログラム使用ルール候補生成装置。
【請求項１０】
前記プログラム使用ルール候補生成部は、メインプログラムグループとサブプログラムグループとの複数のグループ組み合わせのうち少なくともいずれかのグループ組み合わせを選択し、選択したグループ組み合わせの構成を変更して新たな複数のグループ組み合わせをグループ組み合わせ群として複数生成し、生成した複数のグループ組み合わせ群のうちいずれかのグループ組み合わせ群を選択し、選択したグループ組み合わせ群からグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータを前記プログラム使用ルールの候補として生成する
ことを特徴とする請求項７〜請求項９いずれかに記載のプログラム使用ルール候補生成装置。
【請求項１１】
前記プログラム使用ルール候補生成装置は、さらに、
前記プログラム使用ルール候補生成部により生成されたプログラム使用ルールの候補に基づいてメインプログラムグループを表す表記とサブプログラムグループを表す表記とメインプログラムグループとサブプログラムグループとの組み合わせを表す表記とを含んだグラフを前記プログラム使用ルールの候補グラフとして生成する候補グラフ生成部を備える
ことを特徴とする請求項２、請求項３、請求項６〜請求項１０いずれかに記載のプログラム使用ルール候補生成装置。
【請求項１２】
使用プログラム特定部が、メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定し、
プログラムグループ特定部が、前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定し、
プログラム使用ルール候補生成部が、前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成する
ことを特徴とするプログラム使用ルール候補生成方法。
【請求項１３】
請求項１２記載のプログラム使用ルール候補生成方法をコンピュータに実行させるプログラム使用ルール候補生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、プログラムの使用を許可するか否かを判定するためにプログラム使用ルールの候補を生成するプログラム使用ルール候補生成装置、プログラム使用ルール候補生成方法およびプログラム使用ルール候補生成プログラムに関するものである。
【背景技術】
【０００２】
計算機システムにおいてプログラムを利用するユーザのアクセス制御を行うために、予め定義されたアクセス制御情報（ＡＣＬ：Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）に基づいてユーザによるプログラムの利用に対して「認可」が行われている。ユーザ、プログラムはそれぞれ利用者、リソースと汎化することができる。
また、アクセス制御の設定作業にかかる負荷を低減するため、利用者を役割でグループ化するＲＢＡＣ（Ｒｏｌｅ−Ｂａｓｅｄ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）のような手法が用いられている。
【０００３】
一方、近年ではシステム開発においてＳＯＡ（Ｓｅｒｖｉｃｅ−Ｏｒｉｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）と呼ばれる手法が用いられるようになってきた。ＳＯＡとは、様々な機能を「サービス」と呼ばれる部品として提供し、サービスを組み合わせてシステムを構築する手法である。
ＳＯＡでは、プログラムの機能をサービスとして切り出し、他のプログラムからも利用可能とすることで再利用性を高めている。サービスをプログラムから切り出したことにより、プログラムによるサービスの利用に対して「認可」を行う必要が生じる。この場合、プログラム、サービスはそれぞれ利用者、リソースに相当する。
【０００４】
また、利用者によるリソースの利用履歴を用いてＡＣＬを自動的に生成する技術が提案されている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−４４２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＯＡ化された当初のシステムはプログラムとサービスとが分離しただけのサイロ型のシステムであると考えられる。すなわち、サービスはもともとソフトウェアを構成するプログラム群から利用されるサブルーチン群として実装されソフトウェアから切り出されたものであった。そして、プログラム群はサービスとして切り出されたサブルーチン群すべてを利用可能であるため、アクセス制御が「緩い」。
しかしながら、再利用が進んでサービスが他のプログラムからも利用されるようになると、「緩い」アクセス制御はシステムのセキュリティホールとなり得る。
【０００７】
このような状況を回避するために利用履歴を用いてＡＣＬを自動生成する場合を考える。
まず、プログラムＡによるサービスａの利用履歴が無い場合にプログラムＡによるサービスａの利用を禁止するルールを生成すると仮定する。このとき、プログラムＡの利用頻度が低ければプログラムＡが利用履歴の取得期間中に利用されない可能性が高い。このため、プログラムＡによるサービスａの利用が許可されるべきであっても利用を禁止するルールが生成されてしまう。
次に、プログラムＡによるサービスａの利用履歴が有る場合にプログラムＡによるサービスａの利用を許可するルールを生成すると仮定する。この場合、プログラムＡによってサービスａが不正に利用されていたら、プログラムＡによるサービスａの利用を禁止すべきであっても利用を許可するルールが生成されてしまう。
【０００８】
そこで、利用履歴を用いて自動生成したＡＣＬをシステムに組み込む場合、誤ったルールが組み込まれないように人間が自動生成されたＡＣＬを確認および修正することが不可欠である。
そして、ＡＣＬが大量に生成されてしまうとＡＣＬの確認および修正にかかる作業負荷が高くなるという課題が生ずる。
【０００９】
本発明は、例えば、ＡＣＬを自動生成すると共にＡＣＬの確認および修正にかかる作業負荷を軽減できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明のプログラム使用ルール候補生成装置は、
メインプログラムとメインプログラムによって使用されたサブプログラムとの組み合わせを複数示すデータを使用履歴データとして記憶する使用履歴データ記憶部と、
前記使用履歴データ記憶部に記憶された使用履歴データに基づいて、サブプログラムを使用したメインプログラムを使用メインプログラムとしてサブプログラム毎に特定する使用プログラム特定部と、
前記使用プログラム特定部の特定結果に基づいて、使用メインプログラムが共通する複数のサブプログラムをサブプログラムグループとして特定するプログラムグループ特定部と、
前記プログラムグループ特定部により特定されたサブプログラムグループに基づいてメインプログラムとサブプログラムグループとの組み合わせを示す組み合わせデータを、メインプログラムがサブプログラムを使用するときにメインプログラムに対してサブプログラムの使用を許可するか否かを判定するためのプログラム使用ルールとして用いるプログラム使用ルールの候補として生成するプログラム使用ルール候補生成部とを備える。
【発明の効果】
【００１１】
本発明によれば、例えば、複数のサービス（サブプログラム）をグループ化することによりＡＣＬ（プログラム使用ルール）の候補数を減らし、ＡＣＬの確認および修正にかかる作業負荷を軽減することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１におけるアクセス制御システム１００の機能構成図。
【図２】実施の形態１におけるアクセス制御情報生成処理を示すフローチャート。
【図３】実施の形態１におけるＡＣＬ３９１を示す図。
【図４】実施の形態１におけるＡＣＬグラフ３９６を示す図。
【図５】実施の形態１におけるアクセス履歴ファイル３９５を示す図。
【図６】実施の形態１におけるアクセス履歴グラフ３９７を示す図。
【図７】実施の形態１における行列ＡＣＬ２９５を示す図。
【図８】実施の形態１における行列ＡＣＬ生成処理（Ｓ１１０）を示すフローチャート。
【図９】実施の形態１における行列ＡＣＬ設定処理（Ｓ１１７）を示すフローチャート。
【図１０】実施の形態１におけるグループ生成処理（Ｓ１２０）を示すフローチャート。
【図１１】実施の形態１におけるＡＣＬ３９１とＡＣＬ候補２９１との関係図。
【図１２】実施の形態１におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャート。
【図１３】実施の形態１におけるＡＣＬ候補グラフ２９６を示す図。
【図１４】実施の形態１におけるアクセス制御情報生成装置２００およびアクセス制御装置３００のハードウェア資源の一例を示す図。
【図１５】実施の形態２におけるグループ生成処理（Ｓ１２０）を示すフローチャート。
【図１６】実施の形態２における行列ＡＣＬ２９５を示す図。
【図１７】実施の形態２における（１）プログラム間距離と（２）サービス間距離とを示す図。
【図１８】実施の形態２におけるプログラム間距離毎のプログラムの組み合わせを示す図。
【図１９】実施の形態２におけるプログラムグループテーブル２９２とサービスグループテーブル２９３とを示す図。
【図２０】実施の形態２における（１）サービス間距離毎のサービスの組み合わせと（２）特定サービス間距離毎のサービスの組み合わせと（３）結合後のサービスの組み合わせとを示す図。
【図２１】実施の形態２（機能例１）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャート。
【図２２】実施の形態２（機能例１）における（１）組み合わせ得点表と（２）アクセス制御テーブル２９４とを示す図。
【図２３】実施の形態２（機能例２）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャート。
【図２４】実施の形態２（機能例２）における（１）組み合わせ得点表と（２）ソート後の組み合わせ得点表を示す図。
【図２５】実施の形態２（機能例２）における（１）グループ組み合わせと使用サービスとの対応図、（２）グループ組み合わせ一覧表および（３）ソート後のグループ組み合わせ一覧表を示す図。
【図２６】実施の形態２（機能例２）における第２の（１）グループ組み合わせと使用サービスとの対応図、第２の（２）グループ組み合わせ一覧表および（３）アクセス制御テーブル２９４を示す図。
【図２７】実施の形態２（機能例３）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャート。
【発明を実施するための形態】
【００１３】
実施の形態１．
プログラムとサービスとをそれぞれグループ化してアクセス制御情報（ＡＣＬ）を生成する形態について説明する。
【００１４】
図１は、実施の形態１におけるアクセス制御システム１００の機能構成図である。
実施の形態１におけるアクセス制御システム１００の機能構成について、図１に基づいて以下に説明する。
【００１５】
アクセス制御システム１００は、アクセス制御装置３００とアクセス制御情報生成装置２００とを有する。
アクセス制御装置３００とアクセス制御情報生成装置２００は、ＬＡＮやインターネットなどの通信網に接続し、データ通信を行う。
【００１６】
アクセス制御装置３００は、アクセス認可部３１０、ＡＣＬ投入部３２０および制御装置記憶部３９０を備える。
【００１７】
アクセス認可部３１０は、特定のアプリケーションプログラム（メインプログラムの一例）を実行する情報処理装置からアクセス認可要求を受信する。アプリケーションプログラムはサブルーチン、ライブラリ、オブジェクトなどのサービスプログラム（サブプログラムの一例）を使用する。アクセス認可要求とはサービスプログラムの使用許可を受けるための要求である。
アクセス認可部３１０は、制御装置記憶部３９０に予め記憶されたＡＣＬ３９１に基づいて、アプリケーションプログラムによるサービスプログラムの使用を許可するか否かを判定するアクセス判定を行う。そして、アクセス認可部３１０は、判定結果（アクセス認可結果）を情報処理装置へ応答する。また、アクセス認可部３１０は判定結果をアクセス履歴ファイル３９５として制御装置記憶部３９０に記憶する。ＡＣＬ３９１はアプリケーションプログラム毎にアプリケーションプログラムによる使用が許可されるサービスプログラムを特定するデータである。ＡＣＬ３９１の詳細については後述する。
【００１８】
ＡＣＬ投入部３２０は、アクセス制御情報生成装置２００から新たなＡＣＬ３９１を受信し、受信したＡＣＬ３９１を制御装置記憶部３９０に記憶する。以後、アクセス認可部３１０は新たなＡＣＬ３９１に基づいてアクセス判定を行う。
【００１９】
以下、アプリケーションプログラムを「プログラム」といい、サービスプログラムを「サービス」という。
【００２０】
アクセス制御情報生成装置２００（プログラム使用ルール候補生成装置の一例）は、行列ＡＣＬ生成部２１０、グループ生成部２２０、ＡＣＬ候補生成部２３０、ＡＣＬ生成部２４０および生成装置記憶部２９０を備える。
【００２１】
行列ＡＣＬ生成部２１０（使用プログラム特定部の一例）は、アクセス履歴ファイル３９５（使用履歴データの一例）に基づいて、サービス（サブプログラムの一例）を使用したプログラム（メインプログラムの一例）を使用プログラムとしてサービス毎に特定する。
行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５に基づいて、プログラムによって使用されたサービスを使用サービスとしてプログラム毎に特定する。
アクセス履歴ファイル３９５（使用履歴データの一例）はプログラムとプログラムによる使用を許可されたサービス（つまり、プログラムによって使用されたサービス）との組み合わせを複数示すデータである。
後述する行列ＡＣＬ２９５は行列ＡＣＬ生成部２１０の特定結果の一例である。
【００２２】
例えば、行列ＡＣＬ生成部２１０は、ＡＣＬ３９１（プログラム使用ルールの一例）に基づいて行列ＡＣＬ２９５（ルール行列の一例）を生成する。行列ＡＣＬ２９５はプログラムグループとサービスグループとの組み合わせ毎にプログラムグループを構成する複数のプログラムとサービスグループを構成する複数のサービスとを対応付ける行列を示すデータである。行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５に基づいて行列ＡＣＬ２９５内の行列要素のうち使用プログラムと使用サービスとを対応付ける行列要素に特定の値を設定する。
【００２３】
グループ生成部２２０（プログラムグループ特定部の一例）は、行列ＡＣＬ生成部２１０の特定結果に基づいて、使用プログラムが共通する複数のサービスをサービスグループとして特定する。
グループ生成部２２０は、行列ＡＣＬ生成部２１０の特定結果に基づいて、使用サービスが共通する複数のプログラムをプログラムグループとして特定する。
後述するプログラムグループテーブル２９２とサービスグループテーブル２９３はグループ生成部２２０の特定結果の一例である。
【００２４】
例えば、グループ生成部２２０は、行列ＡＣＬ生成部２１０により設定された行列ＡＣＬ２９５の値に基づいて、行列要素の値が共通する複数のプログラムをプログラムグループとして特定し、行列要素の値が共通する複数のサービスをサービスグループとして特定する。
【００２５】
ＡＣＬ候補生成部２３０（プログラム使用ルール候補生成部の一例）は、グループ生成部２２０により特定されたサービスグループに基づいてプログラムとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルール（プログラム使用ルールの候補の一例）として生成する。
例えば、ＡＣＬ候補生成部２３０は、グループ生成部２２０により特定されたプログラムグループとサービスグループとに基づいて、プログラムグループとサービスグループとの組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【００２６】
アクセス制御テーブル２９４はプログラム使用ルールとして用いるプログラム使用ルールの候補である。プログラム使用ルールはプログラムがサービスを使用するときにプログラムに対してサービスの使用を許可するか否かを判定するための規則を示すデータである。
以下、プログラムグループテーブル２９２とサービスグループテーブル２９３とアクセス制御テーブル２９４とを含んだデータを「ＡＣＬ候補２９１」という。
【００２７】
ＡＣＬ生成部２４０（候補グラフ生成部の一例）は、ＡＣＬ候補生成部２３０により生成されたアクセス制御ルールに基づいてＡＣＬ候補グラフ２９６（プログラム使用ルールの候補グラフの一例）を生成する。ＡＣＬ候補グラフ２９６はプログラムグループを表す表記とサービスグループを表す表記とプログラムグループとサービスグループとの組み合わせを表す表記とを含んだグラフデータである。
ＡＣＬ生成部２４０はＡＣＬ候補グラフ２９６を表示してＡＣＬ３９１の編集を管理者に促し、管理者の指示に従って新たなＡＣＬ３９１を生成し、生成したＡＣＬ３９１をアクセス制御装置３００に送信する。
【００２８】
生成装置記憶部２９０は、アクセス制御情報生成装置２００で使用される各種データを記憶する。
ＡＣＬ３９１、アクセス履歴ファイル３９５、ＡＣＬ候補２９１、行列ＡＣＬ２９５、ＡＣＬ候補グラフ２９６は生成装置記憶部２９０に記憶されるデータの一例である。
【００２９】
図２は、実施の形態１におけるアクセス制御情報生成処理を示すフローチャートである。
実施の形態１においてアクセス制御情報生成装置２００が実行するアクセス制御情報生成処理（プログラム使用ルール候補生成方法の一例）について、図２に基づいて以下に説明する。
【００３０】
まず、アクセス制御情報生成処理の概要について説明する。
【００３１】
行列ＡＣＬ生成部２１０は、ＡＣＬ３９１とアクセス履歴ファイル３９５とに基づいて、行列ＡＣＬ２９５を生成する（Ｓ１１０）。
グループ生成部２２０は、行列ＡＣＬ２９５に基づいて、プログラムグループテーブル２９２とサービスグループテーブル２９３とを生成する（Ｓ１２０）。
ＡＣＬ候補生成部２３０は、プログラムグループテーブル２９２とサービスグループテーブル２９３と行列ＡＣＬ２９５とに基づいて、アクセス制御テーブル２９４を生成する（Ｓ１３０）。
ＡＣＬ生成部２４０は、ＡＣＬ候補２９１に基づいてＡＣＬ候補グラフ２９６を生成する（Ｓ１４０）。
ＡＣＬ生成部２４０は、ＡＣＬ候補グラフ２９６を表示して管理者の指示に従ってＡＣＬ３９１を生成する（Ｓ１５０）。
【００３２】
次に、アクセス制御情報生成処理の詳細について説明する。
【００３３】
Ｓ１１０において、行列ＡＣＬ生成部２１０はアクセス制御装置３００からＡＣＬ３９１とアクセス履歴ファイル３９５とを受信し、受信したＡＣＬ３９１とアクセス履歴ファイル３９５とを生成装置記憶部２９０に記憶する。
行列ＡＣＬ生成部２１０は、ＡＣＬ３９１とアクセス履歴ファイル３９５とに基づいて行列ＡＣＬ２９５を生成し、生成した行列ＡＣＬ２９５を生成装置記憶部２９０に記憶する。
Ｓ１１０の後、Ｓ１２０に進む。
【００３４】
以下に、Ｓ１１０における行列ＡＣＬ２９５の生成方法について説明する。
【００３５】
図３は、実施の形態１におけるＡＣＬ３９１を示す図である。
図４は、実施の形態１におけるＡＣＬグラフ３９６を示す図である。
実施の形態１におけるＡＣＬ３９１について、図３および図４に基づいて説明する。
【００３６】
Ｓ１１０（図２参照）において、行列ＡＣＬ生成部２１０は図３に示すＡＣＬ３９１を受信したものとする。
【００３７】
ＡＣＬ３９１には、プログラムグループテーブル３９２とサービスグループテーブル３９３とアクセス制御テーブル３９４とが含まれる。
【００３８】
プログラムグループテーブル３９２は、プログラムグループ「ＰＧ１」に属するプログラム「ＰＡ」「ＰＢ」「ＰＣ」と、プログラムグループ「ＰＧ２」に属するプログラム「ＰＤ」「ＰＥ」とを示している。
【００３９】
サービスグループテーブル３９３は、サービスグループ「ＳＧ１」に属するサービス「Ｓａ」「Ｓｂ」と、サービスグループ「ＳＧ２」に属するサービス「Ｓｃ」「Ｓｄ」「Ｓｅ」とを示している。
【００４０】
アクセス制御テーブル３９４は、プログラムグループ「ＰＧ１」によるサービスグループ「ＳＧ１」の使用が許可され、プログラムグループ「ＰＧ２」によるサービスグループ「ＳＧ２」の使用が許可されることを示している。
【００４１】
つまり、プログラムグループ「ＰＧ１」に属するプログラム「ＰＡ」「ＰＢ」「ＰＣ」は、サービスグループ「ＳＧ１」に属するサービス「Ｓａ」「Ｓｂ」を使用することを許可される。
また、プログラムグループ「ＰＧ２」に属するプログラム「ＰＤ」「ＰＥ」は、サービスグループ「ＳＧ２」に属するサービス「Ｓｃ」「Ｓｄ」「Ｓｅ」を使用することを許可される。
【００４２】
ＡＣＬ３９１を図で表したＡＣＬグラフ３９６を図４に示す。
【００４３】
図５は、実施の形態１におけるアクセス履歴ファイル３９５を示す図である。
図６は、実施の形態１におけるアクセス履歴グラフ３９７を示す図である。
実施の形態１におけるアクセス履歴ファイル３９５について、図５および図６に基づいて説明する。
【００４４】
Ｓ１１０（図２参照）において、行列ＡＣＬ生成部２１０は図５に示すＡＣＬ３９１を受信したものとする。
【００４５】
アクセス履歴ファイル３９５は、「行番号」「時刻」「プログラム」「サービス」「判断」を示す。
【００４６】
例えば、行番号「１」のレコードは、「２０１０年２月９日９時４０分２９秒」にプログラム「ＰＡ」によるサービス「Ｓａ」の使用が「許可」されたことを示している。ＡＣＬ３９１（図３、図４参照）がプログラム「ＰＡ」によるサービス「Ｓａ」の使用を「許可」しているためである。
また、行番号「５」のレコードは、「２０１０年２月９日１０時４分２１秒」にプログラム「ＰＢ」によるサービス「Ｓｃ」の使用が「拒否」されたことを示している。ＡＣＬ３９１（図３、図４参照）がプログラム「ＰＢ」によるサービス「Ｓｃ」の使用を「許可」していないためである。
【００４７】
アクセス履歴ファイル３９５を図で表したアクセス履歴グラフ３９７を図６に示す。
実線が「許可」を示し、点線が「拒否」を示している。
【００４８】
図７は、実施の形態１における行列ＡＣＬ２９５を示す図である。
実施の形態１における行列ＡＣＬ２９５について、図７に基づいて以下に説明する。
【００４９】
Ｓ１１０（図２参照）において、行列ＡＣＬ生成部２１０は図３に示したＡＣＬ候補２９１と図５に示したアクセス履歴ファイル３９５とに基づいて図７に示す第１の行列ＡＣＬと第２の行列ＡＣＬとを生成する。
【００５０】
各行列ＡＣＬ２９５は、プログラムグループに属する複数のプログラムとそのプログラムグループによる使用がＡＣＬ３９１によって許可されるサービスグループに属する複数のサービスとを対応付けている。
【００５１】
第１の行列ＡＣＬは、プログラムグループ「ＰＧ１」に属するプログラム「ＰＡ」「ＰＢ」「ＰＣ」とサービスグループ「ＳＧ１」に属するサービス「Ｓａ」「Ｓｂ」とを対応付けた３行２列の行列である。
第２の行列ＡＣＬは、プログラムグループ「ＰＧ２」に属するプログラム「ＰＤ」「ＰＥ」とサービスグループ「ＳＧ２」に属するサービス「Ｓｃ」「Ｓｄ」「Ｓｅ」とを対応付けた２行３列の行列である。
【００５２】
行列の要素に設定されている値「１」は、プログラムによるサービスの使用許可を示す履歴がアクセス履歴ファイル３９５に含まれていることを示している。
値「０」は、プログラムによるサービスの使用許可を示す履歴がアクセス履歴ファイル３９５に含まれていないことを示している。
【００５３】
例えば、図５に示したアクセス履歴ファイル３９５にはプログラム「ＰＡ」によるサービス「Ｓａ」の使用許可を示すレコード（行番号「１」「４」）が含まれる。このため、図７においてプログラム「ＰＡ」とサービス「Ｓａ」とに対応する第１の行列ＡＣＬの１行１列に値「１」が設定されている。
また、図５に示したアクセス履歴ファイル３９５にはプログラム「ＰＡ」によるサービス「Ｓｂ」の使用許可を示すレコードが含まれない。このため、図７においてプログラム「ＰＡ」とサービス「Ｓｂ」とに対応する第１の行列ＡＣＬの１行２列に値「０」が設定されている。
【００５４】
図８は、実施の形態１における行列ＡＣＬ生成処理（Ｓ１１０）を示すフローチャートである。
実施の形態１における行列ＡＣＬ生成処理（図３、Ｓ１１０）について、図８に基づいて説明する。
【００５５】
Ｓ１１１において、行列ＡＣＬ生成部２１０は、アクセス制御テーブル３９４から最初のアクセス制御ルールを取得する。
例えば、行列ＡＣＬ生成部２１０は、図３に示したアクセス制御テーブル３９４からプログラムグループ「ＰＧ１」とサービスグループ「ＳＧ１」とを対応付ける１行目のアクセス制御ルールを取得する。
以下、取得したアクセス制御ルールを「取得制御ルール」という。
また、取得制御ルールに示されるプログラムグループ、サービスグループを「対象プログラムグループ」「対象サービスグループ」という。
Ｓ１１１の後、Ｓ１１２に進む。
【００５６】
Ｓ１１２において、行列ＡＣＬ生成部２１０は、取得制御ルールを参照して対象プログラムグループを特定し、特定した対象プログラムグループに属するプログラム群をプログラムグループテーブル３９２に基づいて特定する。
例えば、行列ＡＣＬ生成部２１０は、図３に示したプログラムグループテーブル３９２を参照し、対象プログラムグループ「ＰＧ１」に属するプログラム群「ＰＡ」「ＰＢ」「ＰＣ」を特定する。
以下、特定したプログラム群を「特定プログラム群」という。
Ｓ１１２の後、Ｓ１１３に進む。
【００５７】
Ｓ１１３において、行列ＡＣＬ生成部２１０は、取得制御ルールを参照して対象サービスグループを特定し、特定した対象サービスグループに属するサービス群をサービスグループテーブル３９３に基づいて特定する。
例えば、行列ＡＣＬ生成部２１０は、図３に示したサービスグループテーブル３９３を参照し、対象サービスグループ「ＳＧ１」に属するサービス群「Ｓａ」「Ｓｂ」を特定する。
以下、特定したサービス群を「特定サービス群」という。
Ｓ１１３の後、Ｓ１１４に進む。
【００５８】
Ｓ１１４において、行列ＡＣＬ生成部２１０は、特定プログラム群に属するプログラムと特定サービス群に属するサービスとを対応付けて行列ＡＣＬ２９５を生成する。
例えば、行列ＡＣＬ生成部２１０は、特定プログラム群「ＰＡ」「ＰＢ」「ＰＣ」それぞれを行に対応付け、特定サービス群「Ｓａ」「Ｓｂ」それぞれを列に対応付けて３行２列の行列ＡＣＬ２９５を生成する。生成される行列ＡＣＬ２９５は、図７に示した第１の行列ＡＣＬである。６つ（＝３行×２列）の行列要素には初期値「０」を設定する。
Ｓ１１４の後、Ｓ１１５に進む。
【００５９】
Ｓ１１５において、行列ＡＣＬ生成部２１０は、アクセス制御テーブル３９４に未処理のアクセス制御ルールが残っているか否かを判定する。
未処理のアクセス制御ルールが残っている場合（ＹＥＳ）、Ｓ１１６に進む。
全てのアクセス制御ルールを処理済みの場合（ＮＯ）、Ｓ１１７に進む。
【００６０】
Ｓ１１６において、行列ＡＣＬ生成部２１０は、アクセス制御テーブル３９４から取得制御ルールの次のアクセス制御ルールを取得する。
例えば、行列ＡＣＬ生成部２１０は、図３に示したアクセス制御テーブル３９４からプログラムグループ「ＰＧ２」とサービスグループ「ＳＧ２」とを対応付ける２行目のアクセス制御ルールを取得する。
Ｓ１１６の後、Ｓ１１２に戻る。
【００６１】
その後、Ｓ１１６で取得したアクセス制御ルールを新たな取得制御ルールとしてＳ１１２からＳ１１４を実行する。そして、全てのアクセス制御ルールの処理を終えるまでＳ１１２からＳ１１６を繰り返す。
これにより、アクセス制御テーブル３９４のレコード数分の行列ＡＣＬ２９５が生成される。
例えば、図３に示したアクセス制御テーブル３９４に対して、図７に示した第１の行列ＡＣＬと第２の行列ＡＣＬとが生成される。但し、行列要素の値は全て初期値「０」である。
【００６２】
Ｓ１１７において、行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５に基づいて各行列ＡＣＬ２９５に値を設定する。設定方法については後述する。
Ｓ１１７により、行列ＡＣＬ生成処理（Ｓ１１０）は終了する。
【００６３】
図９は、実施の形態１における行列ＡＣＬ設定処理（Ｓ１１７）を示すフローチャートである。
実施の形態１における行列ＡＣＬ設定処理（Ｓ１１７）について、図９に基づいて以下に説明する。
【００６４】
Ｓ１１７−１において、行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５から最初のアクセス履歴レコードを取得する。
例えば、行列ＡＣＬ生成部２１０は、図５に示したアクセス履歴ファイル３９５から行番号「１」のアクセス履歴レコードを取得する。
以下、取得したアクセス履歴レコードを「取得履歴レコード」という。
また、取得履歴レコードに示されるプログラムを「対象プログラム」、取得履歴レコードに示されるサービスを「対象サービス」という。
Ｓ１１７−１の後。Ｓ１１７−２に進む。
【００６５】
Ｓ１１７−２において、行列ＡＣＬ生成部２１０は、取得履歴レコードを参照して対象プログラムと対象サービスとを特定する。
行列ＡＣＬ生成部２１０は、対象プログラムと対象サービスとを対応付ける行列ＡＣＬ２９５を特定し、特定した行列ＡＣＬ２９５から対象プログラムと対象サービスとに対応する行列要素を特定する。
例えば、行列ＡＣＬ生成部２１０は、図５に示した行番号「１」の取得履歴レコードから対象プログラム「ＰＡ」と対象サービス「Ｓａ」とを特定する。次に、行列ＡＣＬ生成部２１０は、図７に示した２つの行列ＡＣＬ２９５のうち第１の行列ＡＣＬを特定する。そして、行列ＡＣＬ生成部２１０は、第１の行列ＡＣＬの１行１列を対象プログラム「ＰＡ」と対象プログラム「Ｓａ」とに対応する行列要素として特定する。
以下、特定した行列ＡＣＬ２９５を「特定行列」、特定した行列要素を「特定行列要素」という。
Ｓ１１７−２の後、Ｓ１１７−３に進む。
【００６６】
Ｓ１１７−３において、行列ＡＣＬ生成部２１０は、取得履歴レコードの「判断」に「許可」と「拒否」とのいずれが設定されているかを判定する。
「許可」が設定されている場合、Ｓ１１７−４に進む。
「拒否」が設定されている場合、Ｓ１１７−５に進む。
【００６７】
Ｓ１１７−４において、行列ＡＣＬ生成部２１０は、特定行列要素に「１」を設定する。
例えば、図５に示した行番号「１」の取得履歴レコードの「判断」には「許可」が設定されているため、行列ＡＣＬ生成部２１０は図７に示すように対象プログラム「ＰＡ」と対象サービス「Ｓａ」とに対応する対象行列要素に「１」を設定する。
Ｓ１１７−４の後、Ｓ１１７−５に進む。
【００６８】
Ｓ１１７−５において、行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５に未処理のアクセス履歴レコードが残っているか否かを判定する。
未処理のアクセス履歴レコードが残っている場合（ＹＥＳ）、Ｓ１１７−６に進む。
全てのアクセス履歴レコードを処理済みの場合（ＮＯ）、行列ＡＣＬ設定処理（Ｓ１１７）は終了する。
【００６９】
Ｓ１１７−６において、行列ＡＣＬ生成部２１０は、アクセス履歴ファイル３９５から取得履歴レコードの次のアクセス履歴レコードを取得する。
Ｓ１１７−６の後、Ｓ１１７−２に戻る。
【００７０】
その後、Ｓ１１７−６で取得したアクセス履歴レコードを新たな取得履歴レコードとしてＳ１１７−２からＳ１１７−４を実行する。そして、全てのアクセス履歴レコードの処理を終えるまでＳ１１７−２からＳ１１７−６を繰り返す。
これにより、各行列ＡＣＬ２９５の行列要素のうちサービスの使用を許可されたプログラムとプログラムによる使用が許可されたサービスとに対応する行列要素に「１」が設定される。その他の行列要素の値は初期値「０」である。
例えば、図５に示したアクセス履歴ファイル３９５に基づいて図７に示す２つの行列ＡＣＬ２９５が生成される。
【００７１】
図２に戻り、アクセス制御情報生成処理の説明を続ける。
【００７２】
Ｓ１２０において、グループ生成部２２０は、行列ＡＣＬ２９５に基づいて以下のようにプログラムグループテーブル２９２とサービスグループテーブル２９３とを生成する。
Ｓ１２０の後、Ｓ１３０に進む。
【００７３】
図１０は、実施の形態１におけるグループ生成処理（Ｓ１２０）を示すフローチャートである。
実施の形態１におけるグループ生成処理（Ｓ１２０）について、図１０に基づいて以下に説明する。
【００７４】
Ｓ１２１において、グループ生成部２２０は、行列ＡＣＬ２９５を一つ選択する。
例えば、グループ生成部２２０は、図７に示した２つの行列ＡＣＬ２９５のうち第１の行列ＡＣＬを選択する。
以下、選択した行列ＡＣＬ２９５を「選択行列」という。
Ｓ１２１の後、Ｓ１２２に進む。
【００７５】
Ｓ１２２において、グループ生成部２２０は、選択行列から一行を選択する。
例えば、グループ生成部２２０は、図７に示した第１の行列ＡＣＬからプログラム「ＰＡ」に対応する行を選択する。
以下、選択する行を「グループ化対象行」という。
Ｓ１２２の後、Ｓ１２３に進む。
【００７６】
Ｓ１２３において、グループ生成部２２０は、選択行列からグループ化対象行以外の一行を選択する。
例えば、グループ生成部２２０は、図７に示した第１の行列ＡＣＬからプログラム「ＰＢ」に対応する行を選択する。
以下、選択する行を「突き合わせ対象行」という。
Ｓ１２３の後、Ｓ１２４に進む。
【００７７】
Ｓ１２４において、グループ生成部２２０は、グループ化対象行の設定値と突き合わせ対象行の設定値とを列毎に比較し、グループ化対象行の設定値と突き合わせ対象行の設定値とが全ての列で一致するか否かを判定する。
グループ化対象行の設定値と突き合わせ対象行の設定値とが全ての列で一致する場合（ＹＥＳ）、Ｓ１２５に進む。
【００７８】
Ｓ１２５において、グループ生成部２２０は、グループ化対象行のプログラムと突き合わせ対象行のプログラムとを同じグループとしてプログラムグループテーブル２９２に設定する。
例えば、図７の第１の行列ＡＣＬにおいてプログラム「ＰＡ」に対応するグループ化対象行の設定値｛１，０｝とプログラム「ＰＢ」に対応する突き合わせ対象行の設定値｛１，０｝とが一致する。このため、グループ生成部２２０は、図１１に示すプログラムグループテーブル２９２のようにプログラム「ＰＡ」とプログラム「ＰＢ」とに同一グループ「ＰＧ１．１」を設定する。
図１１は、実施の形態１におけるＡＣＬ３９１とＡＣＬ候補２９１との関係図である。
Ｓ１２５の後、Ｓ１２６に進む。
【００７９】
Ｓ１２６において、グループ生成部２２０は、現在のグループ化対象行に対して突き合わせ対象行として選択されていない行が選択行列に残っているか否かを判定する。但し、前回以前のグループ化対象行に対応するプログラムと同じグループに設定されたプログラムに対応する行を除く。特定のグループに属しているプログラムは他のグループには属さないため、既に特定のグループに設定されたプログラムを現在のグループ化対象行に対応するプログラムと同じグループに設定する必要がないからである。
【００８０】
突き合わせ対象行として選択されていない行が残っている場合（ＹＥＳ）、Ｓ１２３に戻る。Ｓ１２３において、グループ生成部２２０は現在のグループ化対象行に対して突き合わせ対象行として選択されてなく且つ対応するプログラムがまだ特定のグループに設定されていない行を突き合わせ対象行として選択する。そして、グループ生成部２２０は新たに選択した突き合わせ対象行に対してＳ１２４とＳ１２５とを実行する。
突き合わせ対象行として選択されていない行が残っていない場合（ＮＯ）、Ｓ１２７に進む。
【００８１】
Ｓ１２７において、グループ生成部２２０は、グループ化対象行として選択されていない行が選択行列に残っているか否かを判定する。但し、前回以前のグループ化対象行に対応するプログラムと同じグループに設定されたプログラムに対応する行を除く。理由はＳ１２６と同様である。
グループ化対象行として選択されていない行が残っている場合（ＹＥＳ）、Ｓ１２２に戻る。Ｓ１２２において、グループ生成部２２０はグループ化対象行として選択されてなく且つ対応するプログラムがまだ特定のグループに設定されていない行をグループ化対象行として選択する。そして、グループ生成部２２０は新たに選択したグループ化対象行に対してＳ１２３からＳ１２６を実行する。
グループ化対象行として選択されていない行が残っていない場合（ＮＯ）、Ｓ１２２’〜Ｓ１２７’に進む。
【００８２】
Ｓ１２２〜Ｓ１２７により選択行列に属するプログラム群がグループ分けされる。
【００８３】
Ｓ１２２’〜Ｓ１２７’において、グループ生成部２２０は、選択行列に属するサービス群をグループ分けするために「行」と「列」とを読み替えてＳ１２２〜Ｓ１２７を実行する。
【００８４】
つまり、グループ生成部２２０は、選択行列からグループ化対象列を選択し（Ｓ１２２’）、突き合わせ対象列を選択する（Ｓ１２３’）。
グループ生成部２２０は、グループ化対象列の設定値と突き合わせ対象列の設定値とが一致する場合（Ｓ１２４’「ＹＥＳ」）、グループ化対象列に対応するサービスと突き合わせ対象列に対応するサービスとを同一グループに設定する（Ｓ１２５’）。
グループ生成部２２０は、Ｓ１２２’〜Ｓ１２５’を繰り返して選択行列の全てのサービスをグループ分けする（Ｓ１２６’、Ｓ１２７’）。
【００８５】
Ｓ１２２’〜Ｓ１２７’の後、Ｓ１２８に進む。
【００８６】
Ｓ１２８において、グループ生成部２２０は、未選択の行列ＡＣＬ２９５が残っているか否かを判定する。
未選択の行列ＡＣＬ２９５が残っている場合（ＹＥＳ）、Ｓ１２１に戻り、未選択の行列ＡＣＬ２９５に対してＳ１２２〜Ｓ１２７、Ｓ１２２’〜Ｓ１２７’を実行する。
全ての行列ＡＣＬ２９５を選択済みの場合（ＮＯ）、グループ生成処理（Ｓ１２０）は終了する。
【００８７】
グループ生成処理（Ｓ１２０）により、図１１に示すようにＡＣＬ３９１に対してプログラムグループテーブル２９２とサービスグループテーブル２９３とが生成される。
プログラムグループテーブル２９２は使用サービスが一致した複数のプログラムをグループとして示すテーブルである。サービスグループテーブル２９３は使用プログラムが一致した複数のサービスをグループとして示すテーブルである。
【００８８】
図２に戻り、アクセス制御情報生成処理の説明を続ける。
【００８９】
Ｓ１３０において、ＡＣＬ候補生成部２３０は、プログラムグループテーブル２９２とサービスグループテーブル２９３と行列ＡＣＬ２９５とに基づいて以下のようにアクセス制御テーブル２９４を生成する。
【００９０】
図１２は、実施の形態１におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャートである。
実施の形態１におけるアクセス制御テーブル生成処理（Ｓ１３０）について、図１２に基づいて以下に説明する。
【００９１】
Ｓ１３１において、ＡＣＬ候補生成部２３０は、プログラムグループテーブル２９２からプログラムグループを一つ選択する。
例えば、ＡＣＬ候補生成部２３０は、図１１に示したプログラムグループテーブル２９２からプログラムグループ「ＰＧ１．１」を選択する。
以下、選択したプログラムグループを「選択プログラムグループ」という。
Ｓ１３１の後、Ｓ１３２に進む。
【００９２】
Ｓ１３２において、ＡＣＬ候補生成部２３０は、選択プログラムグループからプログラムを一つ選択する。
例えば、ＡＣＬ候補生成部２３０は、図１１において選択プログラムグループ「ＰＧ１．１」からプログラム「ＰＡ」を選択する。
以下、選択したプログラムを「選択プログラム」という。
Ｓ１３２の後、Ｓ１３３に進む。
【００９３】
Ｓ１３３において、ＡＣＬ候補生成部２３０は、サービスグループテーブル２９３からサービスグループを一つ選択する。
例えば、ＡＣＬ候補生成部２３０は、図１１に示したサービスグループテーブル２９３からサービスグループ「ＳＧ１．１」を選択する。
以下、選択したサービスグループを「選択サービスグループ」という。
Ｓ１３３の後、Ｓ１３４に進む。
【００９４】
Ｓ１３４において、ＡＣＬ候補生成部２３０は、選択サービスグループからサービスを一つ選択する。
例えば、ＡＣＬ候補生成部２３０は、図１１において選択サービスグループ「ＳＧ１．１」からサービス「Ｓａ」を選択する。
以下、選択したサービスを「選択サービス」という。
Ｓ１３４の後、Ｓ１３５に進む。
【００９５】
Ｓ１３５において、ＡＣＬ候補生成部２３０は、行列ＡＣＬ２９５の行列要素のうち選択プログラムと選択サービスとに対応する行列要素を参照する。
例えば、ＡＣＬ候補生成部２３０は、図７において選択プログラム「ＰＡ」と選択サービス「Ｓａ」とに対応する第１の行列ＡＣＬの１行１列を参照する。
以下、参照する行列要素を「参照行列要素」という。
Ｓ１３５の後、Ｓ１３６に進む。
【００９６】
Ｓ１３６において、ＡＣＬ候補生成部２３０は、参照行列要素の値が「０」と「１」とのいずれであるかを判定する。
参照行列要素の値が「１」である場合（ＹＥＳ）、Ｓ１３７に進む。
参照行列要素の値が「０」である場合（ＮＯ）、Ｓ１３８に進む。
【００９７】
Ｓ１３７において、ＡＣＬ候補生成部２３０は、選択プログラムと選択サービスとを対応付けるアクセス制御ルールをアクセス制御テーブル２９４に設定する。
例えば、図７において選択プログラム「ＰＡ」と選択サービス「Ｓａ」とに対応する参照行列要素の値は「１」である。このため、ＡＣＬ候補生成部２３０は、図１１に示すようにアクセス制御テーブル２９４に選択プログラム「ＰＡ」と選択サービス「Ｓａ」とを対応付けてアクセス制御ルールを設定する。
Ｓ１３７の後、Ｓ１３８に進む。
【００９８】
Ｓ１３８において、ＡＣＬ候補生成部２３０は、選択プログラムグループに対して選択していないサービスグループがサービスグループテーブル２９３に残っているか否かを判定する。
選択していないサービスグループが残っている場合（ＹＥＳ）、Ｓ１３３に戻り、未選択のサービスグループに対してＳ１３４〜Ｓ１３７を実行する。
サービスグループを全て選択済みの場合（ＮＯ）、Ｓ１３９に進む。
【００９９】
Ｓ１３９において、ＡＣＬ候補生成部２３０は、選択していないプログラムグループがプログラムグループテーブル２９２に残っているか否かを判定する。
選択していないプログラムグループが残っている場合（ＹＥＳ）、Ｓ１３１に戻り、未選択のプログラムグループに対してＳ１３２〜Ｓ１３７を実行する。
プログラムグループを全て選択済みの場合（ＮＯ）、アクセス制御テーブル生成処理（Ｓ１３０）は終了する。
【０１００】
アクセス制御テーブル生成処理（Ｓ１３０）により、図１１に示すようなアクセス制御テーブル２９４が生成される。
【０１０１】
図２に戻り、アクセス制御情報生成処理の説明を続ける。
【０１０２】
Ｓ１４０において、ＡＣＬ生成部２４０は、ＡＣＬ候補２９１に基づいてＡＣＬ候補グラフ２９６を生成する。
例えば、ＡＣＬ生成部２４０は、図１１に示したＡＣＬ候補２９１に基づいて図１３に示すようなＡＣＬ候補グラフ２９６を生成する。
【０１０３】
図１３は、実施の形態１におけるＡＣＬ候補グラフ２９６を示す図である。
図１３に示すように、プログラムグループに対応するサービスグループ、プログラムグループに属するプログラム、サービスグループに属するサービスをＡＣＬ候補グラフ２９６により容易に把握することができる。
【０１０４】
図２に戻り、アクセス制御情報生成処理の説明を続ける。
【０１０５】
Ｓ１４０の後、Ｓ１５０に進む。
【０１０６】
Ｓ１５０において、ＡＣＬ生成部２４０は、ＡＣＬ候補グラフ２９６を表示装置に表示してＡＣＬ候補２９１の編集を管理者に促す。
管理者は、ＡＣＬ候補グラフ２９６を確認して編集（変更、追加、削除）が必要な部分を特定し、キーボードやマウスなどの入力装置を用いてＡＣＬ候補グラフ２９６を編集する。ＡＣＬ生成部２４０は、ＡＣＬ候補グラフ２９６に対する編集指示に従ってＡＣＬ候補２９１を修正する。
ＡＣＬ生成部２４０は、修正後のＡＣＬ候補２９１を新たなＡＣＬ３９１としてアクセス制御装置３００に送信する。
Ｓ１５０により、アクセス制御情報生成処理は終了する。
【０１０７】
図１４は、実施の形態１におけるアクセス制御情報生成装置２００およびアクセス制御装置３００のハードウェア資源の一例を示す図である。
図１４において、アクセス制御情報生成装置２００およびアクセス制御装置３００は、ＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）（マイクロプロセッサ、マイクロコンピュータともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ドライブ装置９０４、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９０４は、ＦＤ（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【０１０８】
通信ボード９１５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【０１０９】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
【０１１０】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９１１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【０１１１】
ファイル群９２４には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【０１１２】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【０１１３】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【０１１４】
実施の形態１において、例えば、以下のようなアクセス制御情報生成装置２００について説明した。
【０１１５】
アクセス制御情報生成装置２００は、ＡＣＬ３９１およびアクセス履歴ファイル３９５を入力とし、新たなＡＣＬの候補であるＡＣＬ候補２９１を生成する。ＡＣＬ３９１とは、プログラムがサービスを利用する際にアクセス制御を行う認可機能（アクセス認可部３１０）がアクセス可否を判断するためのルールの集合である。アクセス履歴ファイル３９５はアクセス可否を判断した結果である。
アクセス制御情報生成装置２００は、グループ生成機能（グループ生成部２２０、ＡＣＬ候補生成部２３０）を備える。
グループ生成機能は、同一のサービスを利用するプログラムの集合であるプログラムグループ、同一のプログラムから利用されるサービスの集合であるサービスグループ、プログラムグループと該プログラムグループが利用可能なサービスグループとの組から構成されるアクセス制御ルールを生成する。
【０１１６】
グループ生成機能は、利用対象となるサービスがすべて一致するプログラムについてプログラムグループを生成し、利用者であるプログラムがすべて一致するサービスについてサービスグループを生成する。
【０１１７】
既存のＡＣＬ３９１とアクセス履歴ファイル３９５とをもとにＡＣＬ候補２９１を生成することにより、より厳しいアクセス制御を行うことができるようになる。これは、プログラムグループとサービスグループとを細分化したためである。
例えば、図１１において、ＡＣＬ３９１はプログラム「ＰＣ」（ＰＧ１）によるサービス「Ｓａ」（ＳＧ１）の使用を許可する。しかし、ＡＣＬ候補２９１はプログラム「ＰＣ」（ＰＧ１．２）によるサービス「Ｓａ」（ＳＧ１．１）の使用を許可しない。
【０１１８】
また、プログラムグループおよびサービスグループを生成することによりアクセス制御ルールを減らすことができる。ＡＣＬ候補２９１をＡＣＬ３９１として採用するかどうかは人手により判断する必要があるが、判断が必要なルールの数が減ることにより運用負荷が軽減される。
例えば、プログラムおよびサービスをグループ化しない場合、図５に示したアクセス履歴ファイル３９５から抽出されるルールの数は５つである（図６参照）。しかし、図１１に示したアクセス制御テーブル２９４に設定されたルールの数は４つであり、アクセス履歴ファイル３９５から抽出されるルールの数（５つ）より少ない。
【０１１９】
プログラムグループおよびサービスグループを階層化してもよい。
つまり、プログラムグループにプログラムだけでなくプログラムグループが属してもよいし、サービスグループにサービスだけでなくサービスグループが属してもよい。
【０１２０】
テーブル形式のＡＣＬ３９１およびＡＣＬ候補２９１（図１１参照）はＲＤＢ（Ｒｅａｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）を用いて実装することができる。
但し、ＡＣＬ３９１およびＡＣＬ候補２９１はＬＤＡＰ（Ｌｉｇｈｔ−ｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、フラットファイルまたはその他の方式で実装しても構わない。
【０１２１】
プログラムグループとサービスグループとのいずれかを生成しても構わない。つまり、サービスだけをグループ化してもよいし、プログラムだけをグループ化してもよい。
【０１２２】
ＡＣＬ３９１を用いずにＡＣＬ候補２９１を生成しても構わない。また、行列ＡＣＬ２９５を生成せずにＡＣＬ候補２９１を生成しても構わない。
例えば、グループ生成部２２０はアクセス履歴ファイル３９５を参照し、プログラム毎に使用許可されたサービス（使用サービス）を特定する。図５の場合、プログラム「ＰＡ」「ＰＢ」「ＰＣ」「ＰＤ」「ＰＥ」の使用サービスはそれぞれ｛Ｓａ｝｛Ｓａ｝｛Ｓｂ｝｛Ｓｃ，Ｓｄ｝｛Ｓｅ｝である。次に、グループ生成部２２０は使用サービスが一致する複数のプログラムをプログラムグループとして特定する。プログラム「ＰＡ」「ＰＢ」は使用サービスが｛Ｓａ｝で一致するため一つのプログラムグループを構成する。サービスグループもプログラムグループと同様に特定することができる。次に、ＡＣＬ候補生成部２３０はプログラムグループからいずれかのプログラムを選択し、サービスグループからいずれかのサービスを選択する。そして、ＡＣＬ候補生成部２３０は、選択したサービスが選択したプログラムの使用サービスである場合にプログラムグループとサービスグループとを対応付けてアクセス制御ルールを生成する。
【０１２３】
実施の形態２．
サービスが類似する複数のプログラムをグループ化し、プログラムが類似する複数のサービスをグループ化する形態について説明する。
プログラムは複数のプログラムグループに属すことがあり、サービスは複数のサービスグループに属すことがあるものとする。
【０１２４】
実施の形態２におけるアクセス制御システム１００の構成は、実施の形態１（図１参照）と同じである。
但し、グループ生成部２２０の機能とＡＣＬ候補生成部２３０の機能は、実施の形態１と一部異なる。
【０１２５】
まず、グループ生成部２２０の機能概要について説明する。
【０１２６】
グループ生成部２２０（プログラムグループ特定部の一例）は、行列ＡＣＬ生成部２１０の特定結果（行列ＡＣＬ２９５）に基づいてサービスの組み合わせ毎に使用プログラムが共通する度合いを示すサービス間距離（メインプログラム共通度の一例）を算出する。
グループ生成部２２０は、サービス間距離が小さい順にサービスの組み合わせを複数選択し、選択したサービスの組み合わせ毎にサービスの組み合わせに含まれる複数のサービスをサービスとして設定する。
【０１２７】
グループ生成部２２０は、行列ＡＣＬ生成部２１０の特定結果に基づいてプログラムの組み合わせ毎に使用サービスが共通する度合いを示すプログラム間距離（サブプログラム共通度の一例）を算出する。
グループ生成部２２０は、プログラム間距離が小さい順にプログラムの組み合わせを複数選択し、選択したプログラムの組み合わせ毎にプログラムの組み合わせに含まれる複数のプログラムをプログラムグループとして設定する。
【０１２８】
例えば、グループ生成部２２０は、２つのサービスを含んだサービスの組み合わせを複数生成し、生成したサービスの組み合わせ毎にサービス間距離を算出し、サービス間距離が小さい順にサービスの組み合わせを複数選択する。
グループ生成部２２０は、選択したサービスの複数の組み合わせを組み合わせて３つ以上のサービスを含んだサービスの組み合わせを生成し、生成したサービスの組み合わせに含まれる３つ以上のサービスをサービスグループとして設定する。
同様に、グループ生成部２２０は、３つ以上のプログラムをプログラムグループとして設定する。
【０１２９】
次に、グループ生成部２２０の機能の詳細について説明する。
【０１３０】
図１５は、実施の形態２におけるグループ生成処理（Ｓ１２０）を示すフローチャートである。
実施の形態２におけるグループ生成処理（Ｓ１２０）について、図１５に基づいて以下に説明する。
【０１３１】
Ｓ１２１Ｂにおいて、グループ生成部２２０は、行列ＡＣＬ２９５に基づいてプログラムの組み合わせ毎にプログラム間距離を算出する。プログラム間距離とは、一致しない使用サービス（および不使用サービス）の数を意味する。使用サービスとはプログラムが使用した（使用を許可された）サービスであり、不使用サービスとはプログラムが使用しなかった（使用許可を受けなかった）サービスである。
また、サービス間距離とは、一致しない使用プログラム（および不使用プログラム）の数を意味する。使用プログラムとはサービスを使用した（サービスの使用を許可された）プログラムであり、不使用プログラムとはサービスを使用しなかった（サービスの使用許可を受けなかった）プログラムである。
【０１３２】
図１６は、実施の形態２における行列ＡＣＬ２９５を示す図である。
図１７は、実施の形態２における（１）プログラム間距離と（２）サービス間距離とを示す図である。
図１８は、実施の形態２におけるプログラム間距離毎のプログラムの組み合わせを示す図である。
【０１３３】
例えば、図１６に示す行列ＡＣＬ２９５の一行目（ＰＡ）と二行目（ＰＢ）とを比較すると全ての列で値が一致する。そこで、グループ生成部２２０は、プログラム「ＰＡ」とプログラム「ＰＢ」とのプログラム間距離を「０」とする。
また、図１６に示す行列ＡＣＬ２９５の一行目（ＰＡ）と四行目（ＰＤ）とを比較すると一列目（Ｓａ）のみ値が一致しない。そこで、グループ生成部２２０は、プログラム「ＰＡ」とプログラム「ＰＤ」とのプログラム間距離を「１」とする。
【０１３４】
図１６の行列ＡＣＬ２９５に基づいて算出されるプログラム間距離を図１７（１）に示し、プログラム間距離毎のプログラムの組み合わせを図１８（１）に示す。
【０１３５】
Ｓ１２１Ｂの後、Ｓ１２２Ｂに進む。
【０１３６】
Ｓ１２２Ｂにおいて、グループ生成部２２０は、グループ化の対象にするプログラム間距離を特定する。以下、特定するプログラム間距離を「特定プログラム間距離」という。
【０１３７】
例えば、グループ生成部２２０は、プログラム間距離の小さい順にプログラムの組み合わせを参照し、全てのプログラムが少なくともいずれかのプログラムの組み合わせに含まれたときのプログラム間距離を特定プログラム間距離とする。
図１８（１）の場合、全てのプログラム「ＰＡ」〜「ＰＥ」はプログラム間距離「０」〜「２」を有する５つのプログラムの組み合わせの少なくともいずれかに含まれるため、特定プログラム間距離は「０」〜「２」である。特定プログラム間距離「０」〜「２」のプログラムの組み合わせを図１８（２）に示す。
【０１３８】
Ｓ１２２Ｂの後、Ｓ１２３Ｂに進む。
【０１３９】
Ｓ１２３Ｂにおいて、グループ生成部２２０は、特定プログラム間距離を有するプログラムの組み合わせの数（以下、「特定プログラム組み合わせ数」という）と所定のプログラムグループ数閾値とを比較する。
特定プログラム組み合わせ数がプログラムグループ閾値以下である場合（ＹＥＳ）、Ｓ１２５Ｂに進む。
特定プログラム組み合わせ数がプログラムグループ閾値より大きい場合（ＮＯ）、Ｓ１２４Ｂに進む。
【０１４０】
Ｓ１２４Ｂにおいて、グループ生成部２２０は、特定プログラム組み合わせ数をプログラムグループ数閾値以下にするために、同じ特定プログラム間距離を有するプログラムの組み合わせを結合する。
それでも特定プログラム組み合わせ数がプログラムグループ数閾値以下にならない場合、グループ生成部２２０は、異なるプログラム間距離を有するプログラムの組み合わせを結合する。
【０１４１】
例えば、プログラムグループ数閾値を「３」とする。図１８（２）に示す特定プログラム組み合わせ数は「５」である。
グループ生成部２２０は、特定プログラム組み合わせ数をプログラムグループ閾値である「３」に減らすため、プログラム間距離の小さい順にプログラムの組み合わせを結合する。
つまり、グループ生成部２２０は、プログラム間距離「１」のプログラムの組み合わせ｛ＰＡ，ＰＤ｝｛ＰＢ，ＰＤ｝を結合し、プログラム間距離「２」のプログラムの組み合わせ｛ＰＣ，ＰＤ｝｛ＰＣ，ＰＥ｝を結合する。プログラムの組み合わせの結合はプログラムの組み合わせの和集合をとることを意味する。
これにより、プログラムの組み合わせは｛ＰＡ，ＰＢ｝｛ＰＡ，ＰＢ，ＰＤ｝｛ＰＣ，ＰＤ，ＰＥ｝の３つになる（図１８（３））。
【０１４２】
Ｓ１２４Ｂの後、Ｓ１２５Ｂに進む。
【０１４３】
Ｓ１２５Ｂにおいて、グループ生成部２２０は、特定プログラム間距離を有するプログラムの組み合わせをプログラムグループとしてプログラムグループテーブル２９２に設定する。
【０１４４】
図１９は、実施の形態２におけるプログラムグループテーブル２９２とサービスグループテーブル２９３とを示す図である。
【０１４５】
例えば、グループ生成部２２０は、図１８（３）に示すプログラムの組み合わせに基づいて図１９に示すようにプログラムグループテーブル２９２を設定する。
【０１４６】
Ｓ１２５Ｂの後、Ｓ１２１Ｂ’〜Ｓ１２５Ｂ’に進む。
【０１４７】
Ｓ１２１Ｂ’〜Ｓ１２５Ｂ’において、グループ生成部２２０は、Ｓ１２１Ｂ〜Ｓ１２５Ｂと同様にしてサービスグループをサービスグループテーブル２９３に設定する。
つまり、グループ生成部２２０はサービスの組み合わせ毎にサービス間距離を算出し（Ｓ１２１Ｂ’）、グループ化の対象にするサービス間距離を特定する（Ｓ１２２Ｂ’）。
グループ生成部２２０は、特定サービス組み合わせ数がサービスグループ数閾値より大きければ（Ｓ１２３Ｂ’「ＮＯ」）、サービスの組み合わせを結合する（Ｓ１２４Ｂ’）。
グループ生成部２２０は、各サービスの組み合わせをサービスグループとしてサービスグループテーブル２９３に設定する（Ｓ１２５Ｂ’）。
【０１４８】
図１６の行列ＡＣＬ２９５に基づいて算出されるサービス間距離を図１７（２）に示す。
図２０に（１）サービス間距離毎のサービスの組み合わせ、（２）特定サービス間距離毎のサービスの組み合わせ、（３）結合後のサービスの組み合わせを示す。但し、サービスグループ数閾値を「４」とする。
図１９にサービスグループテーブル２９３を示す。
【０１４９】
Ｓ１２１Ｂ’〜Ｓ１２５Ｂ’により、グループ生成処理（Ｓ１２０）は終了する。
【０１５０】
次に、ＡＣＬ候補生成部２３０の機能概要について説明する。
【０１５１】
ＡＣＬ候補生成部２３０（プログラム使用ルール候補生成部の一例）は、プログラムグループとサービスグループとのグループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの使用サービスの数を合計して使用サービス数（使用サブプログラム合計数の一例）を算出する。
ＡＣＬ候補生成部２３０は、グループ組み合わせ毎にプログラムとサービスとの組み合わせ数に対する使用サービス数の割合に相当する組み合わせ得点（使用サブプログラム割合数の一例）を算出する。
ＡＣＬ候補生成部２３０は、組み合わせ得点が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルール（プログラム使用ルールの候補の一例）として生成する。
【０１５２】
例えば、ＡＣＬ候補生成部２３０は、プログラムグループとサービスグループとのグループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの使用サービスの数を合計して使用サービス数を算出する。
ＡＣＬ候補生成部２３０は、グループ組み合わせ毎にプログラムグループを構成する複数のプログラムそれぞれの不使用サービスの数を合計して不使用サービス数（不使用サブプログラム合計数の一例）を算出する。
ＡＣＬ候補生成部２３０は、グループ組み合わせ毎に使用サービス数と不使用サービス数との差を組み合わせ得点として算出する。
ＡＣＬ候補生成部２３０は、算出した組み合わせ得点が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【０１５３】
また、ＡＣＬ候補生成部２３０は、グループ組み合わせ毎に当該グループ組み合わせより大きい組み合わせ得点を有するグループ組み合わせと重複する使用サービスを除いて使用サービス合計数を算出する。
ＡＣＬ候補生成部２３０は、算出した使用サービス合計数が大きい順にグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【０１５４】
また、ＡＣＬ候補生成部２３０は、プログラムグループとサービスグループとの複数のグループ組み合わせのうち少なくともいずれかのグループ組み合わせを選択する。
ＡＣＬ候補生成部２３０は、選択したグループ組み合わせの構成を変更して新たな複数のグループ組み合わせをグループ組み合わせ群として複数生成する。
ＡＣＬ候補生成部２３０は、生成した複数のグループ組み合わせ群のうちいずれかのグループ組み合わせ群を選択する。
ＡＣＬ候補生成部２３０は、選択したグループ組み合わせ群からグループ組み合わせを複数選択し、選択したグループ組み合わせ毎にグループ組み合わせを示す組み合わせデータをアクセス制御ルールとして生成する。
【０１５５】
次に、ＡＣＬ候補生成部２３０の機能の詳細について機能例１〜機能例３を説明する。
【０１５６】
まず、ＡＣＬ候補生成部２３０の機能例１について説明する。
機能例１では、プログラムグループとサービスグループとの組み合わせのうち使用サービス数の割合が高い組み合わせをアクセス制御ルールとして選択する。
【０１５７】
図２１は、実施の形態２（機能例１）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャートである。
実施の形態２（機能例１）におけるアクセス制御テーブル生成処理（Ｓ１３０）について、図２１に基づいて以下に説明する。
【０１５８】
Ｓ１３１Ｂにおいて、ＡＣＬ候補生成部２３０は、プログラムグループテーブル２９２とサービスグループテーブル２９３とに基づいてプログラムグループとサービスグループとの組み合わせを生成する。
例えば、ＡＣＬ候補生成部２３０は、図１９に示したプログラムグループテーブル２９２とサービスグループテーブル２９３とに基づいて３つのプログラムグループ「ＰＧ１」〜「ＰＧ３」と４つのサービスグループ「ＳＧ１」〜「ＳＧ４」とを組み合わせて１２個の組み合わせを生成する。
以下、生成した組み合わせを「グループ組み合わせ」という。
Ｓ１３１Ｂの後、Ｓ１３２Ｂに進む。
【０１５９】
Ｓ１３２Ｂにおいて、ＡＣＬ候補生成部２３０は、行列ＡＣＬ２９５に基づいてグループ組み合わせ毎に使用サービス数と不使用サービス数とを算出する。使用サービス数とは値が「１」である行列要素の数であり、不使用サービス数とは値が「０」である行列要素の数である。
例えば、プログラムグループ「ＰＧ２」とサービスグループ「ＳＧ２」との組み合わせをグループ組み合わせ「Ｒ６」とする。図１９においてプログラムグループ「ＰＧ２」に属するプログラムは「ＰＡ」「ＰＢ」「ＰＤ」であり、サービスグループ「ＳＧ２」に属するサービスは「Ｓａ」「Ｓｂ」である。図１６においてプログラム「ＰＡ」とサービス「Ｓａ」「Ｓｂ」とに対応する行列要素（ＰＡ，Ｓａ）（ＰＡ，Ｓｂ）の値はそれぞれ「１」「１」である。また、プログラム「ＰＢ」とサービス「Ｓａ」「Ｓｂ」とに対応する行列要素（ＰＢ，Ｓａ）（ＰＢ，Ｓｂ）の値はそれぞれ「１」「１」である。また、プログラム「ＰＤ」とサービス「Ｓａ」「Ｓｂ」に対応する行列要素（ＰＤ，Ｓａ）（ＰＤ，Ｓｂ）の値はそれぞれ「０」「１」である。したがって、グループ組み合わせ「Ｒ６」の使用サービス数は「５」、不使用サービス数は「１」である。
Ｓ１３２Ｂの後、Ｓ１３３Ｂに進む。
【０１６０】
Ｓ１３３Ｂにおいて、ＡＣＬ候補生成部２３０は、グループ組み合わせ毎に使用サービス数と不使用サービス数との差をグループ組み合わせの組み合わせ得点として算出する。
例えば、使用サービス数が「５」であり不使用サービス数が「１」であるグループ組み合わせ「Ｒ６」の組み合わせ得点は「４（＝５−１）」である。
Ｓ１３３Ｂの後、Ｓ１３４Ｂに進む。
【０１６１】
Ｓ１３４Ｂにおいて、ＡＣＬ候補生成部２３０は、組み合わせ得点が高いグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル２９４に設定する。
例えば、ＡＣＬ候補生成部２３０は、所定の得点閾値以上の組み合わせ得点を有するグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル２９４に設定する。
また、ＡＣＬ候補生成部２３０は、組み合わせ得点が高い順に所定の数のグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル２９４に設定する。
Ｓ１３４Ｂにより、機能例１のアクセス制御テーブル生成処理（Ｓ１３０）は終了する。
【０１６２】
図２２は、実施の形態２（機能例１）における（１）組み合わせ得点表と（２）アクセス制御テーブル２９４とを示す図である。
図１９に示したプログラムグループテーブル２９２とサービスグループテーブル２９３および図１６に示した行列ＡＣＬ２９５を用いた場合、グループ組み合わせと組み合わせ得点とは図２２（１）に示す通りである。
また、組み合わせ得点が「０」以上のグループ組み合わせをアクセス制御ルールとして設定したアクセス制御テーブル２９４を図２２（２）に示す。
【０１６３】
Ｓ１３３Ｂにおいて、ＡＣＬ候補生成部２３０は、使用サービス数と不使用サービス数との合計数（行列ＡＣＬ２９５の行列要素の数）に対する使用サービス数の割合を組み合わせ得点として算出しても構わない。
また、ＡＣＬ候補生成部２３０は組み合わせ得点を算出せず、使用サービス数の多いグループ組み合わせをアクセス制御ルールとしても構わない。
【０１６４】
次に、ＡＣＬ候補生成部２３０の機能例２について説明する。
機能例２では、他のグループ組み合わせと類似するグループ組み合わせを除外して、アクセス制御ルールにするグループ組み合わせを選択する。
【０１６５】
図２３は、実施の形態２（機能例２）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャートである。
実施の形態２（機能例２）におけるアクセス制御テーブル生成処理（Ｓ１３０）について、図２３に基づいて以下に説明する。
【０１６６】
Ｓ１３１Ｂ〜Ｓ１３３Ｂは、機能例１（図２１参照）と同じである。以下、Ｓ１３１Ｃ以降の処理について説明する。
【０１６７】
Ｓ１３１Ｃにおいて、ＡＣＬ候補生成部２３０は、使用サービス数が「０」であるグループ組み合わせを削除し、残ったグループ組み合わせを組み合わせ得点が高い順にソートする。
Ｓ１３１Ｃの後、Ｓ１３２Ｃに進む。
【０１６８】
図２４は、実施の形態２（機能例２）における（１）組み合わせ得点表と（２）ソート後の組み合わせ得点表を示す図である。
Ｓ１３１Ｃ（図２３参照）において、ＡＣＬ候補生成部２３０は図２４（１）の組み合わせ得点表から使用サービス数「０」のグループ組み合わせ「Ｒ１」「Ｒ４」「Ｒ５」「Ｒ８」を削除する。さらに、ＡＣＬ候補生成部２３０は残ったグループ組み合わせを組み合わせ得点順にソートする。ソート後の組み合わせ得点表を図２４（２）に示す。
【０１６９】
図２３に戻り、機能例２のアクセス制御テーブル生成処理（Ｓ１３０）の説明を続ける。
【０１７０】
Ｓ１３２Ｃにおいて、ＡＣＬ候補生成部２３０は、グループ組み合わせ毎に使用サービス数を算出する。但し、上位のグループ組み合わせ（組み合わせ得点が高いグループ組み合わせ）でカウントされた使用サービスは、下位のグループ組み合わせでカウントしない。
Ｓ１３２Ｃの後、Ｓ１３３Ｃに進む。
【０１７１】
図２５は、実施の形態２（機能例２）における（１）グループ組み合わせと使用サービスとの対応図、（２）グループ組み合わせ一覧表および（３）ソート後のグループ組み合わせ一覧表を示す図である。
図２５（１）は、図１６に示した行列ＡＣＬ２９５において使用サービスの行列要素（値「１」）内に、当該使用サービスが含まれるグループ組み合わせを記載したものである。図２３（２）の組み合わせ得点表に基づいて、使用サービスの行列要素に対応するグループ組み合わせのうち最上位の組み合わせ得点を有するグループ組み合わせを行列要素内の上段に記載し、その他のグループ組み合わせを行列要素内の下段に記載している。
Ｓ１３２Ｃ（図２３参照）において、ＡＣＬ候補生成部２３０は、図２５（１）の上段に記載されるグループ組み合わせの数をグループ組み合わせ毎に使用サービス数としてカウントする。
図２５（１）から算出されるグループ組み合わせ毎の使用サービス数を図２５（２）に示す。
【０１７２】
図２３に戻り、機能例２のアクセス制御テーブル生成処理（Ｓ１３０）の説明を続ける。
【０１７３】
Ｓ１３３Ｃにおいて、ＡＣＬ候補生成部２３０は、Ｓ１３２Ｃで算出した使用サービス数が「０」であるグループ組み合わせが有るか否かを判定する。
使用サービス数が「０」であるグループ組み合わせが有る場合（ＹＥＳ）、Ｓ１３４Ｃに進む。
使用サービス数が「０」であるグループ組み合わせが無い場合（ＮＯ）、Ｓ１３５Ｃに進む。
【０１７４】
Ｓ１３４Ｃにおいて、ＡＣＬ候補生成部２３０は、使用サービス数が「０」であるグループ組み合わせを削除し、残ったグループ組み合わせを使用サービス数が多い順にソートする。
【０１７５】
図２５（２）に示すグループ組み合わせ一覧表から使用サービス数が「０」であるグループ組み合わせ「Ｒ３」「Ｒ７」「Ｒ９」を削除し、残ったグループ組み合わせを使用サービス数が多い順にソートしたものを図２５（３）に示す。
【０１７６】
Ｓ１３４Ｃの後、Ｓ１３２Ｃに戻る。
以後、使用サービス数が「０」であるグループ組み合わせが無くなるまでＳ１３２Ｃ〜Ｓ１３４Ｃを繰り返す。
【０１７７】
図２６は、実施の形態２（機能例２）における第２の（１）グループ組み合わせと使用サービスとの対応図、第２の（２）グループ組み合わせ一覧表および（３）アクセス制御テーブル２９４を示す図である。
図２５（３）に対応するグループ組み合わせと使用サービスとの対応図を図２６（１）に示す。
Ｓ１３２Ｃ（図２３参照）において、ＡＣＬ候補生成部２３０は、図２６（１）の上段に記載されるグループ組み合わせの数をグループ組み合わせ毎に使用サービス数としてカウントする。
図２６（１）から算出されるグループ組み合わせ毎の使用サービス数を図２６（２）に示す。
図２６（２）のグループ組み合わせ一覧表には使用サービス数が「０」であるグループ組み合わせが存在しないため（Ｓ１３３Ｃ「ＮＯ」）、Ｓ１３８Ｃに進む。
【０１７８】
図２３に戻り、機能例２のアクセス制御テーブル生成処理（Ｓ１３０）の説明を続ける。
【０１７９】
Ｓ１３５Ｃにおいて、ＡＣＬ候補生成部２３０は、残ったグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル２９４に設定する。
Ｓ１３５Ｃにより、機能例２のアクセス制御テーブル生成処理（Ｓ１３０）は終了する。
【０１８０】
図２６（２）のグループ組み合わせ一覧表から生成されるアクセス制御テーブル２９４を図２６（３）に示す。
【０１８１】
次に、ＡＣＬ候補生成部２３０の機能例３について説明する。
機能例３では、遺伝アルゴリズムを用いてアクセス制御ルールにするグループ組み合わせを生成する。
【０１８２】
図２７は、実施の形態２（機能例３）におけるアクセス制御テーブル生成処理（Ｓ１３０）を示すフローチャートである。
実施の形態２（機能例３）におけるアクセス制御テーブル生成処理（Ｓ１３０）について、図２７に基づいて以下に説明する。
【０１８３】
Ｓ１３１Ｂ〜Ｓ１３３Ｂは、機能例１（図２１参照）と同じである。
Ｓ１３１Ｃ〜Ｓ１３４Ｃは、機能例２（図２３参照）と同じである。
以下、Ｓ１３１Ｄ以降の処理について説明する。
【０１８４】
Ｓ１３１Ｂ〜Ｓ１３３Ｄはループして所定の回数、繰り返される。
以下、ｎ回目のループで処理されるグループ組み合わせ群を第ｎ世代のグループ組み合わせ群という。
【０１８５】
Ｓ１３１Ｄにおいて、ＡＣＬ候補生成部２３０は、グループ組み合わせ群の評価点を算出する。ＡＣＬ候補生成部２３０は、Ｓ１３１Ｄが１回目であれば第１世代のグループ組み合わせ群の評価点を算出し、Ｓ１３１Ｄがｎ回目であれば第ｎ世代のグループ組み合わせ群の評価点を算出する。
例えば、ＡＣＬ候補生成部２３０は、第ｎ世代のグループ組み合わせ群に含まれるグループ組み合わせの数の逆数を第ｎ世代のグループ組み合わせ群の評価点として算出する。つまり、グループ組み合わせの数が４つであればその評価点は「０．２５（＝１／４）」になる。
Ｓ１３１Ｄの後、Ｓ１３２Ｄに進む。
【０１８６】
Ｓ１３２Ｄにおいて、ＡＣＬ候補生成部２３０は、所定の世代までグループ組み合わせ群の評価点を算出したか否かを判定する。
所定の世代までグループ組み合わせ群の評価点を算出した場合（ＹＥＳ）、Ｓ１３４Ｄに進む。
所定の世代までグループ組み合わせ群の評価点を算出していない場合（ＮＯ）、Ｓ１３３Ｄに進む。
【０１８７】
Ｓ１３３Ｄにおいて、ＡＣＬ候補生成部２３０は、当世代のグループ組み合わせ群の構成を一部変異させて次世代のグループ組み合わせ群を生成する。
【０１８８】
例えば、ＡＣＬ候補生成部２３０は、当世代のグループ組み合わせ群からグループ組み合わせをランダムに選択し、選択したグループ組み合わせの構成を一部変異させる。
つまり、ＡＣＬ候補生成部２３０は、グループ組み合わせを構成するプログラムグループからランダムにプログラムを選択し、選択したプログラムを変更する。変更後のプログラムはプログラムグループに属する他のプログラムと重複しないものとする。
または、ＡＣＬ候補生成部２３０は、選択したプログラムをプログラムグループから削除する。
または、ＡＣＬ候補生成部２３０は、プログラムグループに属しているプログラムと異なるプログラムをプログラムグループに追加する。
また、ＡＣＬ候補生成部２３０は、プログラムグループと同様にサービスグループに対してサービスを変更、追加または削除する。
ＡＣＬ候補生成部２３０は、プログラムグループとサービスグループとの両方を変異させてもよいし、プログラムグループとサービスグループとのいずれかを変異させてもよい。
ＡＣＬ候補生成部２３０は、全てのグループ組み合わせを変異させても構わない。
【０１８９】
例えば、ＡＣＬ候補生成部２３０は、当世代のグループ組み合わせ群に新たにグループ組み合わせを追加する。
また、ＡＣＬ候補生成部２３０は、当世代のグループ組み合わせ群からランダムにグループ組み合わせを選択し、選択したグループ組み合わせを削除する。
【０１９０】
Ｓ１３３Ｄの後、組み合わせ得点算出処理（Ｓ１３１Ｂ〜Ｓ１３３Ｂ）に戻る。
ＡＣＬ候補生成部２３０は、次世代のグループ組み合わせ群を処理対象にして組み合わせ得点算出処理（Ｓ１３１Ｂ〜Ｓ１３３Ｂ）、グループ組み合わせ絞り込み処理（Ｓ１３１Ｃ〜Ｓ１３４Ｃ）およびＳ１３１Ｄ〜Ｓ１３３Ｄを実行する。
【０１９１】
Ｓ１３４Ｄにおいて、ＡＣＬ候補生成部２３０は、評価点が最も高い世代のグループ組み合わせ群を選択する。
そして、ＡＣＬ候補生成部２３０は、選択した世代のグループ組み合わせ群に含まれるグループ組み合わせをアクセス制御ルールとしてアクセス制御テーブル２９４に設定する。
Ｓ１３４Ｄにより、アクセス制御テーブル生成処理（Ｓ１３０）（機能例３）は終了する。
【０１９２】
機能例３においてグループ組み合わせ絞り込み処理（Ｓ１３１Ｃ〜Ｓ１３４Ｃ）を省略しても構わない。
【０１９３】
機能例３では最適化アルゴリズムとして遺伝アルゴリズムを適用しているが、その他の最適化アルゴリズム（例えば、ヒルクライム）を適用しても構わない。
【０１９４】
実施の形態２において、アクセス制御ルールの数が少なくなるように最適化する形態について説明した。
１つのプログラムが複数のプログラムグループに所属し、１つのサービスが複数のサービスグループに所属して膨大な数のアクセス制御ルールが生成され得る場合に特に有効である。人手により判断が必要なルールの数を削減することにより、運用負荷を軽減することができる。
【符号の説明】
【０１９５】
１００  アクセス制御システム、２００  アクセス制御情報生成装置、２１０  行列ＡＣＬ生成部、２２０  グループ生成部、２３０  ＡＣＬ候補生成部、２４０  ＡＣＬ生成部、２９０  生成装置記憶部、２９１  ＡＣＬ候補、２９２  プログラムグループテーブル、２９３  サービスグループテーブル、２９４  アクセス制御テーブル、２９５  行列ＡＣＬ、２９６  ＡＣＬ候補グラフ、３００  アクセス制御装置、３１０  アクセス認可部、３２０  ＡＣＬ投入部、３９０  制御装置記憶部、３９１  ＡＣＬ、３９２  プログラムグループテーブル、３９３  サービスグループテーブル、３９４  アクセス制御テーブル、３９５  アクセス履歴ファイル、３９６  ＡＣＬグラフ、３９７  アクセス履歴グラフ、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ドライブ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2011227788.tif 000003
【図２】
2011227788.tif 000004
【図３】
2011227788.tif 000005
【図４】
2011227788.tif 000006
【図５】
2011227788.tif 000007
【図６】
2011227788.tif 000008
【図７】
2011227788.tif 000009
【図８】
2011227788.tif 000010
【図９】
2011227788.tif 000011
【図１０】
2011227788.tif 000012
【図１１】
2011227788.tif 000013
【図１２】
2011227788.tif 000014
【図１３】
2011227788.tif 000015
【図１４】
2011227788.tif 000016
【図１５】
2011227788.tif 000017
【図１６】
2011227788.tif 000018
【図１７】
2011227788.tif 000019
【図１８】
2011227788.tif 000020
【図１９】
2011227788.tif 000021
【図２０】
2011227788.tif 000022
【図２１】
2011227788.tif 000023
【図２２】
2011227788.tif 000024
【図２３】
2011227788.tif 000025
【図２４】
2011227788.tif 000026
【図２５】
2011227788.tif 000027
【図２６】
2011227788.tif 000028
【図２７】
2011227788.tif 000029