(57)【要約】【課題】  必要最小限のアクセスのみを許可するセキュリティポリシーを実現しつつ、必要なメモリ量を最小化できるセキュアＯＳのセキュリティポリシー設定方法を提供すること。【解決手段】  セキュリティポリシー設定対象のリソースに対して異なるタイプを付与する第１のステップと、当該第１のステップでのタイプ付与環境において特定のプログラムを１ないし複数回実行させて各リソースへのアクセスログをログ情報記憶手段に蓄積する第２のステップと、蓄積したアクセスログに基づき同一ドメインと同一タイプに関するアクセスベクターを１つのアクセスベクターに集約すると共に、ドメイン名とリソースの種類およびアクセスベクターの関係から、集約可能なタイプを判別し、タイプの集約を行い、集約結果を前記セキュアＯＳのセキュリティポリシーとしてセキュリティポリシー記憶手段に格納する第３のステップとを備える。【選択図】図３
2007133632.tif 000002
【特許請求の範囲】
【請求項１】
セキュアＯＳのセキュリティポリシーを設定する方法であって、
セキュリティポリシー設定手段が、
セキュリティポリシー設定対象のリソースに対して異なるタイプを付与する第１のステップと、当該第１のステップでのタイプ付与環境において特定のプログラムを１ないし複数回実行させて各リソースへのアクセスログをログ情報記憶手段に蓄積する第２のステップと、蓄積したアクセスログに基づき、同一ドメインと同一タイプに関するアクセスベクターを１つのアクセスベクターに集約すると共に、ドメイン名とリソースの種類およびアクセスベクターの関係から、集約可能なタイプを判別し、タイプの集約を行い、集約結果を前記セキュアＯＳのセキュリティポリシーとしてセキュリティポリシー記憶手段に格納する第３のステップとを備えることを特徴とするセキュアＯＳのセキュリティポリシー設定方法。
【請求項２】
セキュアＯＳのセキュリティポリシーを設定するためのプログラムであって、
セキュアＯＳが搭載されたコンピュータを、
セキュリティポリシー設定対象のリソースに対して異なるタイプを付与する第１の手段と、当該第１の手段によるタイプ付与環境において特定のプログラムを１ないし複数回実行させて各リソースへのアクセスログをログ情報記憶手段に蓄積させる第２の手段と、蓄積されたアクセスログに基づき、同一ドメインと同一タイプに関するアクセスベクターを１つのアクセスベクターに集約すると共に、ドメイン名とリソースの種類およびアクセスベクターの関係から、集約可能なタイプを判別し、タイプの集約を行い、集約結果を前記セキュアＯＳのセキュリティポリシーとしてセキュリティポリシー記憶手段に格納する第３の手段として機能させることを特徴とするセキュリティポリシー設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアＯＳのセキュリティポリシーを設定する場合に、必要最小限のアクセス権限を与えつつ、可読性を高めたセキュリティポリシーの設定方法及びプログラムに関するものである。
【背景技術】
【０００２】
セキュアＯＳのセキュリティポリシーは、プロセスとファイルやディレクトリなどのリソースに対しセキュリティ属性に関するラベルを付与し、その間でアクセス可能な権限を記述する。例えばSELinux（Security Enhanced Linux）では、プロセスに“ドメイン”と呼ばれるラベルを、リソースには“タイプ”と呼ばれるラベルを付与する。アクセス可能な権限は、“アクセスベクター”と呼ばれている。例えば、通常ファイルを表わすオブジェクトタイプ“file”に対する読み込み権限をプロセスに与える場合には“read”というアクセスベクターが設定される。
SELinuxではリソースの種類ごとに、数種から数十種のアクセスベクターが用意され、ドメイン毎（プロセス毎）にタイプ（リソース）に対して許可されるアクセスベクターをセキュリティポリシーとして設定できる。
【０００３】
しかし、SELinuxのように柔軟で細かいアクセス制御設定が可能なセキュアＯＳでは、セキュリティポリシーの設定が非常に困難である。その理由は、セキュリティポリシーの設定者が、プログラムの呼び出し関係や、主要なリソース対するアクセスは理解していても、それ以外のリソース、例えばライブラリやtmpファイルなどへのアクセスを理解していないからである。そのため、リソースのタイプ付与やアクセスベクターの設定が非常に困難になっている。
セキュアＯＳでは、最小特権という考え方に基づき必要最小限のアクセス設定を行うことが必要とされるが、しばしば、安易に設定してしまいがちである。
【０００４】
セキュリティポリシーの設定については、下記の非特許文献１〜３に見られるように、各種の設定ツールや自動設定ツールが発表されている。
また、下記の特許文献１のようにプログラムのソースコードやモデルから自動生成する方法もある。
【非特許文献１】ＳＥＬｉｎｕｘ Policy Editor   http://www.selinux.hitachi-sk.co.jp/tool/selpe/selpe-top.html
【非特許文献２】ＳＥＬｉｎｕｘ/Ａｉｄ  http://www.selinux.hitachi-sk.co.jp/tool/selaid/selaid-top.html
【非特許文献３】SE Linux Policy Tools  http://www.tresys.com/selinux/selinux_policy_tools.html
【特許文献１】特開２００５−６３２２４
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前記の非特許文献１〜３で提案されている各種の設定ツールや自動設定ツールにあっては、必要最小限の設定をし易くしているものの完全ではない。
また、特許文献１のようにセキュリティポリシーをプログラムのソースコードやモデルから自動生成する方法においても、全てのリソースに対するアクセスベクターを設定することは困難である。
この場合、全てのリソースに異なるタイプを付与し、動作テストの結果からアクセスベクターを設定する方法もある。全てのリソースに異なるタイプを付与することは機械的に行うことができる。しかし、タイプが膨大になると、アクセス制御に必要なメモリ量が膨大になり、実運用ではその負荷が問題となる。
また、アクセスベクター設定のための動作テストは何度も行う必要があるが、その結果をそのままアクセスベクターの設定に利用した場合、同じドメインとタイプの間のアクセスベクター設定が複数行になってしまい、プログラム作成者がアクセスベクターの設定を確認するのに多大な労力を費やすという問題が生じる。
【０００６】
本発明の目的は、必要最小限のアクセスのみを許可するセキュリティポリシーを実現しつつ、必要なメモリ量を最小化し、さらに設定したアクセスベクターをプログラム作成者が容易に確認することができるセキュアＯＳのセキュリティポリシー設定方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係るセキュアＯＳのセキュリティポリシー設定方法は、セキュリティポリシー設定手段が、
セキュリティポリシー設定対象のリソースに対して異なるタイプを付与する第１のステップと、当該第１のステップでのタイプ付与環境において特定のプログラムを１ないし複数回実行させて各リソースへのアクセスログをログ情報記憶手段に蓄積する第２のステップと、蓄積したアクセスログに基づき、同一ドメインと同一タイプに関するアクセスベクターを１つのアクセスベクターに集約すると共に、ドメイン名とリソースの種類およびアクセスベクターの関係から、集約可能なタイプを判別し、タイプの集約を行い、集約結果を前記セキュアＯＳのセキュリティポリシーとしてセキュリティポリシー記憶手段に格納する第３のステップとを備えることを特徴とする。
ここで、特定のプログラムとは、セキュアＯＳの環境下で使用する予定のプログラムである。
また、セキュリティポリシー設定対象のリソースとは、セキュアＯＳがアクセス制御を行なうリソースのうち、
（１）  セキュリティポリシー設定者が意図して対象外としたリソース（即ち、セキュリティポリシー設定者が意図して同一のタイプを付与したリソース）
（２）  セキュアＯＳの仕様上の制限により、異なるタイプを付与することができないリソース、
を除外したリソースをいう。
【０００８】
また、本発明に係るセキュリティポリシー設定プログラムは、セキュアＯＳが搭載されたコンピュータを、
セキュリティポリシー設定対象のリソースに対して異なるタイプを付与する第１の手段と、当該第１の手段によるタイプ付与環境において特定のプログラムを１ないし複数回実行させて各リソースへのアクセスログをログ情報記憶手段に蓄積させる第２の手段と、蓄積されたアクセスログに基づき、同一ドメインと同一タイプに関するアクセスベクターを１つのアクセスベクターに集約すると共に、ドメイン名とリソースの種類およびアクセスベクターの関係から、集約可能なタイプを判別し、タイプの集約を行い、集約結果を前記セキュアＯＳのセキュリティポリシーとしてセキュリティポリシー記憶手段に格納する第３の手段として機能させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、セキュリティポリシー設定対象のリソースに対して異なるタイプを予め設定しておき、その設定状態においてセキュアＯＳの環境下で使用する予定のプログラムを実際に実行し、その実行結果で得られる各リソースへのアクセスログを解析し、同一ドメインと同一タイプに関するアクセスベクターの集約、タイプの集約を行い、その集約結果をセキュアＯＳのセキュリティポリシーとして設定するため、必要最小限のアクセスのみを許可するセキュリティポリシーを実現しつつ、必要なメモリ量を最小化し、さらにプログラム作成者が確認し易いセキュリティポリシーの設定を行うことが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
図１は、本発明のセキュリティポリシー設定方法を実施するコンピュータの実施の形態を示す機能構成ブロック図である。
この実施の形態に示すコンピュータは、ＣＰＵ１、キーボードやマウスで構成される入力装置２、表示装置３、ログ情報データベース（ログ情報ＤＢ）４、メモリ５、セキュリティシステムポリシーＤＢ６を備え、メモリ５にはセキュアＯＳ５０が記憶されると共に、セキュリティポリシー設定プログラム５１が記憶されている。
セキュリティポリシー設定プログラム５１は、ポリシー入力部５１１、自動ラベル付与処理部５１２、ポリシー反映処理部５１３、動作ログ入力部５１４、単純ポリシー作成処理部５１５、行集約処理部５１６、タイプ集約処理部５１７で構成される。
【００１１】
図２は、ログ情報ＤＢ４に蓄積されるリソースへのアクセスログの一例を示す図であり、ここでは、“var_t”というタイプが設定された“dir”というオブジェクトクラス（リソース）とドメイン“ftpd_t”との間に設定されて“read”というアクセスベクターによるリソースへのアクセスが拒否された例を示している。
【００１２】
図３は、セキュリティポリシー設定プログラム５１の処理の概要を示すフローチャートである。以下、このフローチャートに従い、本発明を説明する。
セキュリティポリシー設定者であるユーザは、まずベースとなるポリシーを作成し、ポリシー入力部５１１に渡す（ステップ３０１）。ここで、ベースとなるポリシーとは、プロセスに与えるドメインの設定や、設定者が知りうる限りのリソースへのアクセス権限である。例えばその一部は、図４の概念図に示すようなドメイン設定や、リソースへのタイプ付与設定、アクセスベクター設定である。
図４を簡単に説明する。apacheプロセスにはhttpd_tというドメインを、vsftpプロセスにはvsftp_tというドメインを付与している。「/etc/httpｄ/」以下のファイルやディレクトリには、httpd_conf_tというタイプを、「/var/www/html/」以下のファイルやディレクトリには、httpd_content_tというタイプを付与している。タイプについては、以下同様に付与している。また、httpd_tからhttpd_conf_t及びhttp_content_tに対してはread(読み込み)権限を、httpd_tから、httpd_log_tに対してはappend(追記)権限を与えている。ここで、SELinuxのアクセスベクター設定では、図５のように記述する。
【００１３】
セキュリティポリシー設定プログラム５１が、図３や図４に示す様なベースポリシーを受け取ると、自動ラベル付与処理部５１２で、ベースポリシーで設定されていないリソースを検索し、自動的に異なるラベルを付与する（ステップ３０２）。これは、セキュリティポリシーを設定するシステムのファイルシステムを全て検索するなどで実現できる。そして、前記のベースポリシーとステップ３０２で行ったラベル付与の結果を合わせたポリシーに加える。
ここで、システムとは、セキュアＯＳ５０が実装されているコンピュータである。
次に、ポリシー反映処理部５１３で、システムに反映させる（ステップ３０３）。このポリシー反映処理部５１３は、一般的にセキュアＯＳ５０に備えられている機能であり、通常はそれを用いる。
【００１４】
次に、ポリシー違反をログに吐き出すモードで、セキュアＯＳ５０の環境下で使用予定のプログラムを実行させて動作テストを行う。この間に、ポリシー違反のアクセスのログを収集してログ情報ＤＢ４に蓄積する（ステップ３０４）。ＳＥＬｉｎｕｘでは、permissiveモードがそれに当たる。
次に、動作ログ入力部５１４から、収集したログを取り込む。そして、アクセスが拒否されたログがあるかどうかを判別する（ステップ３０５）。
ステップ３０５でログがある場合は、単純ポリシー作成処理部５１５で、拒否された動作を許可するアクセスベクター設定を追加した単純ポリシーを生成する。これは、セキュアＯＳで用意された機能を用いても良い。例えば、SELinuxではaudit2allowコマンドが利用できる。そして、ステップ３０３に戻る(ステップ３０６)。
初回を含めて、多くの場合、ステップ３０３から３０６を何度か繰り返すことになる。
ステップ３０５でログが無い場合は、行集約処理部５１６で、ポリシーの行集約処理を行う。ステップ３０６を何度か行うと図６（ａ）のように、同じドメインと同じタイプに対して複数の行でアクセスベクター設定が行われる。
そこで、行集約処理部５１６では、同じドメインとタイプを検索し、図６（ｂ）のようなアクセスベクターの設定に変換する（ステップ３０７）。
【００１５】
次に、タイプ集約処理部５１７でタイプの集約を行い、セキュリティポリシーＤＢ６に記憶させる（ステップ３０８）。このタイプ集約処理のフローチャートを図７に示す。ここで、ステップ３０７の後のセキュリティポリシーは、図８のようなタイプ付与設定と図９（ａ）のようなアクセスベクター設定になっているものとする。
タイプ集約処理部５１７では、まず、同じドメインと同じアクセスベクター設定を持つタイプを、それぞれのドメインで抽出する(ステップ７０１)。例えば、図９（ａ）からは、同じアクセスベクター設定を持つ図９（ｂ）のような関係が抽出できる。
９１０は、ドメインＸ_tからのアクセスベクター設定が、タイプA_t及びタイプB_tに対して同じ“read write”９０１であること示す。以下、同様である。この関係抽出では、９１５のように同じものが無くても、同様に抽出する。
次に図９（ｂ）から、片方のみが含まれることの無いタイプの組み合わせを検索する（ステップ７０２）。例えば、A_tとB_tは、９１０，９１１に含まれ、A_ｔとB_tが単独で現れることが無い。一方、C_tとD_tは、９１５でD_tのみ現れるため該当しない。
次にステップ７０１での実行結果において、該当する組み合わせが見つかったかどうかを判定する(ステップ７０３)。見つかった場合は、タイプ集約処理を行う（ステップ７０４）。
図９（ｂ）の例では、A_tとB_tの組み合わせが見つかっており、タイプ集約が可能である。そこで、図８のタイプ付与設定８０２を８０１と同じタイプA_tとして、図１０の１００１に示すように変換する。
また、図９（ａ）のアクセスベクター設定は、B_tが入っている９０１、９０２、９０３を削除し、図１１に示すような設定に変換する（ステップ７０４）。そして、ステップ７０２に戻る。
ステップ７０３で、組み合わせが見つかっていなければ、タイプ集約ができないので終了する。
【００１６】
以上で、基本的に異なるラベルを付けることで必要最小限のアクセスのみを許可するセキュリティポリシーを実現しつつ、行集約及びタイプ集約で、必要なメモリ量を最小化しつつ、人が見やすいアクセスベクター設定が作成できる。
なお、異なるラベルを付ける場合も、リソースに異なるタイプを付ける場合と同様、以下の場合が除外される。
（１）  セキュリティポリシー設定者が意図して対象外とした場合（即ち、セキュリティポリシー設定者が意図して同一のラベルを付与した場合）
（２）  セキュアＯＳの仕様上の制限により、異なるラベルを付与することができない場合
【図面の簡単な説明】
【００１７】
【図１】本発明を適用したコンピュータの機能構成ブロック図である。
【図２】アクセスログ情報の例を示す図である。
【図３】セキュリティポリシー設定プログラムの処理手順の概要を示すフローチャートである。
【図４】セキュアＯＳのセキュリティポリシー概念図である。
【図５】セキュアＯＳのアクセスベクター設定例を示す図である。
【図６】行集約処理前と行集約処理後のアクセスベクター設定例を示す図である。
【図７】タイプ集約処理の概要を示すフローチャートである。
【図８】タイプ集約処理前のタイプ付与設定例を示す図である。
【図９】タイプ集約処理後のアクセスベクター設定例とドメインとタイプの関係抽出結果の例を示す図である。
【図１０】タイプ集約処理後のタイプ付与設定例を示す図である。
【図１１】タイプ集約処理後のアクセスベクター設定例を示す図である。
【符号の説明】
【００１８】
４    ログ情報ＤＢ
６    セキュリティポリシーＤＢ
５０    セキュアＯＳ
５１    セキュリティポリシー設定プログラム
５１１    ポリシー入力部
５１２    自動ラベル付与処理部
５１３    ポリシー反映処理部
５１４    動作ログ入力部
５１５    単純ポリシー作成処理部
５１６    行集約処理部
５１７    タイプ集約処理部
【図１】
2007133632.tif 000003
【図２】
2007133632.tif 000004
【図３】
2007133632.tif 000005
【図４】
2007133632.tif 000006
【図５】
2007133632.tif 000007
【図６】
2007133632.tif 000008
【図７】
2007133632.tif 000009
【図８】
2007133632.tif 000010
【図９】
2007133632.tif 000011
【図１０】
2007133632.tif 000012
【図１１】
2007133632.tif 000013