以下、本発明の実施の形態を図面を参照して説明する。
なお、セキュリティポリシーには、サーバルームへの入退室管理基準や記録媒体の取り扱い基準などの人間の行動指針を定めたルールも含まれる。しかし、本発明は、セキュリティポリシーに含まれるルールのうち、管理対象システムに対するセキュリティ設定の指針となるルールを対象とする。
また、以下の説明において、各ハードウェアや各ソフトウェアが実現することができるセキュリティに関する機能をセキュリティ機能と記す。
実施の形態1.
図1は、本発明の第1の実施の形態の例を示すブロック図である。本実施の形態において、セキュリティ管理支援システムは、入力装置10と、機能マッピング処理手段20と、ノード知識データベース21と、出力装置30とを備える。
入力装置10は、例えば、キーボードやマウス等の入力デバイスである。入力装置10は、セキュリティポリシー1と、そのセキュリティポリシー1が適用されるネットワークシステムのトポロジー情報2を入力する。トポロジー情報2は、管理対象のネットワークシステムが有する各ハードウェアとその各ハードウェアが搭載する各ソフトウェアとを示す情報であり、ソフトウェアとそのソフトウェアをインストールしているハードウェアとの対応関係を示している。また、本例において、トポロジー情報は、ネットワークシステムが利用する通信ネットワークの各区分(後述するセグメント)も示し、さらに、その区分と、その区分に属するハードウェアとの対応関係も示している。
ノード知識データベース21は、ノード知識22を格納するデータベースである。ノード知識とは、ネットワークシステムにおいてノードとなる各ハードウェアやソフトウェアがどのようなセキュリティ機能を有するかを示す情報である。ノード知識22は、予めノード知識データベース21に登録される。なお、本発明において、ノードとは、ネットワークシステムを構成するハードウェアと個々のハードウェアにインストールされるソフトウェアの双方を指す。
機能マッピング処理手段20は、入力されたセキュリティポリシー1に含まれる各ルールと、トポロジー情報2に記述されるノードとを、セキュリティ機能を介して対応付ける処理を実行する。以下、ルールとセキュリティ機能とノードとの対応関係を示す情報の集合を機能マップと記す。
機能マッピング処理手段20は、例えば、プログラム(セキュリティ管理支援プログラム)に従って動作するCPUによって実現される。この場合、セキュリティ管理支援システムは、プログラムを記憶する記憶装置(図示せず。)を備える。以下、機能マッピング処理手段20はCPUによって実現されているものとする。
出力装置30は、ディスプレイ装置等の情報出力デバイスであり、機能マッピング処理手段20によって対応付けられたルールとノードの対応関係を出力する。ここでは、ディスプレイ装置を例示したが、プリンタ装置等の他の情報出力デバイスを出力装置30として用いてもよい。
次に、セキュリティクラスについて説明する。セキュリティクラスとは、ルール、ノード知識およびトポロジー情報を表現するための各項目を表すクラスである。セキュリティクラスには、例えば、ハードウェアの種類を表すクラス、ソフトウェアの種類を表すクラス、セキュリティ機能を表すクラス等がある。セキュリティクラスは、コンピュータが認識できるようにルール、ノード知識およびトポロジー情報を表現する役割を果たす。
図2は、セキュリティクラスによる表現の説明図である。セキュリティクラスによって表現される概念は木構造をなし、木構造のルートは最上位の概念を表す。そして、ルートから離れるにつれ、順次詳細な下位の概念を示すようになる。例えば、図2では、「X」という概念の下位概念として、「A」,「B」および「C」という概念があることを示している。さらに、「A」の下位概念として「a1」および「a2」があることを示している。セキュリティクラスにおいて、ある概念を示す場合、ルートからその概念までの経路を順に記述する。親子関係にある各概念を結んでいる各アークは、例えば、「.(ドット)」で記述する。例えば、図2に例示する「b2」を表す場合、「X.B.b2」と記述される。
図3は、セキュリティクラスに含まれる各クラスの例を示す説明図である。図3に示す「network-type-class」は、セグメント(セグメントについては後述する。)を表すクラスである。例えば、DMZ(DeMilitarized Zone; 非武装地帯)は、「network-type-class」によって、「network.segment.dmz 」と記述される。また、インターネットとDMZとの境界は、「network.segment-boundary.int-dmz」と記述される。
「hardware-type-class 」は、ハードウェアの種類を表すクラスである。例えば、汎用サーバは、「hardware-type-class 」によって、「hardware.generic.server 」と記述される。また、専用機器であるルータは、「hardware.specific.router」と記述される。「software-type-class 」は、ソフトウェアの種類を表すクラスである。例えば、パケットフィルタリングソフトウェア「ipchains(商標)」は、「software-type-class 」によって、「software.filtering.packet.ipchains」と記述される。また、OSであるリナックス(商標)のうち、redhat(商標)は、「software.os.linux.redhat」と記述される。なお、図3では、ルート「software」の子要素である「os」の図示を省略している。
「function-class」は、セキュリティ機能を表すクラスである。例えば、ルーティング機能は、「function-class」によって、「function.router 」と記述される。また、パケットフィルタリング機能は、「function.filtering.packet 」と記述される。また、改ざん防止サービス機能は、「function.service.integrity」と記述される。「account-class 」は、ハードウェアやソフトウェアにおいて使用するユーザアカウントを表すクラスである。例えば、rootアカウントは、「account-class 」によって、「account.generic.root」と記述される。また、apacheアカウントは、「account.specific.apache 」と記述される。なお、図3では、ルート「account 」の子要素である「specific」の図示を省略している。
「file-class」は、ファイルアクセス権の付与状態を表すクラスである。例えば、「ファイル読み込み許可」は、「file-class」によって、「file.acl.readonly 」と記述される。また、「所有者権限での実行許可」は、「file.authorization.setid」と記述される。なお、図3では、ルート「file」の子要素である「authorization 」の図示を省略している。「packet-class」は、パケットの転送やパケットの種類を表すクラスである。例えば、「パケット転送」は、「packet-class」によって、「packet-forward」と記述される。また、httpパケットは、「packet.tcp.http 」と記述される。「information-class 」は、ハードウェアやソフトウェアからの応答情報を表すクラスである。例えば、システム応答情報は、「information.fingerprinting」と記述される。
セキュリティクラスによる表現は、原則として、具体的に特定されるハードウェアやソフトウェアに依存しない。例えば、ハードウェアやソフトウェアの具体的な製品名やバージョンに依存しない。ただし、具体的なソフトウェアを指し示す場合には、そのソフトウェアに依存した記述になってもよい。また、図3に示した「hardware-type-class 」は、具体的な製品名やバージョンまでを記述するものではないが、「hardware-type-class 」は、製品名やバージョンまで表現できるような木構造であってもよい。具体的なハードウェアやソフトウェアを指し示す記述以外は、ハードウェアやソフトウェアに依存しない記述になる。
図4は、セキュリティ管理支援システムの処理経過の例を示す流れ図である。入力装置10は、セキュリティポリシー1と、そのセキュリティポリシー1が適用されるネットワークシステムのトポロジー情報2をユーザの操作により入力し、入力された情報を機能マッピング処理手段20に出力する(ステップA100)。次に、機能マッピング処理手段20は、ノード知識22を用いて、セキュリティポリシー1に含まれる各ルールと、トポロジー情報2に記述される各ノードとを対応付けして、機能マップを生成する(ステップA200)。
次に、ステップA100で入力されるセキュリティポリシー1について説明する。セキュリティポリシー1は、例えば、GUIを介して入力される。そして、GUIを介して入力されたセキュリティポリシー1は、コンピュータが認識できる書式に変換される。以下、コンピュータが認識できる書式でセキュリティポリシーを記述した情報をポリシー記述と記す。また、ポリシー記述中において個々のルールを示した部分をpolicy要素と記す。一つのpolicy要素は一つのルールに対応し、policy要素は、対応するルールをコンピュータが認識できる書式で示す。図5は、ポリシー記述の例を示す説明図であり、XML(eXtensible Markup Language)と同様の形式でセキュリティポリシーを記述した場合の例を示している。
図5に例示するポリシー記述において、policiesタグに囲まれた範囲71が、セキュリティポリシー全体を記述している範囲である。また、一組のpolicyタグに囲まれた各範囲72は、個々のpolicy要素を示している。
ルールは、その意味的なレベルにより階層構造をとってもよい。図5に示すlevel 属性73は、ルールのレベルを示し、図5では、ルールのレベルを2段階に分けた場合の例を示している。第1レベル(level="1" で表される)のルールは、例えば、「あるノードではあるセキュリティの機能を実現する/しない」というセキュリティ対策の有無を示す。第2レベル(level="2" で表される)のルールは、例えば、「第1レベルで実現すると宣言したセキュリティ機能はこのように設定する」という具体的なセキュリティ施策を規定する。
各policy要素のname属性74には、個々のルールを一意に決める名前が記述される。policy要素は、comment 要素(個々のルールの説明を自然言語で記述したコメント)75を含む。comment 要素75は、comment タグとともに記述される。policy要素は、policy要素に対応するルールが対象とするノードのセキュリティ機能を示すsubject 要素76を含む。subject 要素76は、セキュリティクラスを用いて記述される。
なお、subject 要素76には、ワイルドカード(例えば「* 」)が含まれていてもよい。図5に例示する「packet.forward.*.httpd」において、「* 」はワイルドカードであり、セキュリティクラスにおいて「forward 」を親とし、「httpd 」を子とする情報であれば任意の情報が当てはまることを意味する。
また、policy要素は、subject 要素76が示すセキュリティ機能を実現するか否かを示すaction要素77を含む。action要素77は、actionタグとともに記述される。第1レベルのpolicy要素に含まれるaction要素77で指定される内容としては、add,delete,change,keep等がある。「add 」は第1レベルのsubject 要素76が示すセキュリティ機能を発揮させることを意味する。「delete」はそのセキュリティ機能を発揮させないことを意味する。「change」は、セキュリティポリシーを変更して、変更後のセキュリティポリシーに則った設定をネットワークシステムに反映させる際に、セキュリティ機能の発揮状態を従来の状態から変更することを意味する。すなわち、従来セキュリティ機能を発揮する状態だった場合、その機能を発揮しない状態に変更し、従来セキュリティ機能を発揮しない状態だった場合、その機能を発揮する状態に変更することを意味する。「keep」は、変更後のセキュリティポリシーに則った設定をネットワークシステムに反映させる際に、セキュリティ機能の発揮状態を従来の状態のままにすることを意味する。なお、セキュリティ機能を「発揮する」とは、セキュリティ機能を「あらわしだす」ことである。言い換えると、セキュリティ機能を「実現する」ことである。
また、第2レベルのpolicy要素に含まれるaction要素77で指定される内容としては、authorize,disauthorize等がある。「authorize 」は、第2レベルのsubject 要素76が示すセキュリティ機能を発揮させることを意味する。「disauthorize」は、そのセキュリティ機能を発揮させないことを意味する。
また、第1レベルのpolicy要素は、セグメントを指定するsegment 要素78を含む。本実施の形態では、管理対象のネットワークシステムが利用する通信ネットワークを区分けし、区分けされた通信ネットワーク毎にルールとノードとを対応付ける場合を例に説明する。セグメントとは、区分けされた各通信ネットワークのことである。
図6は、セグメントの例を示す説明図である。管理対象のネットワークシステムが利用する通信ネットワークは、例えば、インターネット91、DMZ(DeMilitarized Zone; 非武装地帯)92、イントラネット93、WAN94などのように、ネットワークの利用形態によって区分される。また、インターネット−DMZ境界95、DMZ−イントラネット境界96、WAN−イントラネット境界97、インターネット−イントラネット境界98のように、分類された通信ネットワークの境界部分もセグメントとして分類することができる。このように、通信ネットワークをセグメントに区分けし、セグメント毎にルールとノードと対応付ける場合、ルールとノードとの対応付けを行いやすくなる。
segment 要素78は、セキュリティクラスを用いて記述される。例えば、DMZを指定する場合には「network.segment.dmz 」と記述され、インターネットとDMZとの境界を指定する場合には「network.segment-boundary.int-dmz」と記述される(図3に示す「network-type-class」を参照。)。
segment 要素78は、第1レベルのpolicy要素においてのみ記述される。第2レベルのpolicy要素には、そのpolicy要素の親にあたる第1レベルで記述されたsegment 要素が適用される。なお、segment 要素78は、segmentタグとともに記述される。
また、policy要素は、親にあたるpolicy要素が存在する場合、parent要素79を含む。parent要素79は、親にあたるpolicy要素を特定する情報である。parent要素79は、例えばname属性を指定することによって、親にあたるpolicy要素を特定する。parent要素79は、parentタグとともに記述される。
図5に示すpriority要素80は、各ルールの優先度の高低を示す。図5に示す例では、policy要素(A004-2-2)が、「A004-2-1」を特定するpriority要素80を含んでいる。このことは、「A004-2-2」のルールの優先度が、「A004-2-1」よりも高いことを表している。ここで、各ルール間の優先度の高低について説明する。複数のルールを組み合わせ、そのルールの適用順に優先度を定めることで、セキュリティに関するある基準を定めることができる。ある事象に、優先順位の高いルールが適用された場合には、より優先順位の低いルールは無視される。ある事象に、優先順位の高いルールが適用されない場合には、より優先順位の低いルールが適用される。例えば、パケットフィルタリング機能に関するルールとして「全てのパケットの通過を禁止する」というルール(図5における「A004-2-1」)と、「httpパケットを通過させる」というルール(図5における「A004-2-2」)とがあるとする。また、後者の方が優先順位が高いとする。「httpパケットが到着した」という事象が生じた場合、後者のルールが適用され、前者のルールは無視される。一方、「http以外のパケットが到着した」という事象が生じた場合、このパケットは後者のルール(A004-2-2)の対象ではないので、後者のルールは適用されず、前者のルール(A004-2-1)が適用される。この結果、「http以外のパケットの通過を禁止する」という基準を実現することができる。
セキュリティーポリシー1には、ソフトウェアやハードウェアの製品名やバージョン情報等を特定して、そのソフトウェア等における設定を直接指定するようなルールは含まれない。従って、図5に例示するようなポリシー記述にも、具体定期なソフトウェアやハードウェアに依存する記述は含まれない。
なお、図5は、ポリシー記述の一例を示すものであり、ポリシー記述の記述フォーマットは図5に示すものに限定されない。ポリシー記述は、コンピュータが認識できるようにセキュリティポリシーを記述したものであればよい。例えば、図5では、各要素をタグとともに記述した場合を示しているが、コンピュータが各要素を認識できるのであればタグを用いない記述であってもよい。
次に、ステップA100で入力されるトポロジー情報2について説明する。トポロジー情報2は、例えば、GUIを介して入力される。そして、GUIを介して入力されたトポロジー情報2は、コンピュータが認識できる書式に変換される。以下、コンピュータが認識できる書式でトポロジー情報を記述した情報をトポロジー記述と記す。図7は、トポロジー記述の記述フォーマットの例を示す説明図であり、XMLと同様の形式でトポロジー情報を記述する場合の例を示している。
図7に例示するトポロジー記述において、policiesタグに囲まれた範囲101が、トポロジー情報全体を記述している範囲である。また、一組のpolicyタグに囲まれた各範囲72は、個々のpolicy要素を示している。トポロジー情報は、ネットワーク、ハードウェア、ソフトウェアに分けて記述される。図7において、network タグに囲まれた範囲103は、ネットワークに関して記述している範囲である。また、hardwareタグに囲まれた範囲104は、ハードウェアに関して記述している範囲である。softwareタグに囲まれた範囲105は、ソフトウェアに関して記述している範囲である。
ネットワークに関する記述には、segment 要素105が含まれる。segment 要素105は、管理対象のネットワークシステムが利用する各セグメントを表す情報である。管理対象のネットワークシステムが複数のセグメントを利用しているのであれば、segment 要素は複数個記述される。
segment 要素105のname属性106には、個々のセグメントを一意に決める名前が記述される。この名前は、システム管理者によって指定される。segment 要素105のtype属性107には、セキュリティクラスの「network-type-class」を用いて、セグメントの種類が記述される。例えば、DMZを表す場合にはtype属性107に「network.segment.dmz 」が記述され、イントラネットを表す場合には「network.segment.intra」が記述される。また、インターネットとDMZ境界を表す場合には、「network.segment-boundary.int-dmz」が記述される。segment 要素105の子要素であるaddress 要素108は、そのセグメントのIPアドレス(ネットワークアドレス)を示す。1つのsegment 要素に対して複数のaddress 要素を指定してもよい。IPアドレスの表記方法は例えばxxx.xxx.xxx.xxx/yy(ただし、「すべて」を表す0/0, any/0も可)とする。
ハードウェアに関する記述には、node要素109が含まれる。node要素109は、管理対象のネットワークシステムに含まれる各ハードウェアを表す情報である。node要素109は、各ハードウェア毎に記述される。
node要素109のname属性110には、個々のハードウェアを一意に決める名前が記述される。この名前は、システム管理者によって指定される。node要素109のtype属性111には、セキュリティクラスの「hardware-type-class 」を用いて、ハードウェアの種類が記述される。例えば、汎用サーバを表す場合にはtype属性110に「hardware.generic.server 」が記述される。また、ルータやファイアウォールを表す場合には、それぞれ「hardware.specific.router」、「hardware.specific.firewall」が記述される。
canonical 要素112はハードウェアの製品名などを示す。version 要素113はハードウェアのモデル名、バージョン名など、より詳しい名称を示す。これら2つの要素の組み合わせにより、ハードウェアの製品名レベルでの種別を一意に特定する。OS要素114は、セキュリティクラスの「hardware-type-class 」を用いて、そのハードウェア上で動作しているOSを示す。
nic 要素115は、ハードウェアが有するネットワークインタフェース機器(例えば、LANカードやLANボード等)に割り当てられるIPアドレスを示す。このアドレスは、例えば、xxx.xxx.xxx.xxxという形式で記述される。nic 要素115のname属性116は、当該ハードウェア毎に個々のネットワークインタフェース機器を一意に定める名前が記述される。この名前は、システム管理者によって指定される。nic 要素115のin属性117には、ネットワークインタフェース機器が接続されるセグメントが記述される。in属性117は、例えばセグメントのname属性106を指定することによってセグメントを特定する。一つのnode要素109は、複数のnic 要素115を含んでいてもよい。
ソフトウェアに関する記述には、node要素118が含まれる。node要素118は、ハードウェアにインストールされている各ソフトウェアを表す情報である。node要素118は、各ソフトウェア毎に記述される。
node要素118のname属性119には、個々のソフトウェアを一意に決める名前が記述される。この名前は、システム管理者によって指定される。node要素118のtype属性120には、セキュリティクラスの「software-type-class 」を用いて、ソフトウェアの種類が記述される。例えば、パケットフィルタリングソフトウェア「ipchains(商標)」を表す場合には、type属性120に「software.filtering.packet.ipchains」が記述される。node要素118のon属性121には、そのソフトウェアが動作しているハードウェアが記述される。on属性121は、例えばハードウェアのname属性110を指定することによってハードウェアを特定する。canonical 要素122はソフトウェアのアプリケーション名などを示す。version 要素123はソフトウェアのバージョン名を示す。これら2つの要素の組み合わせにより、ソフトウェアの製品名レベルでの種別を一意に特定する。
図7に例示した記述フォーマットに従って記述したトポロジー記述の具体例を図8に示す。図7に例示するトポロジー記述によって、セグメントとハードウェアとの対応関係、およびハードウェアとソフトウェアの対応関係を示すトポロジー情報を表現することができる。
トポロジー情報2には、ソフトウェアやハードウェア等を具体的に特定する情報(例えば、製品名やバージョン情報)が含まれる。従って、トポロジー記述にも、個々のソフトウェアやハードウェアに依存する記述が含まれる。
なお、図7は、トポロジー記述の記述フォーマットの一例を示すものであり、トポロジー記述の記述フォーマットは図7に示すものに限定されない。トポロジー記述は、コンピュータが認識できるようにトポロジー情報を記述したものであればよい。
次に、ステップA100におけるセキュリティポリシー1およびトポロジー情報2の入力態様の例を説明する。図9は、ユーザにセキュリティポリシー1の入力を促すためのGUIの例を示す説明図である。セキュリティ管理支援システムは、ステップA100において、GUIを出力装置30に表示させる。なお、GUIの表示制御は、例えば、機能マッピング処理手段20と共通のCPUが行えばよい。また、GUIのデータは、記憶装置(図1において図示せず。)に予め記憶しておけばよい。GUIは、例えば、セグメントを指定するセグメント指定欄131と、ルールを指定するルール入力欄132を有する。
システム管理者は、セグメント指定欄131においてセグメントを指定し、指定したセグメントにおいて採用するルールをルール入力欄132に入力する。そして、システム管理者は、セグメント毎にルールを入力していくことにより、セキュリティポリシー全体を入力する。CPUは、OKボタン133をマウスクリックされると、指定されたセグメントにおけるルールの入力を確定する。また、CPUは、キャンセルボタン134をマウスクリックされると、指定されたセグメントにおけるルールの入力を無効とする。
CPUは、入力装置10を介して各セグメント毎にルールを入力することによって、セキュリティポリシー1全体の入力を完了する。CPUは、入力内容に応じてポリシー記述を生成し、そのポリシー記述をファイルとして記憶装置(図示せず。)に記憶させる。なお、GUIを用いずに直接ポリシー記述を入力してもよい。すなわち、セキュリティ管理支援システムは、エディタ等を介して、ポリシー記述となるテキスト情報を直接入力してもよい。あるいは、セキュリティ管理支援システムは、別のフォーマットで記述されたセキュリティポリシーを入力し、そのセキュリティポリシーをポリシー記述に変換して、記憶装置に記憶させてもよい。
図10は、ユーザにトポロジー情報2の入力を促すためのGUIの例を示す説明図である。セキュリティ管理支援システムのCPUは、ステップA100において、図10に例示するGUIも出力装置30に表示させる。このGUIのデータは、記憶装置(図示せず。)に予め記憶しておけばよい。GUIは、例えば、ネットワーク情報入力欄141と、ハードウェア情報入力欄142と、ソフトウェア情報入力欄143とを有する。
ネットワーク情報入力欄141は、セグメントの名前(name属性106の値)、セグメントの種類(type属性107の値)およびIPアドレス(address 要素108)の入力欄を有する。
ハードウェア情報入力欄142は、ノードの名前(name属性110の値)、ノードの種類(type属性111の値)、登録名(canonical 要素112)、バージョン(version 要素113)およびOS(os要素114)の入力欄を有する。また、ネットワークインタフェース機器の名前(name属性116の値)、接続セグメント名(in属性117の値)およびIPアドレス(nic 要素115)の入力欄も有する。
ソフトウェア情報入力欄143は、ノードの名前(name属性119の値)、ノードの種類(type属性120の値)、動作ホスト名(on属性121の値)、登録名(canonical 要素122)およびバージョン(version 要素123)の入力欄を有する。
システム管理者は、各入力欄141〜143に所望の情報を入力する。CPUは、OKボタン144をマウスクリックされると入力を確定し、キャンセルボタン145をマウスクリックされると、GUI上に記述された内容を無効とする。
CPUは、入力装置10を介してトポロジー情報2を入力する。CPUは、入力内容に応じてトポロジー記述を生成し、そのトポロジー記述をファイルとして記憶装置(図示せず。)に記憶させる。なお、GUIを用いずに直接トポロジー記述を入力してもよい。すなわち、セキュリティ管理支援システムは、エディタ等を介して、トポロジー記述となるテキスト情報を直接入力してもよい。あるいは、既存のトポロジー情報抽出システムを用いて抽出されたトポロジー情報を入力し、そのトポロジー情報をトポロジー記述に変換して、記憶装置に記憶させてもよい。トポロジー情報を抽出できる既存のシステムとして、例えば、SNMP(Simple Network Management Protocol)やTCP/IPに従って、各ハードウェアのIPアドレス等を収集するネットワーク管理システムがある。
次に、ルールとノードとの対応付け処理(図4に示すステップA200)について説明する。この対応付け処理(以下、機能マッピング処理と記す。)では、セキュリティティポリシー1に含まれる個々のルールと、そのルールに応じたセキュリティの設定を実現できるノードとと対応付ける。セキュリティポリシー1には、ソフトウェアやハードウェアに依存する情報が含まれていないので、ルールとノードとの対応付けはセキュリティ機能を用いて行う。機能マッピング処理の概要を図11に示す。
図11に示すように、セキュリティポリシー全体の中に、あるセグメントSにおけるルールPa,Pbが存在し、そのルールPa,Pbは、それぞれセキュリティ機能Fx,Fyによって実現されるとする。同様に、また、トポロジー情報では、セグメントS内にノードN1,N2が含まれていることを規定しているとする。また、ノード知識データベース21内のノード知識22において、ノードN1,N2は、それぞれセキュリティ機能Fx,Fzを有することが記述されているとする。このとき、ルールPaと、ノードN1とは、セキュリティ機能Fxを介して対応付けられる。そして、対応付けられたルールPa、セキュリティ機能FxおよびノードN1の組み合わせは、「ルールPaは、ノードN1が有するセキュリティ機能Fxによって実現される。」ということを意味する。
具体的には、機能マッピング処理手段20は、機能マッピング処理を、ポリシー記述と、トポロジー記述と、ノード知識22とを用いて実行する。以下、ノード知識データベース21が予め記憶しているノード知識22の記述例を説明した上で、機能マッピング処理の処理経過を説明する。
図12は、ノード知識22の記述フォーマットの例を示す説明図である。図12に示す例において、node_knowledgeタグに囲まれた範囲がノード知識22全体を記述している範囲である。ノード知識22は、hardware要素152と、software要素153とを含む。hardware要素152は、ノードとなるハードウェアを具体的に指定し、そのハードウェアがどのようなセキュリティ機能を有しているのかを示す情報である。software要素153は、ノードとなるソフトウェアを具体的に指定し、そのソフトウェアがどのようなセキュリティ機能を有しているのかを示す情報である。ノード知識22内には、ハードウェアやソフトウェアの種類に応じて、複数のhardware要素152およびsoftware要素153が含まれる。
hardware要素152のname属性154には、ハードウェアの製品名などが記述される。以下、hardware要素152のname属性154に記述される値を「hardware-canonical-name 」と記す。hardware要素152のversion 属性155には、ハードウェアのモデル名、バージョン名など、より詳しい名称が記述される。以下、hardware要素152のversion 属性155に記述される値を「hardware-canonical-version-name 」と記す。hardware要素152のname属性154およびversion 属性155の組み合わせにより、ハードウェアの製品名レベルでの種別が一意に特定される。図7に例示するトポロジー記述において、ハードウェアを特定するcanonical 要素112およびversion 要素113は、予めノード知識22内に含まれているhardware-canonical-name、hardware-canonical-version-nameの中から指定される。
hardware要素152の子要素であるfunction要素156は、そのハードウェアが有するセキュリティ機能を示す。function要素156は、セキュリティクラスの「function-class」を用いて記述される。例えば、ハードウェアがパケットフィルタリング機能を有する場合、「function.filtering.packet 」が記述される。また、ルーティング機能を有する場合、「function.router」が記述される。
software要素153のname属性157には、ソフトウェアのアプリケーション名などが記述される。以下、software要素153のname属性157に記述される値を「software-canonical-name 」と記す。software要素153のversion 属性158には、バージョン名が記述される。以下、software要素153のversion 属性158に記述される値を「software-canonical-version-name 」と記す。software要素153のname属性157およびversion 属性158の組み合わせにより、ソフトウェアの製品名レベルでの種別が一意に特定される。図7に例示するトポロジー記述において、ソフトウェアを特定するcanonical 要素122およびversion 要素123は、予めノード知識22内に含まれているsoftware-canonical-name、software-canonical-version-nameの中から指定される。
software要素153の子要素であるfunction要素159は、そのソフトウェアが有するセキュリティ機能を示す。function要素159は、セキュリティクラスの「function-class」を用いて記述される。
hardware要素152およびsoftware要素153に含まれるfunction要素は一つだけとは限らない。
また、hardware要素152、software要素153共に、他のhardware要素152やsoftware要素153のセキュリティ機能を継承してもよい。図12に示すinherit 要素160は、セキュリティ機能を継承する相手のハードウェアまたはソフトウェアを指定する情報である。図12に示す例において、inherit 要素160は、hardware-canonical-name およびhardware-canonical-version-name の組み合わせ、またはsoftware-canonical-name およびsoftware-canonical-version-name の組み合わせを指定して、継承する相手のノードを特定する。図13は、セキュリティ機能の継承の具体例を示す説明図である。図13に示すsoftware要素153bは、inherit 要素においてsoftware要素153aを指定している。従って、software要素153bが示すソフトウェアは、software要素153aから3種類のセキュリティ機能を継承し、さらに、software要素153b内で直接記述されている2種類のセキュリティ機能を有する。
なお、図12は、ノード知識22の記述フォーマットの一例を示すものであり、ノード知識22の記述フォーマットは図12に示すものに限定されない。ノード知識22は、各ハードウェアや各ソフトウェアがどのようなセキュリティ機能を有するのかを、コンピュータが認識できるように記述したものであればよい。
図14は、機能マッピング処理(ステップA200)の処理経過の例を示す流れ図である。ポリシー記述、トポロジー記述およびノード知識がそれぞれ図5、図7および図12に例示したフォーマットで記述されている場合を例に説明する。そして、セグメント毎にルールが策定され、個々のpolicy要素は、いずれかのセグメントに対応付けられているものとする。
機能マッピング処理手段20は、管理対象のネットワークシステム(以下、管理対象システムと記す。)が利用している各セグメントの情報を抽出する(ステップA201)。機能マッピング処理手段20は、トポロジー記述に含まれる各segment 要素105(図7参照)を抽出することによって、各セグメントの情報を抽出する。
続いて、機能マッピング処理手段20は、管理対象システムにおいてノードとなる各ハードウェアが、どのセグメントに属しているのかを同定する(ステップA202)。具体的には、機能マッピング処理手段20は、トポロジー記述に含まれるハードウェアのノード(node要素109)を抽出し、そのノードにおけるnic 要素115のin属性117を参照する。そして、機能マッピング処理手段20は、そのin属性117と同一のname属性106を有するsegment 要素105を特定することによって、ハードウェアが属しているセグメントを特定する。機能マッピング処理手段20は、トポロジー記述に含まれる全てのハードウェアのノードについてこの処理を行う。
次に、機能マッピング処理手段20は、管理対象システムが用いている各ソフトウェアがどのホスト(ハードウェア)上で動作しているのかを同定する(ステップA203)。具体的には、機能マッピング処理手段20は、トポロジー記述に含まれるソフトウェアのノード(node要素118)を抽出し、そのノードのon属性121を参照する。そして、機能マッピング処理手段20は、そのon属性121と同一のname属性110を有するハードウェアのノードを特定することによって、ソフトウェアがインストールされているハードウェアを特定する。機能マッピング処理手段20は、トポロジー記述に含まれる全てのソフトウェアのノードについてこの処理を行う。ステップA203までの処理を完了することによって、各ノードは、セグメント毎に分類される。
次に、機能マッピング処理手段20は、管理対象システムが利用しているセグメントの中から1つのセグメントを選択する(ステップA204)。機能マッピング処理手段20は、トポロジー記述に含まれる各segment 要素105の中から一つのsegment 要素105を選択すればよい。
そして、機能マッピング処理手段20は、ノード知識データベース21を検索し、選択したセグメントに属するノードして分類された全てのノード(ハードウェア、ソフトウェアとも)のノード知識を抽出する(ステップA205)。以下、ステップA204で選択したセグメントに属するノードのみに関するノード知識をノード知識ビューと記す。ノード知識ビューは、ノード知識データベース21が記憶するノード知識22の部分集合である。
具体的には、機能マッピング処理手段20は、ステップA204で選択したセグメント(segment 要素105)に属すると判定されたノードのcanonical 要素およびversion 要素を参照する。そして、そのcanonical 要素およびversion 要素と合致するhardware-canonical-name およびhardware-canonical-version-name (または、software-canonical-name およびsoftware-canonical-version-name )を有するhardware要素152またはsoftware要素153をノード知識データベース21から抽出する。機能マッピング処理手段20は、この抽出処理を、選択したセグメントに属すると判定された全てのノードについて行う。抽出されたhardware要素152およびsoftware要素153の集合がノード知識ビューである。
また、機能マッピング処理手段20は、hardware要素152またはsoftware要素153を抽出する際、その要素にinherit 要素が含まれているならば、そのinherit 要素を継承元のノードに記述されているfunction要素に置換(展開)する。図15は、inherit 要素の展開例を示す説明図である。あるsoftware要素が、図15(a)に示すように、inherit 要素を含んでいるとする。そして、inherit 要素が示すソフトウェアノード(software要素)が、図15(b)に示す3種類のfunction要素を含んでいるとする。機能マッピング処理手段20は、図15(a)に示すsoftware要素をノード知識ビューとして抽出する場合、inherit 要素を図15(b)に示す3種類のfunction要素に置換する。
ノード知識ビュー作成後、機能マッピング処理手段20は、セキュリティポリシーに含まれるルールの中から、ステップA204で選択したセグメントに対応付けられたルールを抽出する。そして、そのルールを実現するためのセキュリティ機能を有するノードをノード知識ビューから検索する(ステップA206)。
ステップA206において、機能マッピング処理手段20は、ポリシー記述内のsegment 要素78(図5)を参照して、選択したセグメントに対応付けられたルール(policy要素)を抽出すればよい。なお、第1レベル以外のpolicy要素には、segment 要素78は含まれない。しかし、下位レベルのpolicy要素には、第1レベルのsegment 要素78が適用される。従って、機能マッピング処理手段20は、全てのpolicy要素について、どのセグメントに対応しているのかを判定できる。
また、選択したセグメントに対応付けられたルール(policy要素)を実現するためのセキュリティ機能を有するノードを検索するときには、subject 要素76(図5)を参照して、subject 要素76の内容を含むfunction要素を有するノード(hardware要素152またはsoftware要素153)を検索すればよい。このとき、function要素がsubject 要素76の下位概念であるようなノードも検索する。例えば、あるpolicy要素のsubject 要素76が「function.filtering.packet 」であるとする。この場合、その下位概念(例えば、「function.filtering.packet.tcp.httpd 」等)をfunction要素とするノードも検索対象となる。
機能マッピング処理手段20は、選択セグメントにおけるルール(policy要素)と、検索したノード(hardware要素152またはsoftware要素153)とを対応付ける(ステップA207)。このとき、機能マッピング処理手段20は、セキュリティ機能も、ルールおよびノードに対応付ける。このセキュリティ機能は、そのルールを実現するためのセキュリティ機能であり、かつ、そのノードが発揮することができるセキュリティ機能である。なお、ステップA206において、対応するノードが存在しなかった場合には、その旨の情報を記憶する。ステップA207に続いて、機能マッピング処理手段20は、ステップA204で選択したセグメントに対応する全てのルールに対して、ステップA206,A207の処理を行ったか否かを判定する(ステップA208)。まだ、ステップA206,A207の処理を行っていないルールがあるならば、ステップA206以降の処理を繰り返す。
機能マッピング処理手段20は、選択したセグメントに対応する全てのルールに対してステップA206,A207の処理を行ったならば、ポリシー過多(overpolicy)が生じているか否かを判定する(ステップA209)。ポリシー過多は、入力されたルールを実現するためのセキュリティ機能を有するノードが存在しない状態のことである。ステップA206で対応するノードを検索できなかったルールが存在する場合、機能マッピング処理手段20は、ポリシー過多が生じていると判定する。ポリシー過多が生じていると判定した場合、機能マッピング処理手段20は、ポリシー過多が生じたことを出力装置30に出力する(ステップA210)。
ポリシー過多が生じていないと判定した場合、機能マッピング処理手段20は、ポリシー衝突(collision )が生じているか否かを判定する(ステップA211)。ポリシー衝突は、同一のノードに対して、相反する意味を持つ複数のルールが対応付けられている状態のことである。例えば、あるルール(policy要素)のsubject 要素の内容が「function.filtering.packet.tcp.httpd (httpdパケットの通過)」であり、かつ、action 要素の内容が「authorize (許可する)」であるとする。このルールは、「httpdパケットの通過を許可する。」という内容を表している。また、他の(policy要素)のsubject 要素の内容が「function.filtering.packet.tcp.httpd 」であり、かつ、action 要素の内容が「disauthorize(許可しない)」であるとする。このルールは、「httpdパケットの通過を許可しない。」という内容を表している。このような2つのルールが同一のノードに対応付けられていると、互いに矛盾する2つのルールが存在することになり、ポリシー衝突となる。
セキュリティ管理支援システムは、複数のルールの間にポリシー衝突が生じているか否かを、以下のように判断すればよい。例えば、同一のノードに対応付けられた複数のルールのsubject 要素が同一であり、かつaction 要素が異なっていれば、ポリシー衝突が生じていると判定する。また、ポリシー衝突となる状態を示した情報を予め記憶装置(図示せず。)に保持しておき、ルールとセキュリティ機能とルールとの対応関係を示す情報の集合(機能マップ)が、その情報が示す状態に合致する場合に、ポリシー衝突が生じていると判定してもよい。この場合、ポリシー衝突となる状態を示した情報を格納したデータベースを設け、ステップA211において、そのデータベースを参照してポリシー衝突の有無を判定してもよい。また、セキュリティポリシーに基づいてポリシー記述を生成する際、ポリシー衝突となる状態を示した情報の記述もポリシー記述に追加しておき、そのポリシー記述を参照してポリシー衝突の有無を判定してもよい。
ポリシー衝突となる状態を示した情報として、例えば、一つのノードに対応付けられた場合にポリシー衝突となる複数のルールの組み合わせを予め記憶しておけばよい。このような情報の例として、「ノードN1にルールR1,R2が対応付けられた場合、ポリシー衝突である。」などの情報が挙げられる。なお、ポリシー衝突は、同一ノードに対応付けられた複数のルール間においてのみ生じるとは限らない。ポリシー衝突となる状態を示した情報として、異なるノードに対応付けられるルールの組み合わせを予め保持していてもよい。例えば、「ノードN1とルールR1とが対応付けられ、かつ、ノードN2とルールR3とが対応付けられた場合、ポリシー衝突である。」などの情報を予め保持していてもよい。
なお、機能マッピング処理手段20は、priority要素80(図5参照)によって優先度の高低を定められた複数のルールに関しては、ポリシー衝突は生じていないと判定する。
ポリシー衝突が生じていると判定した場合、機能マッピング処理手段20は、ポリシー衝突が生じたことを出力装置30に出力する(ステップA212)。
ポリシー衝突が生じていないと判定した場合、機能マッピング処理手段20は、ポリシー過少(underpolicy )が生じているか否かを判定する(ステップA213)。ポリシー過少は、どのルールとも対応付けられなかったノードが存在している状態のことである。すなわち、セキュリティ機能を発揮できるハードウェアまたはソフトウェアが管理対象システムに含まれているにも関わらず、そのセキュリティ機能を発揮させるルールが策定されなかった状態のことである。ステップA204で選択したセグメントに含まれるノードの中に、どのルールとも対応付けられていないノードが存在する場合、機能マッピング処理手段20は、ポリシー過少が生じていると判定する。その場合、機能マッピング処理手段20は、ポリシー過少が生じたことを出力装置30に出力する(ステップA214)。
ポリシー過多、ポリシー衝突およびポリシー過少が発生していない場合、選択したセグメントにおいてルールとノードとの対応関係は、整合性を保っていることになる。なお、ポリシー過多の判定処理(ステップA209)、ポリシー衝突の判定処理(ステップA211)およびポリシー過少判定処理(ステップA213)は、任意の順序で行ってよい。
ステップA204からステップA213までの処理を完了することによって、1つのセグメントにおいて、ルールとノードとの対応付けができたことになる。ステップA213において、ポリシー過少が生じていないと判定した場合、機能マッピング処理手段20は、トポロジー記述に含まれる全てのセグメントを選択したか否かを判定する(ステップA215)。まだ、選択していないセグメントがあれば、そのセグメントを選択し、ステップA204以降の処理を実行する。全てのセグメントを選択済みであれば、機能マッピング処理を終了する。
ステップA207において対応付けられるルールとセキュリティ機能とノードとの対応関係を示す情報の集合が機能マップになる。機能マッピング処理手段20は、全てのセグメントについてステップA215までの処理を完了することによって、ルールとノードとの間に過不足のない機能マップを生成する。
図16は、機能マップの例を示す説明図である。図16に例示するように、対応する一組のルール、セキュリティ機能およびノードが1つのタプルになる。機能マップは、タプルの集合として表される。図16に例示した1つのタプルは、「A004−2−2」という名前を有するルール(「ルータではhttpdパケットの通過を許可する」というルール)と、「 ”pf1”という名前を持つパケットフィルタリングソフトウェアipchains(商標)」というノードが、セキュリティ機能「function.filtering.packet.tcp.httpd」 を介して対応付けられていることを示している。
機能マッピング処理手段20は、機能マップを出力装置30に出力(表示)する。図17は、機能マップの出力画面の例を示す説明図である。機能マッピング処理手段20は、例えば、ステップA208の後に、図17に例示する画面を出力装置30に表示させ、システム管理者にルールとノードとの対応関係を提示する。
図17に例示する画面において、ルール表示欄171は、1つのセグメントにおける各ルールを表示する。ルール表示欄171において、第2レベルのルールを、親となる第1レベルのルールの下側、かつ親となるルールよりも画面中央よりに表示することが好ましい。このように表示することによってルールの親子関係を把握しやすくなる。ノード表示欄172は、1つのセグメントに属する各ノードを表示する。ノード表示欄172において、ソフトウェアのノードを、そのソフトウェアがインストールされているハードウェアノードの下側、かつハードウェアノードよりも画面中央よりに表示することが好ましい。このように表示することによって、ソフトウェアがどのハードウェアにインストールされているのかを把握しやすくなる。対応関係表示欄173は、対応するルールとノードとを結ぶ線分を表示する。
ルール説明表示欄174は、マウスクリック等によって選択されたルールの説明を表示する。ルールの説明として、例えばcomment 要素75(図5参照)を表示すればよい。ノード情報表示欄175は、マウスクリック等によって選択されたノードの説明を表示する。矛盾検証結果表示部176は、ポリシー過多、ポリシー衝突またはポリシー過少を検出したときに、検出した内容を表示する欄である。セグメント選択欄177は、システム管理者からセグメントの指定を受けるける欄である。機能マッピング処理手段20は、指定されたセグメントにおけるルールとノードの対応関係を図17に例示する画面に表示する。
セキュリティ管理支援システムは、ルール表示欄171、ノード表示欄172、対応関係表示欄173、ルール説明表示欄174、ノード説明表示欄175、矛盾検証結果表示部176およびセグメント選択欄177を有する画面の情報を予め記憶装置(図1において図示せず。)に記憶する。この画面情報において、対応関係表示欄173は、ルール表示欄171とノード表示欄172との間に配置されるように定められる。機能マッピング処理手段20は、その画面情報と機能マップとを用いて、出力画面情報を作成し、出力画面情報に基づいて出力画面を出力装置30に表示する。このとき、機能マッピング処理手段20は、以下のように出力画面情報を作成する。機能マッピング処理手段20は、ルール表示欄171に各ルールを表示し、ノード表示欄172に各ノードを表示し、対応するルールとノードとを結ぶ線分を対応関係表示欄173に表示する出力画面情報を作成する。さらに、機能マッピング処理手段20は、各ルールと対応関係表示欄173との距離が各ルールの階層(レベル)に応じた距離になるように各ルールを表示する出力画面情報を作成する。また、機能マッピング処理手段20は、ハードウェアかソフトウェアかの種別によって対応関係表示欄173との距離が異なるように各ノードを表示する出力画面情報を作成する。
図18は、ポリシー過多を検出した場合の出力画面の例を示す説明図である。図18に示す例では、ルール「A004-2」、「A004-2-1」および「A004-2-2」に対応するノードが存在せず、ポリシー過多が生じていることを示している。機能マッピング処理手段20は、矛盾検証結果表示部176にその通知を出力する。この通知に基づいて、システム管理者は、余分なルールの削除、あるいは不足しているノードの追加を検討することができる。
図19は、ポリシー衝突を検出した場合の出力画面の例を示す説明図である。図19に示す例では、同一のノード(ソフトウェア)に対応付けられたルール「A004-1」と「A004-2」とが矛盾することを示している。機能マッピング処理手段20は、矛盾検証結果表示部176にその通知を出力する。この通知に基づいて、システム管理者は、矛盾を解消するようにセキュリティポリシーを再検討することができる。
図20は、ポリシー過少を検出した場合の出力画面の例を示す説明図である。図20に示す例では、どのルールにも対応付けられないノード「pf1 」が存在することを示している。機能マッピング処理手段20は、矛盾検証結果表示部176にその通知を出力する。この通知に基づいて、システム管理者は、不足しているルールの追加、あるいは余分なノードの削除を検討することができる。なお、機能マッピング処理手段20は、ルールと対応付けられないノードの指定をシステム管理者から受け付けてもよい。この場合、機能マッピング処理手段20は、ポリシー過少の判定において、その指定されたノードをポリシー過少の判断対象から除外する。そして、形式的に「空のポリシー」と対応付ける。
出力画面は、図17から図20に示す画面に限定されない。以下、出力画面の他の例を示す。図21は、機能マップの出力画面の他の一例を示す説明図である。図21に例示する画面を出力する場合、セキュリティ管理支援システムは、セグメント選択欄181、機能マップ表示欄182、ルール説明表示欄186、ノード情報表示欄187および検出結果表示欄188を有する画面の情報を予め記憶装置(図1において図示せず。)に記憶する。機能マッピング処理手段20は、その画面の情報と機能マップとを用いて、出力画面情報を作成し、出力画面情報に基づいて出力画面を出力装置30に表示する。図21に例示する画面において、セグメント選択欄181は、システム管理者からセグメントの指定を受け付ける欄である。機能マップ表示欄182は、管理者に指定されたセグメントにおけるルールとノードとの対応関係を表示する欄である。機能マップ表示欄182には、ハードウェアやソフトウェアを表すノード183,184を表示する。図21に示すノード183はハードウェア(本例ではファイアウォール)を表し、ノード184は、それぞれ「tf」、「nf」というソフトウェアを表す。機能マッピング処理手段20は、ソフトウェアを表すノードと、そのソフトウェアをインストールしているハードウェアを表すノードとを、線分で結んで表示する。また、ハードウェアが他のセグメントに接続している場合、機能マッピング処理手段20は、他のセグメントとの接続関係を表す線分185も表示する。図21に示す例では、ファイアウォールが3種類のセグメントに接続しているので、他のセグメントとの接続関係を表す線分185を3本表示している。
また、機能マッピング処理手段20は、指定されたセグメントにおける各ノード183,184の外周にルールを表示する。すなわち、機能マッピング処理手段20は、各ルールがノード183,184を囲むように表示する。このとき、機能マッピング処理手段20は、あるルールの下位のレベルのルールを、上位のレベルのルールの隣から並べるように表示する。図21に示す例では、「B004-1-1」、「B004-1-9」などのルールを、上位の「B004-1」の隣から並べて表示している。さらに、機能マッピング処理手段20は、対応しているルールとノードとを矢印で結んで表示する。この結果、システム管理者は、ルールとノードとの対応関係を把握しやすくなる。さらに、各ルールがノードを囲むように表示しているので、「ノードのセキュリティがルールに守られている」というイメージをシステム管理者に喚起させることができる。また、ポリシー衝突を生じさせているルールに関しては、矢印を、他の矢印と区別して表示する(本例では破線の矢印として表示している)。なお、機能マップ表示欄182に示すルール「B001-1」は、例えば、「インターネット、LANおよびDMZの境界を設ける」というルールであり、ノードとは対応付けられないことを前提にするルールである。従って、「B001-1」に関しては、矢印は表示しない。このように、ノードとは対応付けられないことを前提にするルールが含まれていてもよい。
ルール説明表示欄186は、マウスクリック等によって選択されたルールの説明を表示する。機能マッピング処理手段20は、例えば、選択されたルールのpolicy要素をルール説明表示欄186に表示する。ノード情報表示欄187は、マウスクリック等によって選択されたノードの説明を表示する。機能マッピング処理手段20は、例えば、選択されたノードのnode要素をノード情報表示欄187に表示する。検出結果表示欄188は、ポリシー衝突、ポリシー過多あるいはポリシー過少の検出結果を表示する欄である。システム管理者は検出結果表示欄188を確認して、セキュリティポリシーやトポロジー情報の再検討を行うことができる。
機能マッピング処理手段20は、システム管理者の操作に応じて、再検討結果の入力を促すGUI189を表示する。機能マッピング処理手段20は、GUI189の操作に応じて、図22に例示する再検討結果入力画面を表示し、入力装置10を介して再検討結果を入力する。例えば、機能マッピング処理手段20は、図22(a)に例示する画面で追加するルールの指定を受け付け、図22(b)に例示する画面でルールの追加について確認を促す。機能マッピング処理手段20は、 ルール追加について確認する旨が入力されたならば、そのルールをポリシー記述に反映させ、その旨を表示する(図22(c))。図23は、ルール「B013-1-5」が追加されたことにより、図21で表示していたポリシー衝突が解消したことを示す出力画面である。
図24は、ポリシー過多を検出した場合の出力画面の例を示す説明図である。機能マッピング処理手段20は、いずれのノードとも対応付けられないルールに関しては、矢印を表示しない。図24において、機能マップ表示欄182に表示されたルール「C013-1」については矢印を表示していない。従って、この表示は、ルール「C013-1」がポリシー過多を生じさせていることを意味する。また、機能マッピング処理手段20は、その説明を検出結果表示欄188に表示する。システム管理者は図24に例示する画面を確認して、セキュリティポリシーやトポロジー情報の再検討を行うことができる。
機能マッピング処理手段20は、システム管理者の操作に応じて、再検討結果の入力を促すGUI189を表示する。機能マッピング処理手段20は、GUI189の操作に応じて、図25に例示する再検討結果入力画面を表示し、入力装置10を介して再検討結果を入力する。例えば、機能マッピング処理手段20は、図25(a)に例示する画面で、ポリシー過多の原因となるルールの削除を促す。機能マッピング処理手段20は、ルールを削除する指示が入力されたならば、そのルールを削除するようにポリシー記述を変更し、削除した旨を表示する(図25(b))。機能マッピング処理手段20は、図26に例示する画面を表示して、図24に示すポリシー過多が解消したことを示す。
図27は、ポリシー過少を検出した場合の出力画面の例を示す説明図である。機能マッピング処理手段20は、いずれのルールとも対応付けられないノードに関しては、矢印を表示しない。図27において、機能マップ表示欄182に表示されたノード「wu−ftp」については矢印を表示していない。従って、この表示は、ポリシー過少が生じていることを意味する。また、機能マッピング処理手段20は、その説明を検出結果表示欄188に表示する。システム管理者は図27に例示する画面を確認して、セキュリティポリシーやトポロジー情報の再検討を行うことができる。
機能マッピング処理手段20は、システム管理者の操作に応じて、再検討結果の入力を促すGUI189を表示する。機能マッピング処理手段20は、GUI189の操作に応じて、図28に例示する再検討結果入力画面を表示し、入力装置10を介して再検討結果を入力する。例えば、機能マッピング処理手段20は、図28(a)に例示する画面で、ノードに適用するルールの指定を受け付け、図28(b)に例示する画面でルールの追加について確認を促す。機能マッピング処理手段20は、ルール追加について確認する旨が入力されたならば、そのルールをポリシー記述に反映させ、その旨を表示する(図28(c))。図29は、ルール「C015-1」が追加されたことにより、図27で表示していたポリシー過少が解消したことを示す出力画面である。
本実施の形態では、ルールとノードとを、セキュリティ機能を介して対応付け、その処理結果を出力装置30から出力する。従って、どのポリシーがどのノードに関係していて各ノードがどのようなルールを実現しているか、すなわち、現状のセキュリティがどのようであるかをユーザは容易に把握できる。
本実施の形態では、ルールとノードとを対応づけ、さらに、ポリシー過多、ポリシー衝突およびポリシー過少の判定を行う。従って、入力されたトポロジー情報によって特定されるネットワークシステムではシステム管理者が策定したルールに基づくセキュリティ機能を発揮できないという指摘をすることができる。また、システム管理者が策定したセキュリティポリシーに、相反する意味を持つルールが含まれているという指摘をすることができる。また、システム管理者が策定したセキュリティポリシーは、トポロジー情報によって特定されるネットワークシステムのセキュリティ機能を十分に活用していないという指摘をすることができる。このように、システム管理者がルールとノードとの対応関係を把握しやすくし、ルールとノードとの不整合(過不足)を指摘することができるので、管理対象システムのセキュリティの向上およびシステム管理者の負荷軽減を図ることができる。
実施の形態2.
図30は、本発明の第2の実施の形態の例を示すブロック図である。なお、第1の実施の形態と同様の構成部については図1と同一の符号で示し、説明を省略する。本実施の形態において、セキュリティ管理支援システムは、入力装置10と、機能マッピング処理手段20と、ノード知識データベース21と、設定パラメータ取得手段40と、パラメータ取得テンプレートデータベース(以下、パラメータDBと記す。)41と、設定スクリプト生成手段50と、設定スクリプトテンプレートデータベース(以下、スクリプトDBと記す。)51と、出力装置30とを備える。
パラメータDB41は、パラメータ取得テンプレート42を記憶するデータベースである。パラメータ取得テンプレート42は、ハードウェアまたはソフトウェアに対してあるセキュリティ機能を設定する際に用いるパラメータと、そのパラメータの具体的な値を抽出する指示とを記述した情報である。本例では、条件式を記述して、条件式に合致するパラメータ値の抽出を指示する場合を例に説明する。パラメータの具体的な値は、例えば、トポロジー記述から抽出される。また、異なるハードウェアやソフトウェアが同一のセキュリティ機能を発揮する場合がある。このような場合、ハードウェアやソフトウェアの製品が異なっていても、そのセキュリティ機能を発揮させる際に設定すべきパラメータは共通である。従って、各セキュリティ機能に応じたパラメータ取得テンプレートは、ハードウェアやソフトウェアに個別に依存した記述にはならない。パラメータDB41は、例えばテキスト形式で、セキュリティ機能毎にパラメータ取得テンプレート42を記憶する。
設定パラメータ取得手段40は、機能マッピング処理手段が生成した機能マップに含まれる各ノードのセキュリティ機能を発揮させるためのパラメータを、トポロジー情報2などから取得する。設定パラメータ取得手段40は、パラメータ取得テンプレート42を用いてこの処理を実行する。
スクリプトDB51は、設定スクリプトテンプレート52を記憶するデータベースである。設定スクリプトテンプレート52は、個々のハードウェアまたはソフトウェアの個々のセキュリティ機能毎に、そのセキュリティ機能を発揮させる設定を行うための命令と、その命令において指定すべきパラメータを設定パラメータ取得手段40による処理結果から抽出する指示とを記述した情報である。異なるハードウェアやソフトウェアが同一のセキュリティ機能を発揮する場合であっても、そのセキュリティ機能を設定するための命令はハードウェアやソフトウェア毎に異なる。従って、セキュリティ機能が同じであっても、ソフトウェアなどが異なれば、設定スクリプトテンプレート52の記述も異なる。スクリプトDB51は、例えばテキスト形式で、各ハードウェアおよび各ソフトウェアの各セキュリティ機能毎に設定スクリプトテンプレート52を記憶する。
設定スクリプト生成手段50は、設定スクリプトテンプレート52に、パラメータの具体的な値を追加することによって、その値でのパラメータ設定の命令を記述した設定スクリプトを生成する。
出力装置30は、例えば、第一の実施の形態と同様の情報出力デバイスであり、設定スクリプト生成手段50が生成した設定スクリプトを出力(表示出力、印字出力等)する。
設定パラメータ取得手段40、設定スクリプト生成手段50は、例えば、プログラム(セキュリティ管理支援プログラム)に従って動作するCPUによって実現される。この場合、セキュリティ管理支援システムは、プログラムを記憶する記憶装置(図示せず。)を備える。以下、機能マッピング処理手段20、設定パラメータ取得手段40、設定スクリプト生成手段50は、共通のCPUによって実現されているものとする。なお、出力装置30は、設定スクリプトを記憶装置あるいは記憶媒体に記録することにより設定スクリプトを出力するものであってもよい。あるいは、通信ネットワークを介して、パラメータ設定対象となるネットワークシステムに設定スクリプトを送信出力するものであってもよい。この場合、出力装置30は、このCPUによって実現される。
次に、本実施の形態の動作について説明する。図31は、本実施の形態の動作の処理経過の例を示す流れ図である。まず、入力装置10および機能マッピング処理手段20は、セキュリティポリシー1およびトポロジー情報2を入力し、機能マップを作成する(ステップB100,B200)。この処理は、第1の実施の形態におけるステップA100,A200と同様の処理である。ステップB200の処理によって、機能マッピング処理手段20は、ルールとセキュリティ機能とノードの対応関係を示す情報を作成する。
図32は、ステップB300以降の処理の概念を示す説明図である。設定パラメータ取得手段40は、対応付けられたルール、セキュリティ機能およびノードの組毎に、そのセキュリティ機能に応じたパラメータ取得テンプレート42を検索する。各パラメータ取得テンプレート42には、セキュリティ機能を設定する際に用いるパラメータの具体的な値をトポロジー記述から抽出するための条件式が記述されている。設定パラメータ取得手段40は、各セキュリティ機能に応じたパラメータ取得テンプレート42を検索したならば、パラメータ取得テンプレート42内の条件式を用いてトポロジー記述からパラメータの値を抽出する(ステップB300)。
次に、設定スクリプト生成手段50は、ステップB200で得られた機能マップに含まれる個々のノードの各セキュリティ機能毎に、スクリプトDB51から設定スクリプトテンプレート51を検索する。各設定スクリプトテンプレート52には、セキュリティ機能を発揮させる命令(設定スクリプト)の雛型があらかじめ記述されている。設定スクリプト生成手段50は、検索した設定スクリプトテンプレート52に、ステップB300で得られたパラメータを追加することで設定スクリプトを生成する(ステップB400)。続いて、設定スクリプト生成手段50は、出力装置30に、設定スクリプトを出力させる(ステップB500)。
次に、ステップB300について詳細に説明する。設定パラメータ取得手段40は、機能マップ内のセキュリティ機能毎に、このパラメータ取得テンプレート42を検索する。
既に説明したように、個々のパラメータ取得テンプレート42には、セキュリティ機能を発揮させるために設定すべきパラメータと、そのパラメータの具体的な値を抽出する条件式とが予め記述される。この記述は、個々のハードウェアやソフトウェアの種類に依存するものではない。セキュリティ機能を発揮させるために設定すべきパラメータの例としては、IPアドレスやnic 要素115のname属性116(図7参照)等が挙げられる。そして、これらのパラメータの具体的な値は、トポロジー記述に含まれている。
図33は、パラメータ取得テンプレート42の具体例を示す説明図である。図33(a)は、「インターネット−DMZ境界セグメントにおいて、httpdパケットの通過を許可する」というルールのpolicy要素を示す。このルールは、subject 要素が示すセキュリティ機能「function.filtering.packet.tcp.httpd 」を発揮させることで実現される。図33(b)は、このセキュリティ機能に対応するパラメータ取得テンプレートの具体例である。dataタグに囲まれたdata要素211は、このセキュリティ機能を発揮させるために必要な各パラメータおよび、そのパラメータの具体的な値を抽出するための条件式の集合である。param タグに囲まれた1つのparam 要素212は、1つのパラメータ取得テンプレートを表す。param 要素212は、data要素211と、セキュリティ機能を示すfunction要素とを含む。
図33(b)に示す例では、「<パラメータ名>::<トポロジー記述の要素>[<条件式>];」という書式の集合としてdata要素211を記述している。「パラメータ名」は同一のテンプレート中で一意に識別できる名前が指定されている。「トポロジー記述の要素」の部分でトポロジー記述内の子要素を指定する場合、親要素と子要素とをドット(. )で連結し、親要素から子要素をたどるように記述される。また、ある要素の属性を指定する場合、その要素と属性とを例えば「@ 」で連結して記述する。「条件式」は、「A=B」という形式で記述され、「AがBである」という条件を表している。設定パラメータ取得手段40は、この条件式を用いて、トポロジー記述から条件を満たすような要素の内容や属性値を抽出する。
図33(b)に示す例では、パラメータ「src-address」の具体的な値を抽出する条件式として[network.segment@type='network.segment.int']を記述している。この条件式は、「トポロジー記述のnetwork 要素の子要素であるsegment要素のtype属性が"network.segment.int" である」という条件を示している。設定パラメータ取得手段40は、この条件を満たすaddress 要素の内容を抽出して、「src-address」の値とすることを意味する。
また、条件式はネスト構造になっていてもよい。図34のトポロジー記述を用いて、ネスト構造の条件式に基づいてパラメータ値を抽出する場合の例を示す。例えば、図33(b)に示すパラメータ「in-interface」の値を抽出する条件式は、ネスト構造になっている。この条件式は、「network 要素の子要素であるsegment 要素のtype属性が"network.segment.int"である。」という条件式を内包している。従って、条件式全体としては、「ハードウェアのnic 要素のin属性が、『network 要素の子要素であるsegment 要素のtype属性が"network.segment.int"であるようなsegment要素のname属性』の値になっている。」という条件を示している。さらに、この条件を満たすnic 要素のname属性の値を抽出して、「in-interface」の値とすることを示している。図34に示す記述Aは、「type属性が"network.segment.int"であるようなsegment要素」を示しており、そのname属性は、「int 」である。そして、この「int 」をin属性とするnic 要素が記述Bに示されており、記述Bは、この条件に合致する。この結果、設定パラメータ取得手段40は、記述Bが示すname属性「eth0」を抽出して、「in-interface」の値とする。
また、パラメータの値が既定値として定まっている場合には、条件式を記述せずに、その既定値を直接記述しておいてもよい。例えば、図33に示すパラメータ「protocol」の値は、トポロジー記述の内容によらずに「tcp」という既定値として定められる。
設定パラメータ取得手段40は、パラメータ取得テンプレート42が示す全てのパラメータについて検索を行い、トポロジー記述から抽出したパラメータの値を、パラメータ取得テンプレート42に記述する。図35は、この処理によって値が記述されたパラメータ取得テンプレートの例を示す。 設定パラメータ取得手段40は、この処理を機能マッピング処理(ステップB200)で得られた全てのタプル、つまり全てセキュリティ機能について行う。
なお、図33(b)は、パラメータ取得テンプレートの記述フォーマットの一例を示すものである。パラメータ取得テンプレートは、条件に応じた値を抽出できるように記述されていればよい。
ステップB300で取得したパラメータの値は、セキュリティ機能を発揮させるような設定を行うために用いられるパラメータ値である。このパラメータ値そのものは、ハードウェアやソフトウェアの種類には依存しない。一方、このパラメータ値を設定するための命令(設定スクリプト)は、ハードウェアやソフトウェアの種類毎に異なる。ステップB400では、ハードウェアやソフトウェアの種類に応じた設定スクリプトを生成する。以下、ステップB400の処理について説明する。
ステップB400において、設定スクリプト生成手段50は、機能マップ内のセキュリティ機能とノードとの組み合わせをキーにして、スクリプトDB51から設定スクリプトテンプレート52を検索する。設定スクリプトテンプレート52には、設定スクリプトの雛型が記述されている。ただし、設定すべきパラメータ値は未確定であり、パラメータ値が記述されたパラメータ取得テンプレート(図35参照)からパラメータ値を抽出する指示が記述されている。設定スクリプト生成手段50は、検索した設定スクリプトテンプレート52に基づいて、設定スクリプトを生成する。
図36は、設定スクリプトテンプレートの例を示す説明図である。図36に示した例は、「httpパケットを通過させる」というセキュリティ機能を、パケットフィルタリングソフトウェア「ipchains(商標)」に設定するためのテンプレートである。図36に示す例において、パラメータの前に記述された「$ 」は、そのパラメータの値をパラメータ取得テンプレートから抽出し、「$ 」およびパラメータの記述を、抽出したパラメータ値に置換することを意味する。この置換の例を、図37に示す。例えば、設定スクリプトテンプレートにおいて、「$in-interface 」という記述がある場合、設定スクリプト生成手段50は、パラメータ取得テンプレートから「in-interface」のパラメータ値(本例では「eth0」)を抽出する。そして、「$in-interface 」を「eth0」に置換する。設定スクリプト生成手段50は、設定スクリプトテンプレートに従って、この置換を繰り返し、設定スクリプトを生成する。設定スクリプト生成手段50は、この処理を前記ステップB200の機能マッピングで得られたすべてのタプルについて行う。
なお、図36は、設定スクリプトテンプレートの記述フォーマットの一例を示すものである。設定スクリプトテンプレートは、各ハードウェアやソフトウェアに応じた設定スクリプトの雛型と、パラメータ値の抽出の指示が記述されたものであればよい。
最後に、設定スクリプト生成手段50は、出力装置30に設定スクリプトを出力する(ステップB500)。システム管理者は、出力された設定スクリプトを用いて、各ノードに対し設定を行えばよい。なお、設定スクリプト生成手段50は、設定スクリプトを記憶装置や記憶媒体にファイルとして記憶させてもよい。また、表示出力や印字出力ではなく、設定スクリプト生成手段50は、通信ネットワークを介して、管理対象のネットワークシステムの各ノードに設定スクリプトを送信してもよい。この場合、設定スクリプトを受信した各ノードが、その設定スクリプトに基づいて自動的にパラメータの設定を行ってもよい。
図38は、設定スクリプトを表示出力する出力画面の例である。設定スクリプト生成手段50は、例えば、図38に例示するように、セグメント選択欄181、機能マップ表示欄182、ルール説明表示欄186およびノード説明表示欄187と同時にスクリプト表示欄501を出力すればよい。そして、設定スクリプト生成手段50は、マウスクリックなどによってルールを選択されたならば、図39に例示する画面を出力して、設定スクリプトを生成するか否かの確認をシステム管理者に促す。設定スクリプトを生成する指示が入力されたならば、設定スクリプト生成手段50は、設定スクリプトを生成し、その設定スクリプトをスクリプト表示欄501に表示すればよい。
第2の実施の形態では、設定パラメータ取得手段40が、ハードウェアやソフトウェアに依存せずにセキュリティ機能に応じたパラメータ値を抽出する。そして、設定スクリプト生成手段が、ハードウェアやソフトウェアの種類に応じた設定スクリプトの雛型に対してそのパラメータ値を適用することにより、設定スクリプトを生成する。このように、設定スクリプトが自動的に作成されるので、システム管理者の負担を軽減できる。特に、システム管理者は、各ハードウェアやソフトウェアのセキュリティ機能毎に設定スクリプトを作成する必要がなく、システム管理者の負担軽減の効果が大きい。すなわち、各ハードウェアあるいはソフトウェア固有の設定方法を意識しなくても、策定したセキュリティポリシーに則って適切に設定スクリプトが生成されるので、システム管理者の負担が軽減される。
また、新たなセキュリティ機能が出現した場合には、そのセキュリティ機能に応じたパラメータ取得テンプレートと、設定スクリプトテンプレートをそれぞれ追加すればよい。既存のパラメータ取得テンプレートおよび設定スクリプトテンプレートを修正する必要はないので、セキュリティ機能の増加に対して容易に対処できる。また、既存のセキュリティ機能を持つ新たなノードが出現した場合には、そのノードに応じた設定スクリプトテンプレートを追加すればよく、既存のパラメータ取得テンプレートおよび設定スクリプトテンプレートを修正する必要はない。従って、ハードウェアやソフトウェアの種類の増加にも容易に対処できる。
なお、本実施の形態では、機能マッピング処理手段20およびノード知識データベース21を備える場合を示したが、機能マッピング処理手段20およびノード知識データベース21を備えずに、外部のシステム(例えば、第1の実施の形態に示すセキュリティ管理支援システム)で作成された機能マップを入力し、入力された機能マップに基づいてステップB300以降の処理を実行してもよい。すなわち、入力装置10からトポロジー情報および機能マップを入力し、その後、設定パラメータ取得手段40がステップB300の処理を開始すればよい。また、キーボードやマウスなどの装置によって機能マップを入力するのではなく、外部システムから通信ネットワークを介して機能マップを受信することにより、機能マップを入力してもよい。この場合、機能マップ入力手段として、ネットワークインタフェース装置を備えていればよい。
実施の形態3.
図40は、本発明の第3の実施の形態の例を示すブロック図である。なお、第1の実施の形態と同様の構成部については図1と同一の符号で示し、説明を省略する。本実施の形態において、セキュリティ管理支援システムは、入力装置10と、機能マッピング処理手段20と、ノード知識データベース21と、脆弱性フィルタリング手段60と、脆弱性情報データベース61と、出力装置30とを備える。
脆弱性情報データベース61は、脆弱性情報62を記憶するデータベースである。脆弱性情報62は、ハードウェアやソフトウェアにおけるセキュリティ上の脆弱点に関する情報である。脆弱性情報データベース61は、脆弱性情報62を記憶するデータベースである。新たに見つかった脆弱点に関する脆弱性情報は、一般に公開されている。例えば、システム管理者は、公開された脆弱性情報の内容を、所定のフォーマットにあわせて整理する。脆弱性情報データベース61は、この所定のフォーマットにあわせて整理された脆弱性情報62を記憶する。
脆弱性情報フィルタリング手段60は、機能マッピング処理手段20から出力される機能マップと、脆弱性情報データベース61に格納された脆弱性情報62とを用いて、管理対象のネットワークシステムへの適用が必要な脆弱性情報を選別し、そのレポートを生成する。そして、脆弱性情報フィルタリング手段60は、そのレポートを出力装置30に出力(表示、印刷など)させる。
本実施の形態において、入力装置10は、セキュリティポリシーおよびトポロジー情報のほかに、脆弱性情報も入力される。
機能マッピング処理手段20および脆弱性情報フィルタリング手段60は、例えば、プログラム(セキュリティ管理支援プログラム)に従って動作するCPUによって実現される。この場合、セキュリティ管理支援システムは、プログラムを記憶する記憶装置(図示せず。)を備える。以下、機能マッピング処理手段20および脆弱性情報フィルタリング手段60は、共通のCPUによって実現されているものとする。
次に、本実施の形態における処理経過について説明する。なお、入力装置10および機能マッピング処理手段20は、第一の実施の形態で示したステップA100,A200の処理を完了し、すでに機能マップを生成しているものとする。そして、機能マッピング処理手段20は、その機能マップを記憶装置(図示せず。)に記憶させているものとする。
図41は、本実施の形態における処理経過の例を示す流れ図である。まず、システム管理者は、一般に公開されている新たな脆弱性情報を収集する(ステップC100)。システム管理者は、一般に公開されているWebページやデータベースから脆弱性情報を入手することができる。脆弱性情報を公開しているWebページとしては、例えばJPCERT/CC(Japan Computer Emergency Response Team /Coordination Center )のWebページがある。また、CVE(Common Vulnerabilities&Exposures)も、脆弱性情報のデータベースを公開している。さらに、各ベンダもWebページやメーリングリストによる電子メール配信によって、脆弱性情報を公開している。システム管理者は、一般に公開されているWebページ、データベースやメーリングリストなどを利用して、脆弱性情報を収集する。そして、システム管理者は、その脆弱性情報を分析して所定のフォーマットにあわせて脆弱性情報の内容を整理し、脆弱性情報データベース61に登録する操作を行う。セキュリティ管理支援システムのCPUは、所定のフォーマットに整理された脆弱性情報62を、入力装置10を介して入力し、その脆弱性情報62を脆弱性情報データベース61に登録する(ステップC200)。
図42は、脆弱性情報データベース61が記憶する脆弱性情報62のフォーマットの例を示す説明図である。本例において、脆弱性情報62は、「ID」、「名称」、「詳細」、「対象ノード/バージョン」、「脆弱原因」および「対処法」の各項目を有するように整理される。「ID」項目は、脆弱性情報データベース61に格納される脆弱性情報を一意に識別する識別子である。「名称」項目は、脆弱性情報のタイトルである。「詳細」項目は、セキュリティ脆弱点の詳細な内容を示す情報である。例えば、「詳細」項目として、セキュリティ脆弱点の影響度や緊急性、問題の技術的な情報、可能性のある攻撃方法などの情報が記述される。「対処法」項目は、セキュリティ脆弱点を解消するための対処法を示す情報である。例えば、「対処法」項目として、バージョンアップ、セキュリティパッチの適用、設定ファイルの変更などの対処法が記述される。
「対象ノード/バージョン」項目は、「対処法」項目に記述される対処法を施すべきハードウェアまたはソフトウェアを示す。「対象ノード/バージョン」項目において、ハードウェアやソフトウェアは、セキュリティクラスまたは、ノード知識22内に含まれているhardware-canonical-name 、hardware-canonical-version-name 、software-canonical-name 、software-canonical-version-name を用いて記述される。
「脆弱原因」項目は、脆弱点の発生原因を示す。具体的には、「脆弱原因」項目として、脆弱点の発生原因となるセキュリティ機能、あるいはハードウェア、ソフトウェアなどが記述される。例えば、ハードウェアまたはソフトウェアがあるセキュリティ機能を発揮した場合にセキュリティ上の問題が生じるが、そのセキュリティ機能を発揮しない場合には問題が生じないとする。この場合、そのセキュリティ機能が脆弱点の原因として「脆弱原因」項目に記述される。また、例えば、あるノードAとあるノードBとが同時に動作する場合にノードAにセキュリティ上の問題が生じるが、ノードBが動作していない場合にはノードAに問題が生じないとする。この場合、ノードBが脆弱点の原因として「脆弱原因」項目に記述される。「対象ノード/バージョン」項目において、脆弱点の原因となるセキュリティ機能やノードは、セキュリティクラスまたは、ノード知識22内に含まれているhardware-canonical-name 、hardware-canonical-version-name 、software-canonical-name 、software-canonical-version-name を用いて記述される。
システム管理者は、新たに入手した脆弱性情報を、このような各項目を有するフォーマットに整理し、セキュリティ管理支援システムに入力する。セキュリティ管理支援システムのCPUは、そのフォーマットに整理された脆弱性情報を脆弱性情報データベース61に追加登録する。ここでは、脆弱性情報の入手および整理をシステム管理者が行う場合を示したが、セキュリティ管理支援システムのCPUが脆弱性情報の入手から登録までを実行してもよい。このような脆弱性情報の登録は、例えば、以下のように実現される。セキュリティ管理支援システムのCPUは、脆弱性情報を表示したWebページを提供しているサーバに定期的にWebページを要求し、そのサーバからWebページの情報を受信する。そして、CPUは、Webページの情報から各項目に記述すべき情報を抽出し、各項目毎に抽出した情報を脆弱性情報データベース61に登録すればよい。なお、各項目に記述すべき情報は、所定のキーワードを含む箇所をWebページから抽出したり、Webページの文書構造に基づいて判断すればよい。
ステップC200の後、脆弱性情報フィルタリング手段60は、登録された脆弱性情報62と管理対象システムの機能マップとを用いて、管理対象システムにセキュリティ脆弱点が存在する可能性の程度を判定し、その脆弱点への対処の推奨の程度を判定する(ステップC300)。そして、脆弱性情報フィルタリング手段60は、セキュリティ脆弱点に関するレポートを出力装置30に出力する(ステップC400)。
次に、ステップC300について詳細に説明する。図43は、ステップC300の処理経過の例を示す流れ図である。脆弱性情報フィルタリング手段60は、ステップC200で脆弱性情報データベース61に登録された脆弱性情報62の「対象ノード/バージョン」項目を用いて、機能マッピング処理手段20から出力された機能マップを検索する(ステップC301)。機能マップは、対応付けられたルール、セキュリティ機能およびノードの組み合わせの集合である。脆弱性情報フィルタリング手段60は、「対象ノード/バージョン」項目に合致するノードを含む組み合わせが機能マップに存在しているか否かを判定する(ステップC302)。
脆弱性情報フィルタリング手段60は、「対象ノード/バージョン」項目に合致するノードを含む組み合わせが存在すると判定した場合、脆弱性情報62の「脆弱原因」項目を用いて機能マップを検索する(ステップC303)。そして、脆弱性情報フィルタリング手段60は、「脆弱原因」項目に合致する内容(セキュリティ機能またはノード)を含む組み合わせが機能マップに存在しているか否かを判定する(ステップC304)。
ステップC304において、「脆弱原因」項目に合致する内容を含む組み合わせが存在すると判定した場合、セキュリティ脆弱点への対処を施す対象ノードが存在し、かつ、その脆弱点の原因となるセキュリティ機能またはノードが管理対象ネットワークシステムで使用されていることになる。従って、この場合、脆弱性情報フィルタリング手段60は、セキュリティ脆弱点への対処を「強く推奨」する必要があると判定する(ステップC305)。
ステップC304において、「脆弱原因」項目に合致する内容を含む組み合わせが存在しないと判定した場合、セキュリティ脆弱点への対処を施す対象ノードは存在するが、その脆弱点の原因となるセキュリティ機能またはノードは管理対象ネットワークシステムで使用されていないことになる。この場合、脆弱性情報フィルタリング手段60は、セキュリティ脆弱点への対処を「推奨」する必要があると判定する(ステップC306)。
ステップC302において、「対象ノード/バージョン」項目に合致するノードを含む組み合わせが機能マップに存在しないと判定した場合、脆弱性情報フィルタリング手段60は、「対象ノード/バージョン」項目を用いてトポロジー記述を検索する(ステップC307)。そして、脆弱性情報フィルタリング手段60は、「対象ノード/バージョン」項目に合致するノードがトポロジー記述に存在しているか否かを判定する(ステップC308)。
ステップC308において、「対象ノード/バージョン」項目に合致するノードがトポロジー記述に存在すると判定した場合、ルールと対応付けられていないが、セキュリティ脆弱点への対処を施す対象ノードが管理対象システム内に存在していることになる。この場合、脆弱性情報フィルタリング手段60は、管理対象システム内に「潜在的な脆弱点」が存在する旨の報告をすると判定する(ステップC309)。
脆弱性情報フィルタリング手段60は、ステップC305,C306,C309の後、ステップC310の処理に移行する。また、ステップC308において、「対象ノード/バージョン」項目に合致するノードがトポロジー記述に存在しないと判定した場合にも、システム管理者に報告すべき事項はないので、ステップC310に移行する。
脆弱性情報フィルタリング手段60は、新たに登録された全ての脆弱性情報62に対してステップC301以降の処理を実行したか否かを判定する(ステップC310)。まだ、処理を行っていない脆弱性情報62が存在する場合、その脆弱性情報62に対してステップC301以降の処理を行う。新たに登録された全ての脆弱性情報62に対してステップC301以降の処理を行ったならば、ステップC305,C306,C309の判定結果に基づいてレポートを作成する(ステップC311)。脆弱性情報フィルタリング手段60は、例えば、脆弱性情報62の各項目とともに、推奨の程度を表示するレポートを作成すればよい。
最後に、脆弱性情報フィルタリング手段60は、作成したレポートを出力手段300から出力する(ステップC400)。図44は、出力されるレポートの例を示す説明図である。図44では、「脆弱性への対処を強く推奨する」という情報とともに、「ID」、「詳細」、「対象ノード/バージョン」、「脆弱原因」および「対処法」の各項目を示すレポートを例示する。脆弱性情報フィルタリング手段60は、「脆弱原因」項目の内容に、ユーザが指定したノードの名称(ノードのname属性)を追加して、そのname属性も併記されるようにレポートを作成してもよい。ノードのname属性もレポートに含めることにより、システム管理者にとって、対処を行わなければならないノードの把握が容易になる効果がある。
なお、図44で示したレポートは例示であり、レポートの内容は図44に示す内容に限定されない。
また、脆弱性情報フィルタリング手段60は、対処を「強く推奨」する脆弱性情報のレポートは無条件に出力装置30に出力し、「推奨(強い推奨ではない)」する脆弱性情報のレポートは、システム管理者からの要求に応じて出力してもよい。例えば、「推奨」する脆弱性情報のレポートを作成した場合、そのレポートの出力を要否の決定を促すGUIを表示し、出力の指示を受け付けた場合にそのレポートを出力してもよい。「潜在的な脆弱点」が存在する旨を示すレポートは、記憶装置に記憶しておき、システム管理者からレポート出力の指示を受け付けた場合に、記憶装置からレポートを読み込んで表示させてもよい。「潜在的な脆弱点」のレポートの量は多い可能性があるので、このように管理者からの指示に応じて出力してもよい。
なお、脆弱性情報データベース61が格納する脆弱性情報42のフォーマットは、図42に示すフォーマットに限定されない。脆弱性情報42のフォーマットは、推奨の程度を分類するために「対処を施す対象ノードを示す項目」と「脆弱点の原因を示す項目」とを含み、管理者に具体的な対処法を提示するために、対処法に関する項目を含んでいればよい。
第3の実施の形態では、日々新たに脆弱性情報データベース61に登録される脆弱性情報に基づいて、管理対象のネットワークシステムに脆弱点の原因が存在するか否かを判定し、脆弱性への対処方法を自動的にレポートする。従って、数多くの脆弱性情報の中から管理対象ネットワークシステムに関係する脆弱性情報のみ用意に選別できる。さらに、脆弱点への対処の対象ノード(ハードウェアやソフトウェア)が管理対象ネットワーク中に存在するかどうかだけでなく、その脆弱点の発生原因となるセキュリティ機能やノードをネットワークシステムで使用しているか否かを判定し、その判定結果の組み合わせによって対処実施の推奨の程度を分類する。従って、システム管理者は、脆弱点への対処をすぐに行うべきか否かを判断することができる。そして、システム管理者は、推奨の程度に応じて、「現在さしあたって対処する必要がない」ということを判断できる。従って、不必要な対処を行って他のサービスなどに不具合を生じさせる可能性を減少させることができる。
なお、本実施の形態では、機能マッピング処理手段20およびノード知識データベース21を備える場合を示したが、機能マッピング処理手段20およびノード知識データベース21を備えずに、外部のシステム(例えば、第1の実施の形態に示すセキュリティ管理支援システム)で作成された機能マップを入力してもよい。すなわち、入力装置10を介してトポロジー情報および機能マップを入力し、また、新たな脆弱性情報の登録が完了してから、脆弱性情報フィルタリング手段60がステップC300の処理を開始すればよい。また、キーボードやマウスなどの装置が機能マップを入力するのではなく、外部システムから通信ネットワークを介して機能マップを受信することにより、機能マップを入力してもよい。この場合、機能マップ入力手段として、ネットワークインタフェース装置を備えていればよい。
また、第2の実施の形態と同様に、設定パラメータ取得手段40と、パラメータ取得テンプレートデータベース41と、設定スクリプト生成手段50と、設定スクリプトテンプレートデータベース51とを備え、第3の実施の形態に示す処理だけでなく、第2の実施の形態に示す処理(設定スクリプトの生成)を実行できるようにしてもよい。
実施の形態4.
第4の実施の形態を説明する前に、第4の実施の形態と第1の実施の形態との差異を明確にするため、第1の実施の形態について補足する。
第1の実施の形態では、1つのpolicy要素がparent要素79(図5参照)によって親にあたるpolicy要素を特定する場合を示した。また、priority要素80(図5参照)によって各ルール(各policy要素)の優先度の高低を示す場合も示した。このparent要素79やpriority要素80の記述内容は、「ルールの親子関係や優先順位を決定している制約」である。
また、第1の実施の形態では、同一のノードに対応付けられた複数のルールのsubject 要素が同一であり、かつaction 要素が異なっている場合には、ポリシー衝突として検出することを説明した。これは、「同一のノードに対応付けられた複数のルールのsubject 要素が同一であり、かつaction 要素が異なっていてはならない。」という制約が存在することを意味する。同様に、1つのノードに、予め定められた特定の複数のルールが対応付けられた場合に、ポリシー衝突として検出してもよいことを示した。第1の実施の形態では、「ノードN1にルールR1,R2が対応付けられた場合、ポリシー衝突である。」という例を示した。これは、「1つのノードに、予め定められている特定の複数のルールが対応付けられてはならない。」という制約が存在することを意味する。さらに、第1の実施の形態では、異なるノードに、それぞれ予め定められた特定のルールが対応付けられた場合に、ポリシー衝突として検出してもよいことを示した。第1の実施の形態では、「ノードN1とルールR1とが対応付けられ、かつ、ノードN2とルールR3とが対応付けられた場合、ポリシー衝突である。」という例を示した。これは、異なるノードに、それぞれ予め定められた特定のルールが対応付けられてはならないという制約が存在することを意味する。これらの制約は、「ノードとルールとの間の関係を決定している制約」である。
また、第1の実施の形態では、どのルールとも対応付けられなかったノードが存在している場合、ポリシー過少を検出することを示した。これは、ノードはルールと対応付けられなければならないという制約が存在することを意味する。この制約も、「ノードとルールとの間の関係を決定している制約」である。
以上のように、第1の実施の形態では、「ルールの親子関係や優先順位を決定している制約」や、「ノードとルールとの間の関係を決定している制約」を用いて、機能マップを作成している。
これに対し、第4の実施の形態では、上記の制約に加えて、セグメント(通信ネットワークの各区分)におけるセキュリティクラス間の制約を示す情報も用いる。「セキュリティクラスの間の制約」とは、より具体的には、function-classによって表されるセキュリティ機能の間の制約である。セグメントにおけるセキュリティ機能の間の制約を制約知識と記すことにする。
図45は、本発明の第4の実施の形態の例を示すブロック図である。入力装置10は、第1の実施の形態における入力装置と同様に、セキュリティポリシー1およびトポロジー情報2を入力する。セキュリティポリシー1に含まれる各ルールには、セキュリティ機能の情報が対応付けられている。また、各ルールは、セグメント毎に分類されている。従って、入力された各ルールから変換されるpolicy要素には、subject 要素76、action要素77、およびsegment 要素78が含まれる。また、トポロジー情報2は、第1の実施の形態に示したトポロジー情報と同様に、通信ネットワークの各セグメントと、そのセグメントに属するハードウェアとの対応関係を示し、さらに、各ハードウェアと各ハードウェアが搭載する各ソフトウェアとの対応関係を示している。
機能マッピング処理手段20は、例えば、プログラムに従って動作するCPUによって実現される。機能マッピング処理手段20は、入力されたセキュリティポリシー1をポリシー記述に変換する。この結果、各ルールは、policy要素として表される。また、機能マッピング処理手段20は、入力されたトポロジー情報2をトポロジー記述に変換する。そして、機能マッピング処理手段20は、機能マップ(ルールとセキュリティ機能とノードとの対応関係を示す情報の集合)を作成する。
ノード知識データベース21は、第1の実施の形態において説明したノード知識と同様のノード知識22を記憶する。また、出力装置30は、第1の実施の形態における出力装置30と同様である。
制約知識データベース23は、制約知識24を記憶するデータベースである。制約知識24による制約の内容として、例えば、「禁止(prohibited)」、「注意(warning )」、「推奨(recommend )」、および「必要(must)」がある。
「禁止」は、同一セグメント内において設定されてはならない複数のセキュリティ機能の設定の組み合わせを定めた制約である。なお、分類された通信ネットワークの境界部分(例えば、インターネットとDMZとの境界等)もセグメントに該当する。「注意」は、同一セグメント内で設定されたときにシステム管理者に注意を促すべき複数のセキュリティ機能の設定の組み合わせを定めた制約である。「推奨」は、同一セグメント内で設定されることが好ましいと定められる複数のセキュリティ機能の設定の組み合わせを定めた制約である。「必要」は、同一セグメント内で設定されなければならない複数のセキュリティ機能の設定の組み合わせを定めた制約である。
制約知識24は、コンピュータが認識できる書式で記述され、制約知識データベース23に記憶される。コンピュータが認識できる書式で記述された制約知識を、制約知識記述と記すことにする。制約知識記述全体の中において、個々の制約知識を示した部分をconstraint要素と記すことにする。図46は、制約知識記述の例を示す説明図である。constraints タグに囲まれた範囲401が、制約知識記述全体に該当する。また、constraintタグに囲まれた範囲は、constraint要素を示している。図46に示す例では、5個のconstraint要素402a〜402eを示している。ただし、制約知識記述全体に含まれるconstraint要素の数は5個に限定されるわけではない。
各constraint要素402a〜402eは、function要素407を含む。function要素407は、セキュリティ機能を示す。また、function要素407は、action属性408を含んでいる。action属性408は、function要素407が表しているセキュリティ機能を発揮させるか否かというセキュリティ機能の設定を示している。図46に示す各function要素407のaction属性408はいずれも「add 」と記述されている。「add 」は、セキュリティ機能を発揮させることを示している。図46では、action属性408を全て「add 」としているが、セキュリティ機能を発揮させない旨がaction属性408に記述されていてもよい。
また、各constraint要素402a〜402eは、name属性403と、logic 属性404と、type属性405とを含む。name属性403には、個々のconstraint要素をそれぞれ識別するための名前が記述される。
logic 属性404には、constraint要素に含まれるfunction要素407に対して適用する論理式が記述される。例えば、logic 属性404に「and 」という記述がなされているならば、constraint要素に含まれる複数のfunction要素407の記述内容が同時に真になること(すなわち、論理積)を意味する。また、1つのセグメントにおける機能マップにfunction要素407が示すセキュリティ機能が複数存在するという状態がlogic 属性404に記述される場合もある。このような状態は、本例では「multiple」と記述するものとする。すなわち、logic 属性404に「multiple」という記述がなされているならば、1つのセグメントにおける機能マップにfunction要素407が示すセキュリティ機能が複数存在するという状態を意味する。
type属性405には、constraint要素が表す制約の種類が記述される。type属性405に「prohibited」が記述されているならば、「禁止」を意味する。「warning 」が記述されているならば、「注意」を意味する。「recommend 」が記述されているならば、「推奨」を意味する。「must」が記述されているならば、「必要」を意味する。
また、各constraint要素402a〜402eは、comment要素406を含む。comment要素406は、個々の制約の説明を自然言語で記述したコメント文である。
また、各constraint要素402a〜402eは、segment要素409を含む。segment要素409は、constraint要素が示す制約に従うべきセグメントを表している。
以下、図46に示す5つのconstraint要素402a〜402eを用いて、constraint要素の具体例について説明する。constraint要素402aは、name属性において「c001」という名前が指定されている。constraint要素402aは、2つのfunction要素407を含んでいる。図46の6行目に示す1つ目のfunction要素は、action属性408が「add 」であるので、DNAT(Dynamic Network Address Translator)を実施する旨の設定を表している。同様に、7行目に示す2つ目のfunction要素は、SNAT(Static Network Address Translator )を実施する旨の設定を表している。また、constraint要素402aのsegment要素409は通信ネットワークの境界部分のセグメントを示しており、logic 属性404は「and (論理積)」を示し、さらにtype属性405は「prohibited(禁止)」を示している。従って、constraint要素402aは、「通信ネットワークの境界部分のセグメントにおいて、DNATとSNATとを同時に実施してはならない。」という制約を表している。DNATとSNATとは、アドレス変換の手法として互いに背反的な手法であるため、このような制約が設けられる。
constraint要素402bは、name属性において「c002」という名前が指定されている。constraint要素402bは、2つのfunction要素407を含んでいる。図46の11行目に示す1つ目のfunction要素は、action属性408が「add 」であるので、改竄防止(function.service.integrity)を実施する旨の設定を表している。同様に、12行目に示す2つめのfunction要素は、ログ取得を実施する旨の設定を表している。また、constraint要素402bのsegment要素409は境界部分ではないセグメントを示しており、logic 属性404は「and (論理積)」を示し、さらにtype属性405は「warning(注意)」を示している。従って、constraint要素402bは、「境界部分でないセグメントにおいて、改竄防止とログ取得とを同時に実施する場合には注意を要する。」という制約を表している。ログの取得を行う際における、ログをファイルに書き出す動作が、改竄行為として検出されることになってしまうため、このような注意を促すための制約が設けられる。
constraint要素402cは、name属性において「c003」という名前が指定されている。constraint要素402cは、2つのfunction要素407を含んでいる。図46の18行目に示す1つ目のfunction要素は、action属性408が「add 」であるので、ログ取得を実施する旨の設定を表している。同様に、19行目に示す2つめのfunction要素は、時刻合わせを実施する旨の設定を表している。また、constraint要素402cのsegment要素409は境界部分ではないセグメントを示しており、logic 属性404は「and (論理積)」を示し、さらにtype属性405は「recommend (推奨)」を示している。従って、constraint要素402cは、「境界部分でないセグメントにおいて、ログ取得と時刻合わせとの双方を実施することが好ましい。」という制約を表している。constraint要素402a,402bが2つのセキュリティ機能の併存を禁止したり、あるいは併存に対して注意を促すものであるのに対し、constraint要素402cは2つのセキュリティ機能の併存を推奨するものである。
constraint要素402dは、name属性において「c004」という名前が指定されている。constraint要素402dは、1つのfunction要素407を含んでいる。図46の25行目に示すfunction要素は、action属性408が「add 」であるので、ネットワーク型侵入検知(function.ids.network)を実施する旨の設定を表している。また、constraint要素402dのsegment要素409は境界部分ではないセグメントを示しており、logic 属性404は「multiple」を示し、さらにtype属性405は「prohibited(禁止)」を示している。従って、constraint要素402dは、「境界部分でないセグメントにおいて、ネットワーク型侵入検知を複数箇所で実施してはならない。」という制約を表している。
constraint要素402eは、name属性において「c005」という名前が指定されている。constraint要素402eは、2つのfunction要素407を含んでいる。図46の31行目に示すfunction要素は、action属性408が「add 」であるので、改竄防止を実施する旨の設定を表している。32行目に示すfunction要素は、ウィルスチェック(function.service.virusscan)を実施する旨の設定を表している。また、constraint要素402eのsegment要素409は境界部分ではないセグメントを示しており、logic 属性404は「add 」を示し、さらにtype属性405は「must(必要)」を示している。従って、constraint要素402eは、「境界部分でないセグメントにおいて、改竄防止を実施する場合にはウィルスチェックも実施しなければならない。」という制約を表している。
このように、制約知識24は、セグメントにおけるセキュリティ機能の間の制約を表している。第1の実施の形態で示した制約が「ノードとルールとの間の関係を決定している制約」であるのに対し、制約知識24にはノードの情報は含まれない。また、policy要素の親子関係や優先順位に関する記述も含まれない。
なお、図46は、制約知識記述の一例を示すものであり、制約知識記述は他の書式によって記述されていてもよい。ただし、以下の説明では、図46に例示する制約知識記述が制約知識データベース23に記憶されているものとして説明する。
機能マッピング処理手段20は、セキュリティポリシー1およびトポロジー情報2が入力されると、セキュリティポリシー1をポリシー記述に変換し、トポロジー情報2をトポロジー記述に変換する。図47はポリシー記述の例を示し、図48はトポロジー記述の例を示す。図47に例示するポリシー記述では、segment要素として「network.segment-boundary.int-dmz」を含むpolicy要素421a,421bが記述されている。また、segment要素として「network.segment.dmz」を含むpolicy要素421c〜421eが記述されている。また、図48に例示するトポロジー記述では、ノード431a〜431f等のノードが記述されている。また、セグメントもトポロジー記述に記述される。
機能マッピング処理手段20による機能マップ作成の処理経過は、図14に示す場合と同様である。機能マッピング処理手段20は、ステップA201〜A203の処理の後、セグメントを選択し(ステップA204)、ノード知識ビューを作成する(ステップA205)。そして、選択したセグメントにおけるルールとノードとを、セキュリティ機能を介して対応付け、ルールと、セキュリティ機能と、ノードとの対応関係を示す情報の集合を作成する(ステップA206〜A208)。その後、ポリシー過多、ポリシー衝突、およびポリシー過少の有無をそれぞれ判定する(ステップA209,A211,A213)。そして、まだ選択していないセグメントがあれば(ステップA215におけるNo)、ステップA204以降の動作を繰り返す。
ポリシー過多の有無の判定(ステップA209)において、機能マッピング処理手段20は、対応するノードを検索できなかったルールが存在する場合、ポリシー過多が生じていると判定する。この処理は、第1の実施の形態で示したステップA209の処理と同様である。
ポリシー衝突の有無の判定(ステップA211)において、機能マッピング処理手段20は、同一のノードに対応付けられた複数のルールのsubject 要素が同一であり、かつaction 要素が異なっているときにポリシー衝突が生じていると判定する。また、1つのノードに、予め定められた特定の複数のルールが対応付けられた場合に、ポリシー衝突が生じていると判定してもよい。さらに、異なるノードにそれぞれ予め定められた特定のルールが対応付けられた場合に、ポリシー衝突が生じていると判定してもよい。以上の判定処理は、第1の実施の形態で示した判定処理と同様である。第4の実施の形態では、以上の判定処理に加えて、制約知識24に基くポリシー衝突の有無の判定も行う。
制約知識24に基いてポリシー衝突の有無の判定を行う場合、type属性405が「prohibited(禁止)」または「warning (注意)」であるconstraint要素を用いて判定を行う。
ステップA204でセグメント「network.segment-boundary.int-dmz(インターネット−DMZ境界)」が選択され、このセグメントにおいて、図47に示すpolicy要素421a,421bがそれぞれノードと対応付けられているとする。この場合、DNATの実施というセキュリティ機能およびSNATの実施というセキュリティ機能がインターネット−DMZ境界における機能マップ内に併存することになる。この状態は、constraint要素402aが示す制約に従っていない。よって、この場合、機能マッピング処理手段20は、ポリシー衝突が生じていると判定する。そして、機能マッピング処理手段20は、同一セグメント内で設定されてはならないセキュリティ機能の設定の組み合わせ(本例では、DNATの実施の設定とSNATの実施の設定との組み合わせ)が存在する旨の情報を出力装置30に出力させる。
また、ステップA204でセグメント「network.segment.dmz (DMZ)」が選択され、そのセグメントにおいて、図47に示すpolicy要素421c〜421eがそれぞれノードと対応付けられているとする。この場合、改竄防止というセキュリティ機能およびログ取得というセキュリティ機能がDMZにおける機能マップ内に併存することになる。この状態は、constraint要素402bが示す制約に従っていない。よって、この場合、機能マッピング処理手段20は、ポリシー衝突が生じていると判定する。そして、同一区分内で設定されたときにシステム管理者に注意を促すべき複数のセキュリティ機能の設定の組み合わせ(本例では、改竄防止の実施の設定とログ取得の実施の設定との組み合わせ)が存在するので、機能マッピング処理手段20は、システム管理者に注意を促す情報を出力装置30に出力させる。
なお、機能マッピング処理手段20は、第1の実施の形態で示したポリシー衝突の判定は行わずに、制約知識24のみに基いてポリシー衝突の判定を行ってもよい。
ポリシー過少の有無の判定(ステップA213)において、機能マッピング処理手段20は、どのルールとも対応付けられなかったノードが存在している場合、ポリシー過少が生じていると判定する。この判定処理は、第1の実施の形態で示した判定処理と同様である。第4の実施の形態では、この判定処理に加えて、制約知識24に基くポリシー過少の有無の判定も行う。
制約知識24に基いてポリシー過少の有無の判定を行う場合、type属性405が「recommend (推奨)」または「must(必要)」であるconstraint要素を用いて判定を行う。
ステップA204でセグメント「network.segment.dmz (DMZ)」が選択され、そのセグメントにおいて、図47に示すpolicy要素421c〜421eがそれぞれノードと対応付けられているとする。この場合、ログ取得というセキュリティ機能および時刻あわせというセキュリティ機能がDMZにおける機能マップ内に併存することになる。この状態は、constraint要素402cが示す制約に従っている。よって、ログ取得の実施の設定と時刻あわせの実施の設定の組み合わせは、ポリシー過少に該当しない。仮に、いずれか一方の設定のみが存在している場合には、機能マッピング処理手段20は、同一セグメント内で設定されていることが好ましいと定められる複数のセキュリティ機能の設定の組み合わせが成立していない旨の情報を出力装置30に出力させる。
また、DMZにおける機能マップ内には、改竄防止というセキュリティ機能が含まれるが、ウィルスチェックというセキュリティ機能は含まれていない。すなわち、constraint要素402eが示す複数のセキュリティ機能の設定の一部しか存在しておらず、この状態は、constraint要素402eが示す制約に従っていない。よって、この場合、機能マッピング処理手段20は、ポリシー過少が生じていると判定する。そして、機能マッピング処理手段20は、同一セグメント内で設定されていなければならないセキュリティ機能の設定の組み合わせ(本例では、改竄防止の実施の設定とウィルスチェックの実施の設定の組み合わせ)が成立していない旨の情報を出力装置30に出力させる。
第4の実施の形態では、第1の実施の形態と同様に、ルールとノードとを、セキュリティ機能を介して対応付け、その処理結果を出力装置30から出力する。従って、どのルールがどのノードに関係していて各ノードがどのようなルールを実現しているかを用意に確認することができる。
さらに、ポリシー過多、ポリシー衝突およびポリシー過少の判定を行う。従って、入力されたトポロジー情報によって特定されるネットワークシステムではシステム管理者が策定したルールに基づくセキュリティ機能を発揮できないという指摘をすることができる。また、同一セグメント内におけるセキュリティ機能の間の制約に従っていないポリシー衝突を指摘することができる。また、同一セグメント内におけるセキュリティ機能の間の制約に従っていないポリシー過少を指摘することができる。このように、セキュリティ機能の設定の不整合や不足を指摘することができるので、管理対象システムのセキュリティの向上およびシステム管理者の負荷軽減を図ることができる。