Advanced SecurityによるOracle テーブル暗号化の手順
データベース上のデータについて、HW筐体からディスク装置を抜かれたケースでの悪用に関するセキュリティについて考える必要があり、Advanced Securityを利用することになりました。
暗号化用の準備(ウォレット作成)、暗号化したテーブルの作成、実際にテーブルのデータが暗号化されたことを確認するところまでの手順を記載します。
1 暗号化用の設定を実施
mkdirコマンドを実施しないと「ORA-28368: ウォレットを自動作成できません」というエラーが出力される
++-----
mkdir -p ${ORACLE_BASE}/admin/インスタンス名/wallet
sqlplus / as sysdba
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "任意のパスワード値";
2 暗号化用鍵ファイルの表示(OPEN状態でFILEが存在していればOK)
++-----
SQL> SELECT STATUS,WRL_TYPE,WRL_PARAMETER FROM v$encryption_wallet ;
3 自動ログイン(データベース起動時に自動で暗号化用鍵を読み込む)設定
これをやらないと、DB再起動などによってウォレットがクローズした後でALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";などで手動によるウォレットオープンが必要
++-----
orapki wallet create -wallet ${ORACLE_BASE}/admin/インスタンス名/wallete/ewallet.p12 -auto_login
ウォレット・パスワードを入力してください:※鍵のパスワードを指定
なお、マニュアルによってはsqlnet.oraファイル編集が必須であるような
記載があるが、sqlnet.oraファイルを修正することでwalletのパスが変えることが
できるだけっぽい。sqlnet.ora修正しないと${ORACLE_BASE}/admin/インスタンス名/walletになるぽい。だからマルチインスタンス環境とかだとデフォルトの方が良いと思われる。