レベル: 初級 中嶋 剛 (gnaka@jp.ibm.com), IM&Lotus開発, ソフトウェア開発研究所, IBM 大川 昌弘 (mohkawa@jp.ibm.com), IM&Lotus開発, ソフトウェア開発研究所, IBM 貝嶋 創 (kaijima@jp.ibm.com), IM&Lotus開発, ソフトウェア開発研究所, IBM
2009年 2月 27日 IBM Database Encryption Expert (DEE) は、アプリケーションがファイル・システムに書き込むデータやデータベースのバックアップ・イメージを暗号化し、アクセス制御する機能を提供します。この連載では、DEEの機能やメカニズム、操作方法、いくつかのシナリオなどを紹介します。第3回は、アクセス制御と暗号化によるオンライン・データの保護機能を提供するDEE File System Agent (DEE FS Agent)について説明します。オンライン・データの暗号化のための暗号化キーの作成からポリシーの作成・適用、暗号化キー変換ユーティリティの利用法を紹介します。
DEE File System Agentとは
DEE File System Agent(DEE FS Agent)は、ユーザーやプロセスのアクセス制御や、オンライン・データの暗号化を行うためのDEE Agentです。例えば以下のような要求を実現します。
- データをデータベースに暗号化して保存したいが、データベースの定義や、データベースを利用するアプリケーションには変更を加えたくない。
- データベース全体の暗号化、あるいは一部の重要なデータが含まれるテーブルスペースのみ暗号化して保存したい。
- データベースからエクスポートしたデータを暗号化して保存しておき、あるユーザーからの参照時のみ自動的に復号したい。
- データベースから出力された監査ログやトランザクション・ログなどのファイルの参照や改竄を防ぎたい。
上記のようなことを実現するために、DEEではポリシーを使った設定を行います。DEE FS Agentが利用するポリシーのことをオンライン・ポリシーと言います。オンライン・ポリシーを利用する手順として、まず暗号化キーを作成します。オンライン・データの暗号化には対称暗号アルゴリズムが用いられ、作成時に暗号化アルゴリズムの選択が可能です。その後、オンライン・ポリシーの定義で、ファイルやディレクトリなどのリソースや、ユーザー、プロセス、時間などによるアクセス制御に関する設定、また暗号化や復号に利用する暗号化キーの指定などを行います。これらの操作はDEE Management Consoleを利用して行います。
定義したオンライン・ポリシーはDEE Management Consoleを利用して、ホストマシン(DEE FS Agentが導入されているマシン)上のディレクトリに対して適用できます。オンライン・ポリシーを適用したディレクトリのことをガード・ポイントと言います。ユーザーやプロセスがガード・ポイント下のファイルやサブ・ディレクトリに対してアクセスを試みると、DEE FS Agentに制御が移り、ポリシーに基づいてアクセスの許可・拒否、及びガード・ポイントへの入出力データの暗号化・復号を行います。そのため、アプリケーション自体に変更を加えることなく、そのアプリケーションからガード・ポイント上のファイルへの入出力データを暗号化・復号することが可能です。
オンライン・ポリシーと暗号化キーはDEE Security Server上で管理されており、DEE FS Agent側でそれを取得して利用します。図1と図2はDEE FS AgentがどのようなタイミングでDEE Security Serverからポリシーと、そのポリシーで指定された暗号化キーを取得するかを描いています。ここで、DEE Security ServerとDEE FS Agentの間はX.509証明書を使ったSSL通信が行われるため、DEE FS Agentへの暗号化キーの送信は安全に行われます。
図 1. DEE FS Agentの暗号化キー取得法(ポリシーの適用・変更時)
ポリシーを新たにディレクトリに適用した時、DEE Security ServerはDEE FS Agentに対してオンライン・ポリシーと暗号化キーを送信し、DEE FS Agentはそれらをメモリ上に保持します(図1)。ポリシーはディスク上にも保存されます。これは、ガード・ポイントへ適用されているオンライン・ポリシーに変更を加えた時も同様な動作となります。ガード・ポイントへのアクセス制御を行う場合はメモリ上のポリシーと暗号化キーを利用するため、一旦DEE FS Agentがそれらの情報を受信してしまえば、DEE Security Serverが不具合などで停止してもアクセス制御は問題なく処理されます。
図 2. DEE FS Agentの暗号化キー取得法(DEE FS Agent起動時)
DEE FS Agentはデーモン・プロセスで、マシン起動時に起動され、DEE Security Serverからガード中のポリシーと暗号化キーをダウンロードしてメモリ上に保持します(図2)。この時に、不具合などによりDEE Security Serverとの通信ができない場合、DEE FS Agentはポリシーと暗号化キーのダウンロードに失敗しますが、一定時間(5秒)おきにリトライを繰り返します。この間にプロセスがガード・ポイントにアクセスすると、ディスク上に保存されているポリシーを利用してアクセス制御が行われますが、暗号化を行う場合は暗号化キーがメモリ上に無いため、そのプロセスはフリーズします。これは後述するCached on Hostタイプの暗号化キーを利用することにより、DEE Security Serverが停止したままでも処理を再開することができます。
DEE FS Agentは、ポリシーや暗号化キーのダウンロードなどのDEE Security Serverとの通信をつかさどるvmdプロセスと、ポリシーや暗号化キーの保持、暗号化・復号、アクセス制御をつかさどるsecfsdプロセスから構成されますが、本稿では特にこれらを区別せず、DEE FS Agentとしての機能や利用法を紹介します。
暗号化キーの作成
DEE Management Consoleのメニューから、”Keys”->“Add”と選択すると、図3のような暗号化キー(対称キー)作成画面が表示されます。この画面を用いて対称キーを作成することができます。
図 3. 対称キー(Symmetric Key)作成画面
DEE FS Agentがサポートする暗号化方式は”3DES”, “AES128”, “AES256”の3つです。暗号アルゴリズムの強度の観点から、3DESよりもAESを利用することをお勧めします。
Key Typeコンボ・ボックスでは、”Stored on Server”と”Cached on Host”が選択でき、Unique to Hostチェック・ボックスはKey Typeで”Cached on Host”を選択したときのみ表示されます。対称キー作成時に、Key TypeとUnique to Hostを編集することで、表1のように3通りの暗号化キーの利用法を指定できます。
表 1. 3つの暗号化キーの利用法の特徴
| Stored on Server | 同じ暗号化キーで暗号化されたデータは、その暗号化キーを利用している他の全てのホスト上で復号可能です。そのため、暗号化したデータを別のホストへ移動し、そこで復号して利用することが可能です。 | | Cached on Host |
- 暗号化キーはメモリ上にキャッシュされて利用されると共に、暗号化キーをHost Passwordで暗号化した状態でディスク上にも保持します。
- 図2のDEE FS Agent起動時に暗号化キーが取得できず、プロセスがフリーズした場合、DEE FS Agent上で”vmsec passwd”コマンドを実行し、Host Passwordを入力することでディスク上に保持している暗号化キーを復号して利用することができます。このコマンドを実行することで、フリーズしていたプロセスも動作が再開されます。”vmsec passwd”コマンドに関してはリスト1を参照ください。
- Stored on Serverと同様、同じ暗号化キーで暗号化したデータを別のホスト上で復号して利用できます。
| | Cached on Host + Unique to Host | 暗号化キーを各ホストマシンにユニークに作成するため、暗号化したデータはそのホスト上でしか利用できません。このタイプの暗号化キーはクラスター環境や、ミラーリング環境などでは利用できないことに注意してください。 |
リスト 1. vmsecを使ったHost Passwordの入力(rootユーザーで実行)
# vmsec passwd
Please enter password: <--ここでHost Passwordを入力します
OK passwd
#
|
図3の対称キー作成画面のKey Creation Methodでは”Generate”と”Manual Input”が選択可能です。”Manual Input”を選択した場合、暗号アルゴリズムに従って、3DESの場合は16進数で48文字(192bit)、AES128の場合は16進数で32文字(128bit)、AES256の場合は16進数で64文字(256bit)という風にそれぞれのアルゴリズムのキー長に合わせた文字を入力します。これにより、他のアプリケーションで利用していた暗号化キーと同じものを利用しての暗号化・復号が可能になります。
オンライン・ポリシーを使ったアクセス制御・暗号化ルールの設定
オンライン・ポリシーの定義には、Policy Composerを利用します。Policy ComposerはDEE Management Consoleのインターフェースから起動できるJava アプレットです。Policy Composerを起動するにはDEE Management Consoleのメニューから”Policies”->“Add Online Policy”と選択します。
図 4. Policy Composer画面
オンライン・ポリシーはSecurity RulesとふたつのKey Rulesからなります。Key RulesにはKey Selection RulesとData Transformation Rulesがあり、Policy Composer画面の上部にはそれぞれのルールを定義するためのタブがあります。
Security Rules
Security Rulesタブではどういったアクセスに対して、何を行うかといった項目に優先順位をつけて複数設定することができます。具体的には以下の6つの項目に対して設定を行えます。
表 2. Security Ruleの設定項目
| Resource (オプション) | 作成したポリシーはガード・ポイント(ディレクトリ)に適用されますが、ここではルールを適用するガード・ポイント以下のリソース(ファイル・ディレクトリ)をきめ細かく指定することができます。リソースの指定には”*”や”?”といったワイルドカード表記や、|uname|や|gname|などのいくつかの変数を利用可能です。これらの変数の利用法はUser's Guideの9章「Creating and editing File System Agent policies」を参照ください。 | | User (オプション) | ガード・ポイント下のリソース(ファイル・ディレクトリ)にアクセスするユーザーを指定します。ユーザー名の他、ユーザーIDやグループIDなどを使った指定も可能です。 | | Process (オプション) | ガード・ポイント下のリソースにアクセスするプロセスを指定します。 | | When (オプション) | 曜日・日付・時間の枠を指定します。 | | Action (オプション) | アクションを指定します。例としては
f_cre: ファイルの新規作成
d_rmdir: ディレクトリの削除
read: 読み込み
write: 書き込み
key_op: キー•オペレーション(後述)
all_ops: 全てのオペレーション
など23個のアクションが定義されています。
この項目に何も指定しない場合、all_opsがデフォルトで選択されます。 | | Effect (必須) | ルールの効果を指定します。指定可能な効果は以下の4つです
deny: アクセスを拒否します
permit: アクセスを許可します
apply_key: ガード•ポイント内のデータに対して、キー選択ルールで指定した鍵を使った暗号化や復号を行います。
audit:ログを出力します
このうち、denyとpermitが排他になっています。 |
ここで、Effectのauditをルールに付加しなければ、ポリシーを評価した際のログがDEE FS AgentからDEE Security Serverに送信されず、DEE Management ConsoleのLog画面に出力されないことに注意してください。例えば、ポリシーで拒否されたユーザーがガード・ポイントにアクセスした場合、ポリシーによる評価が行われたことをログで確認するためには、Effectにauditを付加していなければいけません。また許可されたユーザーによるアクセスをログに出力する為には、さらに該当ホストのFS LogのPolicy Evaluationタイプのログレベルを、デフォルトの”ERROR”から”INFO”に変更する必要があります。ただし許可ユーザーによるアクセスまでもログしてしまうと、ログを蓄積する容量が増え続けてしまう為、運用前の動作確認をするなど、必要に応じて設定することをお勧めします。
後述の図8、図11はそれぞれユーザーアクセスがポリシーによって許可・拒否されたケースのログを示しています。
表2のResource、User、Processの項目には複数の指定が可能で、それらをまとめたSet(例えばUserであれば、複数のユーザーをまとめた”team_member”という名前のUser Set)を一つのSecurity Rule内の属性に定義して使用します。
また、Security Ruleの属性のうちEffectのみが必須となっていますが、それ以外の項目に空欄をセットした場合は全て該当するという意味になります。例えばUserが空欄であれば、ガード・ポイントに対するユーザーのアクセス制御は行われません。
図4の上部にある”Security Rule定義域”で設定したルールは”Security Rule編集ボタン”のAddボタンにより、”Security Rule登録リスト”に追加されます。図中の”Security Rule登録リスト”が示すように、複数のSecurity Ruleが設定可能で、上から順に評価されていきます。
Key Selection Rules
Key Selection Rulesでは、暗号化のための対称キーを指定します。以下の2つの項目に対して設定を行えます。
表 3. Key Selection Ruleの設定項目
| Resource(オプション) | Security RulesのResourceと同様に、ファイルやディレクトリを指定します。指定したリソースに対して、Keyで指定した暗号化キーを利用して暗号化や復号を行います。 | | Key(必須) | 作成済みの対称キー(Symmetric Key)を指定します。デフォルトで存在する”clear_key”は暗号化を行わないキーで、後述する”dataxformによるキー変換”で使用します。 |
Key Selection Rulesの設定はオプションであり、Security RulesのEffectでapply_keyを定義しても、ここのKeyで暗号化キーを登録しなければデータは暗号化されません。暗号化が必要な場合は必ず暗号化キーを指定してください。
Data Transformation Rules
Data Transformation Rulesはdataxformを使った暗号化キーの変換を行う際に使用されます。Data Transformation RulesではKey Selection Rulesと同じくResourceとKeyの指定が可能です。詳しくは後述の”dataxformによる暗号化キー変換”で述べます。
オンライン・ポリシーの適用(ガード)
定義したオンライン・ポリシーはDEE Management Console上のGuard File System画面(図5)を利用して、ディレクトリに対して適用することができます。オンライン・ポリシーをディレクトリに適用することをガードといいます。Guard File System画面はDEE Management Consoleのメニューから”Hosts”->(ガードを行いたいホストを選択)->“Guard FS”->“Guard”を選択して表示します。
図 5. Guard File System画面
正常にガードが適用された場合、ログレベルを”INFO”にしていれば、DEE Management ConsoleのLog画面に、ガードに成功したという内容のログが出力されます(図6)。ここでsrv1.yamato.ibm.comはDEE Security Serverのホスト名を、host1.yamato.ibm.comはDEE FS Agentのホスト名を示しています。
図 6. ガード成功時のログ
ガードの効果
ガード・ポイントにアクセス許可されたユーザーでアクセスし、ガード・ポイント上のリソースに対してread/writeなどのアクションを行った場合、アクセスが許可された旨がDEE Management ConsoleのLog画面に出力されます(許可ユーザーによるアクセスをログに出力するには前述のように、Security RulesのEffectでauditを付加し、ログレベルを”INFO”に設定する必要があります)が、実際にアクセスしている端末画面には何も追加メッセージは表示されません。つまり、ガードしていない状態と全く同じようにガード・ポイント上のリソースを利用することが可能です。アプリケーションからガード・ポイント上のリソースを利用する場合も同様に、アプリケーション側で暗号化処理を考慮した処理は必要ありません。
図7はガード・ポイント “/home/v95inst1/guard”に対して、アクセス許可されたユーザー v95inst1 でアクセスし、ガード・ポイント上の暗号化されたファイルを、readしている様子です。ここで、readの際にデータを復号するようにポリシーを設定しています。
図 7. 許可されたユーザーによるガード•ポイントへのアクセス
この時、図4のPolicy Composer画面で設定しているポリシーのように、”permit”ケースのSecurity RuleのEffectに”audit”を設定してあり、かつログレベルを”INFO”に設定してある場合、DEE Management ConsoleのLog画面のMessageには、Policy “sample_policy1”によってユーザー”v95inst1”がリソース“/home/v95inst1/guard/customer.del”に対して行った操作”/bin/cat”が許可“PERMIT”された旨が表示されます(図8)。図中の表の3列目のSeverityにある”I”はログレベルINFOを示しています。
図 8. ポリシーによってアクセスが許可された時のログ
リソースのreadは許可されているが、復号が行われないようにポリシーを設定していた場合は、図9のようにデータの中身を参照することはできても、データは暗号化されたままの状態で表示されます。
図 9. 暗号データの復号が許可されていないユーザーによるガード•ポイントへのアクセス
ポリシーでアクセス拒否されたユーザーでガード・ポイントへアクセスした場合はPermissionエラーが発生します。図10はアクセス拒否されているユーザー v95inst2 でガード・ポイントへアクセスしている様子です。このケースでは、OSで設定したガード・ポイントのディレクトリパーミッションは755で、v95inst2によるreadを許可していますが、DEEがポリシーに従ってアクセスを拒否しています。
図 10. アクセスを拒否されているユーザーによるガード・ポイントへのアクセス
この時、図4のPolicy Composer画面で設定しているポリシーのように、”deny”ケースのSecurity RuleのEffectに”audit”を設定してある場合、DEE Management ConsoleのLog画面にはPolicy “sample_policy1”によってユーザー”v95inst2”の操作”/bin/ls”が拒否された旨が表示されます(図 11)。図中の表の3列目のSeverityにある”E”はログレベルERRORを示しています。
図 11. ポリシーによってアクセスが拒否された時のログ
Host Settingsによるアクセス制御
第1回でも少し触れましたが、オンライン・ポリシーで指定したSecurity Ruleの属性を基にしたアクセス制御を行う場合、オンライン・ポリシーの他にHost Settingsを設定する必要があります。Host Settingsではどのログイン方法を正規な方法として認めるか、どのプロセスをログイン方法に関わらず認めるかといった設定が行えます。例えばオンライン・ポリシーのSecurity RuleのUserで指定された許可ユーザーであってもHost Settingsの設定が正しくなされていなければ、ガード・ポイント上のリソースに対するアクセスが拒否されます。
Host Settingsの設定
DEE Management Consoleにホストを登録後 “Hosts”->(ホストを選択)->“Host Settings”を開くと、いくつかのログイン用のプロセスがリストされています。
リスト 2. Host Settingsに定義してあるプロセス(UNIX)
/usr/bin/login
/usr/bin/su
/usr/sbin/sshd
/usr/sbin/ftpd
/usr/dt/bin/dtlogin
|
Host Settingsの設定は、これらリストされたプロセスの先頭にキーワードを付加することで行います。プロセスを追加して記述することもできます。キーワードの種類や効果はUNIXとWindowsとで異なります。本稿ではUNIXを取り上げて紹介します。Windowsに関しては参考文献にあるUser's Guideの6章「Configuring hosts」を参照ください。
UNIXではDEE FS Agentはデフォルトで、telnetやsshなどいかなる方法でログインしても、オンライン・ポリシーで明示的に許可されたユーザーや、許可されたプロセスからのガード・ポイントへのアクセスを拒否し、”User Not Authenticated”や”FAKED USER”というようなエラーをログに出力するようになっています(図12)。オンライン・ポリシーで許可されたユーザーでログインしている場合は”User Not Authenticated”というエラー、suコマンドを使って許可ユーザーになりすましている場合は”FAKED USER”というエラーが出力されます。
オンライン・ポリシーで特定の許可ユーザーを指定しないで全てのユーザーのアクセスを許可している場合はHost Settingsの設定はユーザーのアクセスに影響を与えませんが、”User Not Authenticated”はユーザーのアクセスが許可された場合であってもログに出力されます。
図 12. Host Settingsにより許可ユーザーのアクセスが拒否されたログ
アクセスを許可するためには、以下のようなキーワードをHost Settings内の各プロセスの先頭に書く必要があります。本稿ではUNIXで定義可能なキーワードを記述(表4)します。Windowsではexempt、lockというキーワードが定義可能です。
表 4. Host Settingsのキーワード (UNIX)
| Key Word | 説明 |
|---|
| |authenticator| | ログイン用のプロセスに対して付加できます。 このキーワードを付加したログイン用プロセスでログインしたユーザーが起動したプロセスによるガード・ポイントへのアクセスを許可します。 | | |trust| | このキーワードを付加したプロセスによるガード・ポイントへのアクセスを許可します。ただし、そのプロセスから発生した子プロセスは許可しません。 これは、例えばログインしたユーザーが起動するプロセスではなく、例えばcronのようなシステムから起動されるようなプロセスに対して付加します。 | | |trustfrom| | 付加対象は|trust|と同じですが、|trustfrom|はキーワードを付加したプロセスから発生した子プロセスによるガード・ポイントへのアクセスも許可します。 |
例えば、telnetとsshによるログインを行うユーザーを認める場合、リスト3のようにキーワードを付加します。
リスト 3. telnet, sshを許可するHost Settings例 (UNIX)
|authenticator|/usr/bin/login
/usr/bin/su
|authenticator|/usr/sbin/sshd
/usr/sbin/ftpd
/usr/dt/bin/dtlogin
|
次に|trust|と|trustfrom|の違いを例に挙げます。例えば、バージョン9.5以前のDB2®のSystem Controllerプロセス(db2sysc)は多くの子プロセスを持つDB2の主要なプロセスですが、db2syscプロセスに対して|trust|を付加しても、その子プロセスはガード・ポイントへのアクセスを許可されず、ガード・ポイント上のDB2データベースに対して処理を行う場合、多くの子プロセスがUser Not Authenticatedエラーでアクセス拒否されます。このような場合、拒否された子プロセス全てに|trust|を付加するのではなく、db2syscプロセスに対して|trustfrom|を付加することで、その子プロセス全てのアクセスを許可することができます。(DB2 バージョン9.5以降、多くの子プロセスはdb2syscに統合されました。)
dataxformによる暗号化キー変換
dataxformはガード・ポイント上の暗号データに適用された暗号化キーを変換するためのユーティリティです。以下のような要件に答えます。
- 暗号化によってデータの保護を行う場合、セキュリティを維持するために定期的に暗号化キーを変更する必要がある。それに伴い、古い暗号化キーで暗号化したデータを、新しい暗号化キーで暗号化したデータへ変換する必要がある。
- 暗号化をやめたい場合、暗号化したデータを復号する必要がある。
- ガードを行う際、ガード・ポイントに暗号化を適用する前からガード対象となるディレクトリ上にあったデータを暗号化する必要がある。
dataxformではファイル・システムのガードと同様に、dataxform用のオンライン・ポリシーを作成し、暗号化適用のルールを設定しますが、通常のファイル・システムのガードに用いるオンライン・ポリシーの作成とは以下の3点が異なります。
- Security RulesのActionに”key_op”を指定する。
- Key Selection Rulesに変換前の暗号化キーを指定する。
- Data Transformation Rulesに変換後の暗号化キーを指定する。
暗号化を行わないキーとしては”clear_key”が提供されています。表5は暗号化キーの選択パターンの例を表しています。”key_A”と”key_B”はテスト用に作成した暗号化キーとします。
表 5. dataxformでの暗号化キー選択パターン例
| パターン | Key Selection Rulesで指定するkey | Data Transformation Rulesで指定するkey |
|---|
パターン 1:
暗号化していないファイルを
key_Bにより暗号化したファイルに変換する
| clear_key | key_B | パターン 2:
Key_Aにより暗号化したファイルを
key_Bにより暗号化したファイルに変換する
| key_A | key_B | パターン 3:
key_Aにより暗号化したファイルを
暗号化していないファイルに変換する
| key_A | clear_key |
dataxformを実行する方法として、コマンドを発行して実行する方法と自動で実行する方法の2つがあります。以降それぞれの方法を解説していますが、いずれの場合もdataxform実行の前に、今までのオンライン・ポリシーのアンガードが、実行後に新しいオンライン・ポリシーのガードが必要になります。
コマンドを発行してdataxformを実行する方法
1. dataxform用のオンライン・ポリシーで、変換を実施したいディレクトリをガードします。
2. rootユーザーでdataxformコマンドを発行します。リスト4を参照してください。ここで、“/home/v95inst1/dxdir”はガード・ポイントのパスです。結果は/var/log/eet/eetdxf_root.logファイルでも参照可能です(リスト 5)
リスト 4. dataxformコマンドによるキー変換
# dataxform --rekey --gp /home/v95inst1/dxdir
Attempting to contact the server in order to obtain setup information...
Successfully contacted server.
Checking if data transform is supported for guard point /home/v95inst1/dxdir.
Data transformation is supported on /home/v95inst1/dxdir
About to perform the requested data transform operation.
-- Be sure to back up your data.
-- Please do not access files in the guard point during the transform process.
-- Please do not attempt to terminate the application
Do you wish to continue (y/n)?y
Starting data transform of /home/v95inst1/dxdir.
(中略)
Found internal file /home/v95inst1/dxdir/dataxform_auto_lock
Starting data transform of /home/v95inst1/dxdir/sample.txt.
Finished data transform of /home/v95inst1/dxdir/sample.txt.
Transformed 2 files (50 bytes) of 2 files (5 bytes) for guard point /home/v95inst1/dxdir.
Data transform for guard point /home/v95inst1/dxdir complete.
#
|
リスト 5. /var/log/eet/eetdxf_root.logファイルのdataxform実行ログ(最後の2行のみ)
2009-01-14 23:06:50.198 [VMD] [INFO ] [27636] [EET4380I] Transformed 3
files (95 bytes) of 3 files (50 bytes) for guard point /home/v95inst1/dxdir.
2009-01-14 23:06:51.197 [VMD] [INFO ] [27636] [EET4361I] Data transform for guard point
/home/v95inst1/dxdir complete.
|
3. dataxform用のオンライン•ポリシーをアンガードします。
自動でdataxformを実行する方法
1. 変換を実施したいディレクトリ上にリスト6のようなdataxform用の設定ファイル(dataxform_auto_config)を作成します。dataxform_auto_configファイルの作成は、今までのオンライン・ポリシーをアンガードした後に行ってください。dataxform_auto_configの中身が暗号化されてしまうと、自動でdataxformを実行することができなくなります。
リスト 6. dataxform_auto_configファイル
version=1
--thd 4 --preserve_modified_time
|
2. dataxform用のオンライン•ポリシーで、変換を実施したいディレクトリをガードします。
3. ガード適用後、dataxformが自動で実行されます。結果はDEE Management ConsoleのLog、及び/var/log/eet/eetdxf_root.log(リスト5と同様)で確認可能です。このとき、DEE FS Agentがガード・ポイント上にdataxform_auto_configファイルを見つけられない場合、一定時間(10秒)おきにリトライされます。この状態は、コマンドを発行してdataxformを実行する方法のステップ1も同じです。
図 13. dataxform成功時のDEE Management Consoleログ
4. dataxform用のオンライン•ポリシーをアンガードします。
dataxformの後処理
dataxform実行後、ガード•ポイント上にはdataxform_auto_lockというファイルが、またAgentのlogディレクトリ(UNIXの場合は/var/log/eet/、Windowsの場合は\Documents and Settings\All Users\Application Data\IBM\DBTOOLS\LUWEncryptionExpert\Agent\log)の下にdataxform_statusファイルが生成されます。これらはdataxform実行中・実行後の状態を記録し、同一ディレクトリに対してdataxformが多重に実行されるのを防ぐためのファイルですが、一度dataxformを行ったガード•ポイントに対して、再度異なるルールでdataxformを実行する場合はこれらのファイルを削除する必要があります。リスト 7はdataxformコマンドを使ったファイルの削除方法です。コマンドを発行してdataxformを実行する場合と同じく、rootユーザーでコマンドを発行します。
リスト 7. dataxformによるcleanup
#dataxform --cleanup --gp /home/v95inst1/dxdir
|
DEE FS Agentの利用シナリオ例
シナリオ1. rootによる成りすまし防止
個人情報や機密データなどを安全に保つ為には外部からの攻撃者からの脅威に備えるだけではなく、データにアクセスする必要の無いユーザーによるデータアクセスを防ぐ必要があります。例えば、UNIXのシステムにおいて、システムの管理者(rootユーザー)とデータベースの管理者とが分かれている場合、DEEを利用することでrootユーザーによるデータの参照を防ぐ仕組みを実現できます。
DEEのオンライン•ポリシーを設定し、ガードすることでrootユーザーによるアクセスも拒否することができるようになります。しかしそれだけでは、rootユーザーがsuコマンドを利用して、アクセスが許可されているユーザーに成りすますことで、ガード・ポイントへアクセスすることができてしまいます。このようなrootユーザーによる成りすましを防止する方法としてHost Settingsの利用が考えられます。
UNIXにおいて、Host Settingsは、オンライン•ポリシーのUser Setを指定している場合、許可ユーザーがどのようなプロセスでガード・ポイントへアクセスすることができるかを設定できます。この場合はリスト8のように、ログイン・プロセスに対しては|authenticator|を付加することで許可し、suプロセス、つまり”/usr/bin/su”には|authenticator|を先頭に付加しないことで、suプロセスでログインしたユーザーのアクセスを拒否する設定になり、結果的にrootからsuを使って許可ユーザーになってからガード・ポイントにアクセスしても”FAKED USER”エラーが発生してアクセスが拒否されるように設定できます。プロセスの行頭に何も付加しない場合、そのプロセスに対するHost Settingsによるアクセス制御のデフォルトの振る舞いがアクセス拒否であることに注意してください。
リスト 8. suによる成りすましを防ぐHost Settings
|authenticator|/usr/bin/login
/usr/bin/su
|authenticator|/usr/sbin/sshd
|authenticator|/usr/sbin/ftpd
|authenticator|/usr/dt/bin/dtlogin
|
シナリオ2. オフライン・アーカイブ暗号化
情報ライフサイクル管理(Information Lifecycle Management)の一環として、古くなって参照・更新されなくなったデータをデータベースから削除したいが、監査目的で保管する必要があるため、アーカイブして残していくというケースがあります。中でもテープ装置などへデータを保管するオフライン・アーカイブはよく用いられますが、アーカイブしたデータのセキュリティを確保するための一つの方法として、データを暗号化してアーカイブすることが考えられます。ここではDEEを利用したオフライン•アーカイブ暗号化のシナリオを紹介します。図14は本シナリオの構成をあらわしています。
図 14. オフライン・アーカイブ暗号化のシナリオ
- データベース管理者が、アーカイブ製品のアーカイブ処理機能を利用するなどしてデータを取り出し、そのデータを一旦DEE FS Agentのガード・ポイント上におきます。これを「オンライン・アーカイブデータ」とします。オンライン・アーカイブデータは、ガード・ポイント上に書き込まれる際にガード・ポイントに適用されたオンライン・ポリシーに従い、暗号化されます。
- アーカイブデータの利用者が直接、あるいはアーカイブ製品のアーカイブ参照機能を利用してオンライン・アーカイブデータを参照しようとすると、ポリシーに従ってデータは復号され、ユーザーは正常にデータの中身を見ることができ、利用することができます。
- データベース管理者が、テープ装置への保存機能を利用するなどして、オンライン・アーカイブデータをオフライン・アーカイブデータとして保管する際、ガード・ポイント上から取り出したデータは復号されず、暗号化された状態のまま保存されます。
- データベース管理者が、テープ装置からの復元機能を利用するなどして、オフライン•アーカイブデータをオンラインに戻す場合は、テープに暗号化されて保存されている暗号化されたデータをそのままガード・ポイントへコピーします。
- データベース管理者が、アーカイブ製品のインポート機能を利用するなどして、オンライン・アーカイブデータをデータベースに復元する場合、ガード・ポイントから取り出されたデータは復号され、データベースに戻されます。
以上のように、ガード・ポイント上にアクセスしたプロセスによって暗号化・復号をしたり・しなかったりというような設定は、ポリシーのSecurity Rulesを複数定義することで実現可能です。このシナリオでは例えば以下のように4つのSecurity Ruleを定義したオンライン・ポリシーを作成することが考えられます。
表 6. Security Ruleの定義パターン
| Rule No. | User | Process | Action | Effect | 備考 |
|---|
| 1 | (データベースの管理ユーザー) | (アーカイブ・インポート処理プロセス) | all_ops | permit apply_key | 上記 1, 5 | | 2 | (アーカイブデータの利用者) | (アーカイブ参照プロセス) | read | permit apply_key | 上記 2 参照のみ可能とする為、Actionは”read”のみ指定する。 | | 3 | (データベースの管理ユーザー) | (テープへの保存・復元プロセス) | all_ops | permit | 上記 3,4 ここでは暗号化•復号を行わない為、”apply_key”は指定しない。 | | 4 | | | all_ops | deny audit | 上記以外の全てのユーザーによるアクセスを拒否する。拒否されたアクセスは監査のためログに残す。 |
まとめ
第3回では、DEE FS Agentによるアクセス制御と暗号化によるオンライン・データの保護機能について解説しました。これによりデータベース内のデータやデータベースの設定ファイル、ログファイル、エキスポート・アーカイブファイルなどに対してOSの機能を超えたアクセス制限を実現し、またデータを暗号化して保存しておくことで、データの安全を確保することが可能になります。
参考文献
著者について  | |  | 中嶋 剛は、ソフトウェア開発研究所のIM&Lotus開発に所属するソフトウェアエンジニアで、現在は主にデータベースツール製品の開発やテストに従事しています。 |
 | |  | 大川 昌弘は、ソフトウェア開発研究所のIM&Lotus開発に所属するソフトウェアエンジニアで、現在は主にデータベースツール製品の開発やテストを行っています。 |
 | |  | 貝嶋 創は、ソフトウェア開発研究所のIM&Lotus開発に所属するソフトウェアエンジニアで、現在は主にデータベースツール製品の開発やテストを行っています。 |
記事の評価
|