13.9.1 データ用DBエリア以外のDBエリアを暗号化している場合
データ用DBエリア以外のDBエリアを暗号化している場合にデータ暗号鍵を更新するには,adbinitコマンドでデータベースを初期設定し直す必要があります。そのため,DBエリア,表,インデクスの再定義や,表へのデータの再インポートなどをする必要があります。手順を以降で説明します。
- 〈この項の構成〉
(1) データベースのバックアップを取得する
データ暗号鍵の更新手順を間違えると,データベースの状態がデータ暗号鍵の更新前とは異なってしまうおそれがあります。そのため,データ暗号鍵を更新する前にデータベースのバックアップを取得してください。バックアップの取得方法については,「13.6 バックアップを取得する場合」を参照してください。
データ暗号鍵の更新手順を間違えた場合,バックアップからデータベースを回復し,データ暗号鍵を再度更新してください。
(2) 全HADBユーザの情報を取得する
全HADBユーザの情報の取得方法については,「17.2.2 全HADBユーザの情報の取得」を参照してください。
- メモ
-
ここで取得した情報は,後ほどの作業で使用します。
(3) adbinitコマンドの初期設定オプションファイルを作成する
adbinitコマンドでデータベースを初期設定し直す必要があるため,現状のDBエリアの構成を反映した初期設定オプションファイル(adbinit.optファイル)を次の手順で作成してください。
- メモ
-
-
現状のDBエリアの構成を反映した初期設定オプションファイルがある場合は,ここで説明する作業を実施する必要はありません。
-
ここで作成した初期設定オプションファイルは,後ほどの作業で使用します。
-
手順
次のすべての操作は,HADB管理者で実行してください。
-
初期設定オプションファイル(adbinit.optファイル)を作成する
作成方法については,「17.2.3 adbinitコマンドの初期設定オプションファイルの作成」を参照してください。
-
adbinit.optファイルを修正する
adbinit.optファイルをエディタで開いてください。
暗号化対象のDBエリアを確認し,初期設定オプションにDBエリアを暗号化するオプションを指定してください。
DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(41) 暗号化対象のDBエリアの一覧を表示する方法」で説明している作業を実施してください。暗号化対象のDBエリアの一覧が表示されます。
<実行結果の例>
DBAREA_ID DBAREA_TYPE DBAREA_NAME ------------ ----------- ------------------------------------------- 2 DICT ADBDIC 3 WORK ADBWRK 4 STBL ADBSTBL 11 DATA NEWAREA1 KFAA96404-I 4 rows were selected.
上記の実行結果から,DICT(ディクショナリ用DBエリア),WORK(作業表用DBエリア),STBL(システム表用DBエリア),DATA(データ用DBエリアNEWAREA1)が暗号化対象のDBエリアであることがわかります。
<修正後のadbinit.optファイルの例>
set adb_init_dic_encrypt = Y ...[a] set adb_init_wrk_encrypt = Y ...[b] set adb_init_stbl_encrypt = Y ...[c] set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey ...[d] : adbinitdbarea -e -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3 \ ...[e] -v "/dev/disk/by-id/wwn-0x60...0400",\ "/dev/disk/by-id/wwn-0x60...0401",\ "/dev/disk/by-id/wwn-0x60...0402"
[説明]
-
ディクショナリ用DBエリアを暗号化するときに指定するオペランドを追加します。
-
作業表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
システム表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
HADB暗号鍵の出力先ファイル名を指定するオペランドを追加します。
-
データ用DBエリアNEWAREA1を暗号化するときに指定する-eオプション(下線部分)を追加します。
-
-
adbinit.optファイルを保存する
- ■マルチノード機能を使用している場合
-
上記の手順で作成したadbinit.optファイルは,プライマリノードで使用するadbinit.optファイルです。
セカンダリノードまたはワーカーノードで使用するadbinit.optファイルは次の手順で作成してください。
手順
-
全セカンダリノードおよび全ワーカーノードに,上記の手順で作成したadbinit.optファイルを配布する
-
セカンダリノードまたはワーカーノードで,1.で配布したadbinit.optファイルをエディタで開く
-
次のコマンドを実行する
echo "\"$(ls -l $DBDIR/ADBWRK | awk '{print $NF}')\""
$DBDIRの部分(下線部分)は,DBディレクトリのパスを指定してください。
-
adb_init_wrk_blk_pathオペランドの指定を修正する
3.のコマンドの実行結果がブロックスペシャルファイルの場合は,実行結果に出力されたファイル名をadb_init_wrk_blk_pathオペランドに指定してください。
ブロックスペシャルファイルではない場合は,adb_init_wrk_blk_pathオペランドを削除してください。
-
adb_init_dbarea_initializeオペランドの指定値をYからNに変更する
-
adbinit.optファイルを保存する
-
全セカンダリノードおよび全ワーカーノードで,2.~6.を実施する
-
- ■クラウドストレージ機能を使用している場合
-
クラウドストレージ機能を使用している場合は,初期設定オプションファイル(adbinit.optファイル)を次の手順で作成してください。
- 手順
-
次のすべての操作は,HADB管理者で実行してください。
-
初期設定オプションファイルの基となるファイルを作成する
echo "set adb_init_wrk_blk_path = \"$(ls -l $DBDIR/ADBWRK \ | awk '{print $NF}')\"" >>adbinit.opt
上記のコマンドを実行すると,カレントディレクトリにadbinit.optファイル(初期設定オプションファイルの基となるファイル)が作成されます。
なお,$DBDIRの部分(下線部分)は,DBディレクトリのパスを指定してください。
-
adbdbstatusコマンドを実行する
adbdbstatusコマンドを実行して,データ用DBエリアの指定に関する情報などを抽出し,adbinit.optファイルに追加します。
adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' \ | sed -e '1i set adb_init_dbarea_initialize = Y' \ -e '/"ADBDIC"/d' \ -e '/"ADBSTBL"/d' \ | sed -r 's/^"(.*)" "(.*)"/adbinitdbarea -n \\"\1\\"/g' \ >>adbinit.opt
上記のコマンドを実行すると,adbinit.optファイルの内容は次のようになります。
<作成されるadbinit.optファイルの例>
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dbarea_initialize = Y adbinitdbarea -n \"DBAREA1\" adbinitdbarea -n \"NEWAREA1\"
-
adbinit.optファイルを修正する(その1)
adbinit.optファイルをエディタで開いて,次の修正をしてください。
-
adb_init_wrk_blk_pathオペランドにブロックスペシャルファイルが指定されていない場合は,このオペランドを削除してください。
-
-
adbinit.optファイルを修正する(その2)
暗号化対象のDBエリアを確認し,初期設定オプションにDBエリアを暗号化するオプションを指定してください。
DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(41) 暗号化対象のDBエリアの一覧を表示する方法」で説明している作業を実施してください。暗号化対象のDBエリアの一覧が表示されます。
<実行結果の例>
DBAREA_ID DBAREA_TYPE DBAREA_NAME ------------ ----------- ------------------------------------------- 2 DICT ADBDIC 3 WORK ADBWRK 4 STBL ADBSTBL 11 DATA NEWAREA1 KFAA96404-I 4 rows were selected.
上記の実行結果から,DICT(ディクショナリ用DBエリア),WORK(作業表用DBエリア),STBL(システム表用DBエリア),DATA(データ用DBエリアNEWAREA1)が暗号化対象のDBエリアであることがわかります。
<修正後のadbinit.optファイルの例>
set adb_init_dbarea_initialize = Y set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dic_encrypt = Y ...[a] set adb_init_wrk_encrypt = Y ...[b] set adb_init_stbl_encrypt = Y ...[c] set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey ...[d] : adbinitdbarea -n \"DBAREA1\" adbinitdbarea -e -n \"NEWAREA1\" ...[e]
[説明]
-
ディクショナリ用DBエリアを暗号化するときに指定するオペランドを追加します。
-
作業表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
システム表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
HADB暗号鍵の出力先ファイル名を指定するオペランドを追加します。
-
データ用DBエリアNEWAREA1を暗号化するときに指定する-eオプション(下線部分)を追加します。
-
-
adbinit.optファイルを修正する(その3)
クラウドストレージ機能に関するオペランドを追加してください。
<修正後のadbinit.optファイルの例(AWS環境の場合)>
set adb_init_dbarea_initialize = Y set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dic_encrypt = Y set adb_init_wrk_encrypt = Y set adb_init_stbl_encrypt = Y set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey set adb_init_cld_aws_region = ap-northeast-1 ...[a] set adb_init_cld_aws_bucket = adbbucket ...[b] set adb_init_cld_cache_path = /HADB/ADBCCH ...[c] : adbinitdbarea -n \"DBAREA1\" adbinitdbarea -e -n \"NEWAREA1\"
[説明]
-
S3オブジェクトの格納先リージョン名(ap-northeast-1)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_aws_regionオペランドに指定したリージョン名を指定してください。
-
S3オブジェクトの格納先S3バケット名(adbbucket)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_aws_bucketオペランドに指定したS3バケット名を指定してください。
-
キャッシュファイルの格納先ディレクトリ名(/HADB/ADBCCH)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_cache_pathオペランドに指定したキャッシュファイルの格納先ディレクトリ名を指定してください。
<修正後のadbinit.optファイルの例(Azure環境の場合)>
set adb_init_dbarea_initialize = Y set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dic_encrypt = Y set adb_init_wrk_encrypt = Y set adb_init_stbl_encrypt = Y set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey set adb_sys_cld_az_storage_account = adbstorageaccount ...[a] set adb_sys_cld_az_container = adbcontainer ...[b] set adb_init_cld_cache_path = /HADB/ADBCCH ...[c] : adbinitdbarea -n \"DBAREA1\" adbinitdbarea -e -n \"NEWAREA1\"
[説明]
-
Azure Blob Storageのストレージアカウント名(adbstorageaccount)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_az_storage_accountオペランドに指定したストレージアカウント名を指定してください。
-
BLOBの格納先コンテナー名(adbcontainer)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_az_containerオペランドに指定したコンテナー名を指定してください。
-
キャッシュファイルの格納先ディレクトリ名(/HADB/ADBCCH)を指定するオペランドを追加します。サーバ定義のadb_sys_cld_cache_pathオペランドに指定したキャッシュファイルの格納先ディレクトリ名を指定してください。
-
-
adbinit.optファイルを保存する
- メモ
-
マルチノード機能を使用している場合は,セカンダリノードまたはワーカーノードで使用するadbinit.optファイルを作成する必要があります。作成手順については,「■マルチノード機能を使用している場合」を参照してください。
-
(4) 表およびインデクスの定義情報を取得する
データベースの初期設定後に表やインデクスを再定義するため,表およびインデクスの定義情報と,表に対するアクセス権限の情報を取得してください。取得方法については,「17.2.4 表およびインデクスの定義情報の取得」を参照してください。
- メモ
-
ここで取得した情報は,後ほどの作業で使用します。
(5) 表のデータをエクスポートする
「17.2.5 表のデータのエクスポート」に示す方法で,すべての表のデータをエクスポートしてください。
(6) 監査証跡機能,同義語検索に関する情報を取得する
監査証跡機能を使用している場合,または同義語検索を行っている場合は,「17.2.6 監査証跡機能,同義語検索に関する情報の取得」に示す方法で,監査証跡機能,同義語検索に関する情報を取得してください。
- メモ
-
ここで取得した情報は,後ほどの作業で必要になります。
(7) データベースを初期設定する
次の手順でデータベースを初期設定してください。
手順
-
adbstopコマンドでHADBサーバを終了する
マルチノード機能を使用している場合は,マルチノード構成のHADBサーバを終了してください。終了方法については,「18.5.2 マルチノード構成のHADBサーバの終了方法」を参照してください。
-
データベースを初期設定する
HADB管理者でadbinitコマンドを実行し,データベースを初期設定してください。
「(3) adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルを使用してください。
マルチノード機能を使用している場合は,2.の作業を全ノードで実施してください。実施後,プライマリノードで作成されたHADB暗号鍵ファイルを全ノードに配布してください。配布方法については,「18.30.1 DBエリア暗号化機能の環境設定をする場合」のHADB暗号鍵ファイルの配布を参照してください。
-
サーバ定義を変更する
「(3) adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定した場合,サーバ定義のadb_crypto_dmkey_pathオペランドにadb_init_dmkey_pathオペランドに指定したHADB暗号鍵の出力先ファイル名(HADB暗号鍵ファイル名)の絶対パスを指定してください。
初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定していない場合は,サーバ定義のadb_crypto_dmkey_pathオペランドを削除してください。
マルチノード機能を使用している場合は,3.の作業を全ノードで実施してください。サーバ定義のadb_crypto_dmkey_pathオペランドを指定する場合は,各ノードに配布したHADB暗号鍵ファイルの絶対パスを指定してください。
-
adbstartコマンドでHADBサーバを開始する
マルチノード構成のHADBサーバを開始する場合は,各ノードでのadbstartコマンドの入力後にHADB暗号鍵利用パスワードの入力要求メッセージ(KFAA90013-Q)が出力されます。詳細については,「18.30.2 マルチノード構成のHADBサーバを開始する場合」を参照してください。
(8) HADBユーザを作成して権限を付与する
CREATE USER文でHADBユーザを作成して,作成したHADBユーザにGRANT文で権限を付与してください。
「(2) 全HADBユーザの情報を取得する」で取得した全HADBユーザの情報を使用して,HADBユーザを作成して権限を付与します。
HADBユーザを作成して権限を付与する際の注意事項,およびHADBユーザの作成と権限を付与するSQL文の例については,「17.4.1 HADBユーザの作成および権限の付与」を参照してください。
(9) 表およびインデクスを再作成する
データベースの初期設定前に定義していた表およびインデクスを再定義し,表にデータをインポートしてください。また,表に対するアクセス権限も付与してください。手順を次に示します。
手順
次の1.~3.および5.の操作方法については,「17.4.2 表およびインデクスの再作成」の手順の1.~3.および5.を参照してください。
-
表およびインデクスを再定義する
表およびインデクスを再定義する際は,「(4) 表およびインデクスの定義情報を取得する」で取得した,表およびインデクスの定義情報を使用してください。
-
ビュー表を再定義する
ビュー表を再定義する際は,「(4) 表およびインデクスの定義情報を取得する」で取得した,ビュー表の定義情報を使用してください。
-
表に対するアクセス権限を付与する
アクセス権限を付与する際は,「(4) 表およびインデクスの定義情報を取得する」で取得した,表に対するアクセス権限の情報を使用してください。
-
表にデータをインポートする
adbimportコマンドを実行して,表にデータをインポートしてください。
-
マルチチャンク表にデータをインポートする場合
「(5) 表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして,バックグラウンドインポートを実行してください。
なお,初回のデータインポートの際は,作成モードでデータインポートを実行してください。手順については,「11.1.10 実表にデータを格納する方法(データインポート)」および「11.4.2 マルチチャンク表にデータを格納する方法(バックグラウンドインポート)」を参照してください。
- 重要
-
-
「(5) 表のデータをエクスポートする」で取得した,チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。
-
カレントチャンクは,いちばん最後にインポートしてください。「(5) 表のデータをエクスポートする」でカレントチャンクを調べています。
-
-
マルチチャンク表ではない表にデータをインポートする場合
「(5) 表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして,adbimportコマンドを実行してください。
- メモ
-
この作業は,データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。
-
-
コスト情報を収集する
コスト情報を収集する際は,「(4) 表およびインデクスの定義情報を取得する」で取得した,コスト情報を収集している表の一覧を使用してください。
(10) 監査証跡機能,同義語検索の環境設定をする
-
データベースの初期設定前に監査証跡機能を使用していた場合
「12.2 監査証跡機能の環境設定」を参照して,監査証跡機能の環境設定をしてください。
環境設定をする際,「(6) 監査証跡機能,同義語検索に関する情報を取得する」で取得した監査証跡に関する情報を使用してください。監査対象を定義していた場合は,監査対象の定義が必要です。監査対象を定義していない場合は,監査対象の定義は不要です。監査対象の定義方法については,「12.2.7 監査対象の定義」を参照してください。
-
データベースの初期設定前に同義語検索を行っていた場合
「11.17.1 同義語検索を行うための準備をする」を参照して,同義語検索の環境設定をしてください。
「(6) 監査証跡機能,同義語検索に関する情報を取得する」で,同義語一覧定義ファイルおよび辞書情報登録ファイルを作成した場合は,それらのファイルを使用して同義語辞書ファイルを作成してください。
(11) HADBユーザのユーザ認証方式とパスワードを変更する
-
HADBユーザのユーザ認証方式の変更
この時点では,全HADBユーザのユーザ認証方式がデータベース認証になっています。
「(2) 全HADBユーザの情報を取得する」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'PAM'が表示されているHADBユーザは,PAM認証を使用しています。このHADBユーザのユーザ認証方式をPAM認証に変更してください。ユーザ認証方式の変更方法については,「11.6.4 HADBユーザのユーザ認証方式を変更する方法」を参照してください。
-
HADBユーザのパスワードの変更
「(2) 全HADBユーザの情報を取得する」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'DB'が表示されているHADBユーザは,データベース認証を使用しています。このHADBユーザを使用する人に,HADBユーザの認可識別子と設定済みのパスワードを知らせてください。そして,このHADBユーザを使用する人が,HADBユーザのパスワードを変更してください。パスワードの変更方法については,「11.6.2 HADBユーザのパスワードを変更する方法」を参照してください。