19.20.1 DBエリア暗号化機能の環境設定をする場合
DBエリア暗号化機能の環境設定をする際の留意事項を説明します。
- 〈この項の構成〉
(1) HADB暗号鍵ファイルの保存先ディレクトリの作成
HADB暗号鍵ファイルの保存先ディレクトリは,実行系と待機系の両方に作成してください。HADB暗号鍵ファイルの保存先ディレクトリの作成方法については,「13.1.1 HADBサーバを新規導入する場合」の「(2) HADB暗号鍵ファイルの保存先ディレクトリの作成」を参照してください。
(2) 待機系へのHADB暗号鍵ファイルの配布
実行系でadbinitコマンドを実行した際に作成されるHADB暗号鍵ファイルを待機系に配布し,パーミッションを設定してください。
- <ここの操作説明の前提条件>
-
-
HADB暗号鍵ファイルの保存先ディレクトリとして,/HADB/.cryptoが作成されている。
-
HADB暗号鍵ファイルとして,adb_dmkeyが作成されている。
-
手順
-
実行系で作成したHADB暗号鍵ファイルを待機系に配布する
待機系に作成したHADB暗号鍵ファイルの保存先ディレクトリ下にHADB暗号鍵ファイルを保存してください。
この操作は,HADB管理者で実行してください。
-
待機系に配布したHADB暗号鍵ファイルのパーミッションを設定する
1.で保存したHADB暗号鍵ファイルのパーミッションを400に設定してください。
次のコマンドをHADB管理者で実行してください。
chmod 400 /HADB/.crypto/adb_dmkey
-
待機系のサーバ定義を変更する
待機系のサーバ定義にadb_crypto_dmkey_pathオペランドを指定してください。
- メモ
-
配布作業はユーザが責任を持って実施してください。待機系にHADB暗号鍵ファイルを配布しなかったり,上記のオペランドを指定しなかったりした場合は,系切り替えがエラーになります。
(3) HADB暗号鍵利用パスワードファイルの作成
コールドスタンバイ構成でDBエリア暗号化機能を使用する場合,実行系と待機系でHADB暗号鍵利用パスワードを記入したHADB暗号鍵利用パスワードファイルを作成し,作成したHADB暗号鍵利用パスワードファイルを公開鍵で暗号化してください。手順を次に示します。
- <ここの操作説明の前提条件>
-
HADB暗号鍵ファイルの保存先ディレクトリとして,/HADB/.cryptoが作成されている。
手順
次のすべての操作は,HADB管理者で実行してください。
-
HADB暗号鍵利用パスワードファイルを作成する
テキストエディタを開いてHADB暗号鍵利用パスワードを入力し,HADB暗号鍵ファイルの保存先ディレクトリ下にファイルを保存してください。このファイルが,HADB暗号鍵利用パスワードファイルになります。
ここでは,HADB暗号鍵利用パスワードファイルとして,/HADB/.crypto/passwdfileを作成したとします。
- メモ
-
-
HADB暗号鍵利用パスワードファイルには,HADB暗号鍵利用パスワード以外の文字列を入力しないでください。
-
HADB暗号鍵利用パスワードファイルには,任意のファイル名を指定できます。passwdfile以外でもかまいません。
-
-
秘密鍵ファイルを作成する
OpenSSLのコマンドを実行して,HADB暗号鍵ファイルの保存先ディレクトリ下に秘密鍵ファイルprivate.keyを作成してください。
openssl genrsa -out /HADB/.crypto/private.key 4096
上記のコマンドを実行すると,RSA暗号方式の鍵長4,096ビットの秘密鍵ファイル/HADB/.crypto/private.keyが作成されます。
- メモ
-
-
秘密鍵ファイルには,任意のファイル名を指定できます。private.key以外でもかまいません。
-
鍵長は4,096ビットにしてください。
-
秘密鍵ファイルには,パスフレーズを設定しないでください。
-
OpenSSLのコマンドの詳細については,OpenSSLのドキュメントを参照してください。
-
秘密鍵ファイルに対する読み取り権限をHADB管理者にだけ設定する
chmod 400 /HADB/.crypto/private.key
-
公開鍵ファイルを作成する
OpenSSLのコマンドを実行して,公開鍵ファイルpublic.keyを作成してください。
openssl rsa -pubout -in /HADB/.crypto/private.key -out /HADB/public.key
上記のコマンドを実行すると,秘密鍵ファイル(/HADB/.crypto/private.key)に対応した公開鍵ファイル(/HADB/public.key)が作成されます。
- メモ
-
-
2.で作成した秘密鍵ファイルを指定してください。
-
公開鍵ファイルには,任意のファイル名を指定できます。/HADB/public.key以外でもかまいません。
-
-
HADB暗号鍵利用パスワードファイルを暗号化する
OpenSSLのコマンドを実行して,HADB暗号鍵利用パスワードファイルを暗号化してください。
openssl rsautl -encrypt -pubin -inkey /HADB/public.key -in /HADB/.crypto/passwdfile -out /HADB/.crypto/encrypted_passwdfile
上記のコマンドを実行すると,公開鍵ファイル(/HADB/public.key)でHADB暗号鍵利用パスワードファイル(/HADB/.crypto/passwdfile)が暗号化されます。また,暗号化されたHADB暗号鍵利用パスワードファイルとして,/HADB/.crypto/encrypted_passwdfileが作成されます。
- メモ
-
-
4.で作成した公開鍵ファイルを指定してください。
-
暗号化されたHADB暗号鍵利用パスワードファイルには,任意のファイル名を指定できます。encrypted_passwdfile以外でもかまいません。
-
-
暗号化されたHADB暗号鍵利用パスワードファイルに対する読み取り権限をHADB管理者にだけ設定する
chmod 400 /HADB/.crypto/encrypted_passwdfile
-
HADB暗号鍵利用パスワードファイルを削除する
HADB暗号鍵利用パスワードの漏えいを防ぐために,HADB暗号鍵利用パスワードファイル(/HADB/.crypto/passwdfile)をすぐに削除してください。
- メモ
-
-
HAモニタのserversファイルのactcommandオペランドに指定する,サーバの起動コマンドから参照できるように,HADBサーバの開始時に指定するHADB暗号鍵利用パスワードを記入したHADB暗号鍵利用パスワードファイルを事前に作成しておく必要があります。
-
HADB暗号鍵利用パスワードが漏えいしないように,HADB暗号鍵利用パスワードファイルに適切なパーミッションを設定し,HADB暗号鍵利用パスワードファイルを暗号化する必要があります。
-
(4) コマンド用環境変数定義の修正
コマンド用環境変数定義に次の環境変数を追加してください。コマンド用環境変数定義については,「19.3.4 HAモニタの環境設定」の「(4) コマンド用環境変数定義およびコマンドの作成」の「(a) コマンド用環境変数定義の作成」を参照してください。
-
環境変数ADBCRYPTOFILE
「(3) HADB暗号鍵利用パスワードファイルの作成」で暗号化したHADB暗号鍵利用パスワードファイルの絶対パスを指定してください。
-
環境変数ADBPRIVKEY
「(3) HADB暗号鍵利用パスワードファイルの作成」で作成した秘密鍵ファイルの絶対パスを指定してください。
<コマンド用環境変数定義の修正例>
#!/bin/sh # The environment variables for HADB export ADBMGR=adbmanager export ADBDIR=/HADB/server export ADBINFODIR=/HADB/adbinfo export ADBCRYPTOFILE=/HADB/.crypto/encrypted_passwdfile ...1 export ADBPRIVKEY=/HADB/.crypto/private.key ...2
[説明]
上記の下線部分を追加してください。
-
暗号化したHADB暗号鍵利用パスワードファイルの絶対パスを指定してください。
-
暗号化したHADB暗号鍵利用パスワードファイルを復号する際に使用する秘密鍵ファイルの絶対パスを指定してください。
- メモ
-
上記の環境変数を追加しなかった場合,HADBサーバの開始や,系切り替えがエラーになります。
(5) サーバの起動コマンドの修正
サーバの起動コマンドを修正してください。サーバの起動コマンドについては,「19.3.4 HAモニタの環境設定」の「(4) コマンド用環境変数定義およびコマンドの作成」の「(b) サーバの起動コマンドの作成」を参照してください。
<サーバの起動コマンドの修正例>
#!/bin/sh # Sample of the actcommand for HADB STS_ABORT="ABORT" SU=/bin/su ECHO=/bin/echo GREP=/bin/grep AWK=/bin/awk # Setting environment variables for HADB source /HADB/scripts/coldstandby.env ...1 if [ "$ADBCRYPTOFILE" != "" -a "$ADBPRIVKEY" != "" ] then # Decrypt HADB encryption key usage password file DECRYPTED_PASSWD=`openssl rsautl -decrypt -inkey "$ADBPRIVKEY" -in "$ADBCRYPTOFILE"` ...2 GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'` # Execute adbstart command if [ "$GET_STS" != "$STS_ABORT" ] then $SU - $ADBMGR -c "$ECHO $DECRYPTED_PASSWD | '$ADBDIR'/bin/adbstart" else $SU - $ADBMGR -c "$ECHO -e 'y\n'$DECRYPTED_PASSWD | '$ADBDIR'/bin/adbstart" fi # Clear decrypted HADB encryption key password DECRYPTED_PASSWD=$RANDOM else # Execute adbstart command $SU - $ADBMGR -c "$ECHO y | '$ADBDIR'/bin/adbstart" fi # always 0 return exit 0
[説明]
上記の下線部分を追加してください。
-
source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/coldstandby.envを指定します。
-
暗号化されたHADB暗号鍵利用パスワードファイルを秘密鍵で復号し,HADB暗号鍵利用パスワードを取得するための指定です。