12 Oracle Key Vaultマスター暗号化キーの管理

セキュリティ・オブジェクトの管理には、セキュリティ・オブジェクトのアップロードとダウンロード、永続マスター暗号化キー・キャッシュの管理、ユーザー定義のTDEキーの使用などがあります。

12.1 永続マスター暗号化キー・キャッシュの使用

永続マスター暗号化キー・キャッシュ機能を使用すると、Oracle Key Vaultサーバーを使用できない場合にデータベースを稼働させることができます。

12.1.1 永続マスター暗号化キー・キャッシュについて

永続マスター暗号化キー・キャッシュによって、TDEマスター暗号化キーの可用性が確保されます。

Oracle Key Vaultサーバーの状態への依存を減らすことでこれを実現します。

TDEマスター暗号化キーは、インメモリー・キャッシュに加えて永続マスター暗号化キー・キャッシュにキャッシュされ、データベース・プロセス全体でマスター暗号化キーを使用できるようにします。これにより、データベースが新しいプロセスごとに、またはREDOログの切替えやデータベースの起動操作のたびに、Oracle Key Vaultサーバーと通信する必要がなくなります。

TDEマスター暗号化キーの可用性を保証する利点は、次のとおりです。

  • アップグレード、プライマリ/スタンバイ構成、スイッチオーバー、フェイルオーバー、およびOracle Key Vaultの再起動操作が必要なその他の手順におけるエンドポイントの継続的な運用

  • 1つのデータベースの複数のセッションが同一のマスター暗号化キーをリクエストしたときのOracle Key Vaultサーバーの負荷の削減

  • Oracle Key Vaultのスケーラビリティの改善

TDEマスター暗号化キーの抽出可能属性をtrueに設定する必要があります。そうしないと、TDEマスター暗号化キーはOracle Key Vaultで保持されるため、インメモリー・キャッシュまたは永続マスター暗号化キー・キャッシュにキャッシュできません。

12.1.2 Oracle Key Vaultの永続マスター暗号化キー・キャッシュのアーキテクチャについて

Oracle Key Vaultの永続マスター暗号化キー・キャッシュは、Oracle Key VaultのPKCS#11ライブラリに実装されます。

永続マスター暗号化キー・キャッシュ機能が構成されている場合、Oracle Key Vaultから最初のマスター暗号化キーが取得されるときに、Oracle Key VaultのPKCS#11ライブラリによって永続マスター暗号化キー・キャッシュが作成されます。

永続マスター暗号化キー・キャッシュは、Oracle Key Vaultのインストール方法に応じて、自動ログイン・ウォレットまたはパスワード・ベースのウォレットになります。
  • パスワードを指定してOracle Key Vaultクライアントがインストールされている場合、永続マスター暗号化キー・キャッシュはパスワードベースのウォレットになります。

  • パスワードを指定せずにOracle Key Vaultクライアントがインストールされている場合、永続マスター暗号化キー・キャッシュは自動ログイン・ウォレットになります。

PKCS#11ライブラリは、インメモリー・マスター暗号化キー・キャッシュも実装しています。インメモリー・マスター暗号化キー・キャッシュ機能が構成されている場合、マスター暗号化キーは、ライブラリをメモリーにロードしたプロセスのプロセス・メモリーにキャッシュされます。インメモリー・マスター暗号化キー・キャッシュと永続マスター・キー・キャッシュは互いに独立しています。これらのキャッシュは、個別に有効化および無効化できます。

暗号化と復号化を伴う操作の場合、PKCS#11はインメモリー・マスター暗号化キー・キャッシュでマスター暗号化キーを検索しようとします。見つからない場合、PKCS#11は永続マスター暗号化キー・キャッシュでマスター暗号化キーを検索します。マスター暗号化キーがインメモリーまたは永続マスター暗号化キー・キャッシュで見つからない場合は、Oracle Key Vaultサーバーから取得します(サーバーがオンラインの場合)。

12.1.3 インメモリーおよび永続マスター暗号化キー・キャッシュでのマスター暗号化キーのキャッシュ

マスター暗号化キーは、作成または別の場所からフェッチされた後、Oracle Key Vaultキャッシュに格納されます。

マスター暗号化キーが最初にOracle Key Vaultサーバーからフェッチされるか、Oracle Key Vaultサーバーで作成されると、マスター暗号化キーはインメモリー・マスター暗号化キー・キャッシュおよび永続マスター暗号化キー・キャッシュに格納されます。

インメモリー・マスター暗号化キー・キャッシュに格納されたマスター暗号化キーは、キーが永続キャッシュに配置された時点から一定の時間使用できます。期間は、okvclient.oraファイルのPKCS11_CACHE_TIMEOUTパラメータによって定義されます。

永続キャッシュが存在する場合は、それが使用されます。永続キャッシュが存在しない場合は、Oracle Key Vaultによって作成されます。キーが作成されると、今後のすべてのセッションで、インメモリー・マスター暗号化キー・キャッシュまたは永続マスター暗号化キー・キャッシュからキーが取得されます。

永続マスター暗号化キー・キャッシュに格納された永続マスター暗号化キーは、キーが永続キャッシュに配置された時点から一定の時間使用できます。この時間は、okvclient.oraファイルでPKCS11_PERSISTENT_CACHE_TIMEOUTパラメータを設定することで定義できます。

エンドポイントがマスター暗号化キーを削除すると、そのキーはインメモリー・マスター暗号化キー・キャッシュおよび永続マスター暗号化キー・キャッシュから削除されます。

12.1.4 永続マスター暗号化キー・キャッシュの格納場所

永続マスター暗号化キー・キャッシュは、構成ファイルokvclient.oraと同じ場所に作成されます。

okvclient.oraファイルのデフォルトの場所は、$OKV_HOME/confディレクトリです。

ORACLE_HOMEORACLE_BASEおよびOKV_HOME環境変数を、デプロイメント時に一貫した設定にしておくことが重要です。一貫性がない場合、永続キャッシュを必要とする操作が失敗し、永続キャッシュが複数の場所に作成される可能性があります。

環境変数OKV_HOMEが設定されていると、永続キャッシュは$OKV_HOME/confに作成されます。

OKV_HOMEを設定せずに、ORACLE_BASEを設定すると、永続キャッシュは$ORACLE_BASE/okv/$ORACLE_SIDに作成されます。

OKV_HOMEORACLE_BASEも設定せずに、ORACLE_HOMEを設定すると、永続キャッシュは$ORACLE_HOME/okv/$ORACLE_SIDに作成されます。

ノート:

永続キャッシュが作成されるディレクトリが安全で、権限が制限されていることを確認します。

12.1.5 永続マスター暗号化キー・キャッシュの操作モード

永続マスター暗号化キー・キャッシュは、2つのモードで動作します。

2つのモードの違いは、マスター暗号化キーを取得するために永続マスター暗号化キー・キャッシュとOracle Key Vaultが検索される順序です。

12.1.5.1 Oracle Key Vault優先モード

Oracle Key Vault優先モードでは、エンドポイントはOracle Key Vaultサーバーからマスター暗号化キーを取得しようとします。

Oracle Key Vaultサーバーがオフラインの場合、エンドポイントは永続マスター暗号化キー・キャッシュからマスター暗号化キーを取得しようとします。

エンドポイントは、Oracle Key Vaultサーバーのステータスを確認する必要があり、オフラインの場合、エンドポイントは永続マスター暗号化キー・キャッシュからマスター暗号化キーを取得しようとします。そのため、マスター暗号化キーへのアクセスが必要なデータベース操作には遅延が発生します。

12.1.5.2 永続マスター暗号化キー・キャッシュ優先モード

永続マスター暗号化キー・キャッシュ優先モードでは、エンドポイントは永続マスター暗号化キー・キャッシュからマスター暗号化キーを取得します。

マスター暗号化キーが永続マスター暗号化キー・キャッシュで使用できない場合、エンドポイントはOracle Key Vaultサーバーからマスター暗号化キーを取得しようとします。

Oracle Key Vaultサーバー上のマスター暗号化キーへの変更は、キーが永続マスター暗号化キー・キャッシュで期限切れになるまで適用されません。

12.1.6 永続マスター暗号化キー・キャッシュ・リフレッシュ期間

永続マスター暗号化キー・キャッシュ・リフレッシュ期間は、マスター暗号化キーの可用性を拡張する場合に役立ちます。

永続マスター暗号化キー・キャッシュのリフレッシュ期間機能を使用すると、データベース・エンドポイントはOracle Key Vaultサーバーから期限が切れたマスター暗号化キーのリフレッシュを複数回試行できます。この意味で、エンドポイントは、マスター暗号化キーのリフレッシュを完了するためにOracle Key Vaultサーバーがオンラインに戻るのを待機します。一方、マスター暗号化キー・リフレッシュの試行に失敗した場合、キーはリフレッシュ期間の継続中に、永続キャッシュから取得されます。

したがって、永続マスター暗号化キー・キャッシュのリフレッシュ期間機能は、永続マスター暗号化キー・キャッシュにキャッシュされた後のマスター暗号化キーの使用可能期間を延長します。同時に、エンドポイントはキャッシュ時間の最後に一度ではなく、リフレッシュ期間中にキーをリフレッシュできます。これは、プライマリ・スタンバイ・スイッチオーバーの進行中など、Oracle Key Vaultを使用できないときに永続キャッシュ期間の期限が切れる可能性に対応しています。リフレッシュ期間が終了し、キーがリフレッシュされるとすぐにキャッシュ期間が開始します。

okvclient.oraファイルでは、PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWパラメータを使用して、永続マスター暗号化キー・キャッシュにキャッシュされた後のマスター暗号化キーの使用可能期間を延長できます。この値は、Oracle Key Vaultサーバーがリカバリしてオンラインに戻るのにかかる時間を反映しています。この値は分単位で指定する必要があります。PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWのデフォルト値は30 (分)です。

12.1.7 永続マスター暗号化キー・キャッシュのパラメータ

Oracle Key Vaultには、永続マスター暗号化キー・キャッシュを構成するためのパラメータが用意されています。

12.1.7.1 PKCS11_CACHE_TIMEOUTパラメータ

PKCS11_CACHE_TIMEOUTパラメータは、インメモリー・キャッシュでマスター暗号化キーが使用可能な期間を設定します。

値は分単位で指定する必要があります。指定した期間が経過すると、マスター暗号化キーは期限切れになります。キーはインメモリー・キャッシュから削除されます。

PKCS11_CACHE_TIMEOUTのデフォルト値は、60 (分)です。Oracle Key Vault管理コンソールでPKCS11_CACHE_TIMEOUTパラメータを設定することをお薦めします。

12.1.7.2 PKCS11_PERSISTENT_CACHE_TIMEOUTパラメータ

PKCS11_PERSISTENT_CACHE_TIMEOUTパラメータは、永続キャッシュでマスター暗号化が使用可能な期間を設定します。

この時間は、データベースがOracle Key Vaultサーバーからキーを取得してキャッシュに格納したときから始まります。この期間が経過すると、マスター暗号化キーが期限切れになります。この時点で、エンドポイントがOracle Key Vaultサーバーに接続してキーを取得しようとします。成功すると、このパラメータで指定された期間、このキーが再度使用可能になります。キーを取得できない場合、PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWパラメータで指定された期間はキーを引き続き使用できます。その後、データベースがOracle Key Vaultサーバーからキーを再度正常に取得できなければ、そのキーを使用できなくなります。暗号化キーは永続マスター暗号化キー・キャッシュから削除されます。

OKV Persistent Cache entriesリストに表示されるCache Start TimeおよびMaximum Use Timeの値は、マスター暗号化キーが更新される際に更新されます。

PKCS11_PERSISTENT_CACHE_TIMEOUTのデフォルト値は、1440 (分)です。

PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWPKCS11_PERSISTENT_CACHE_TIMEOUTの両方のパラメータを0 (ゼロ)に設定することにより、永続マスター暗号化キー・キャッシュを無効にできます。

このグローバル・パラメータはOracle Key Vault管理コンソールで設定することをお薦めします。

ノート:

PKCS11_PERSISTENT_CACHE_TIMEOUTパラメータとそのデフォルト値は、デフォルトでokvclient.oraに含まれています。
12.1.7.3 PKCS11_PERSISTENT_CACHE_FIRSTパラメータ

PKCS11_PERSISTENT_CACHE_FIRSTパラメータは、永続マスター暗号化キー・キャッシュ操作モードを設定します。

PKCS11_PERSISTENT_CACHE_FIRSTパラメータは、okvclient.oraファイルに設定します。

操作モードは次のとおりです。

  • Oracle Key Vault優先モード: Oracle Key Vault優先モードを有効にするには、PKCS11_PERSISTENT_CACHE_FIRSTパラメータの値を0 (ゼロ)に設定します。

  • 永続マスター暗号化キー・キャッシュ優先モード: 永続マスター暗号化キー・キャッシュ優先モードは、デフォルト・モードです。

    永続マスター暗号化キー・キャッシュ優先モードを有効にするには、PKCS11_PERSISTENT_CACHE_FIRSTパラメータの値を1に設定します。

12.1.7.4 PKCS11_CONFIG_PARAM_REFRESH_INTERVALパラメータ

PKCS11_CONFIG_PARAM_REFRESH_INTERVALパラメータは、長時間実行されるプロセスがokvclient.ora構成ファイルを再読込みする頻度を指定します。

このパラメータは、プロセスが永続キャッシュから期限切れのマスター暗号化キーを削除しようとする頻度も指定します。

プロセスがインメモリー・キャッシュのキーを使用できず、かわりに永続キャッシュまたはOracle Key Vaultサーバーが使用されていて、okvclient.oraが最後に読み取られてから経過した時間がPKCS11_CONFIG_PARAM_REFRESH_INTERVALに指定された値を超えた場合、プロセスがokvclient.oraを再読取りし、変更されたパラメータが使用され始め、okvclient.ora構成ファイルを再読取りし、変更されたパラメータが使用され始め、期限切れのマスター暗号化キーを永続キャッシュから削除します。インメモリー・キャッシュのパラメータおよびPKCS11_CACHE_TIMEOUTPKCS11_CONFIG_PARAM_REFRESH_INTERVALより大きい場合、これらの操作は、PKCS11_CACHE_TIMEOUTパラメータで指定されている間隔で実行されます。

Oracle Key Vault管理コンソールでPKCS11_CONFIG_PARAM_REFRESH_INTERVALパラメータを設定することをお薦めします。この値は分単位で指定する必要があります。PKCS11_CONFIG_PARAM_REFRESH_INTERVALのデフォルト値は10 (分)です。

このパラメータを無効にするには、PKCS11_CONFIG_PARAM_REFRESH_INTERVALパラメータに0 (ゼロ)を設定します。

12.1.7.5 PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWパラメータ

PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWパラメータは、永続マスター暗号化キー・キャッシュにキャッシュされた後のマスター暗号化キーの使用可能時間を延長します。

これらのグローバル・パラメータはOracle Key Vault管理コンソールで設定することをお薦めします。値は分単位で指定する必要があります。PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWのデフォルト値は30 (分)です。

PKCS11_PERSISTENT_CACHE_REFRESH_WINDOWPKCS11_PERSISTENT_CACHE_TIMEOUTパラメータを0 (ゼロ)に設定することにより、永続マスター暗号化キー・キャッシュを無効にできます。

12.1.7.6 EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNパラメータ

EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNパラメータを使用すると、エンドポイント・データベースの停止時に、指定したエンドポイント・データベースのPKCS#11永続キャッシュが自動的に期限切れになることが保証されます。

有効にした場合、EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNにより、自動ログイン・ウォレットが使用されていても、エンドポイント・データベースをOracle Key Vaultに登録したときに設定したパスワードとは関係のないシステム生成のランダム・パスワードを使用して、永続キャッシュは保護されます。永続キャッシュ・パスワードを保護しておくと、セキュリティが向上します。

EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNパラメータを使用する前に、エンドポイント・データベースにバグ29869906: AUTO-LOGIN OKV NEEDS PERSISTENT CACHE PROTECTION KEY FROM RDBMSのパッチが適用されていることを確認します。このパッチは、Oracle Databaseリリース12.1から19cまでに適用されます。詳細は、Oracleサポートに問い合せてください。

Oracle Key Vaultにエンロールされている個々のエンドポイント・データベースにEXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNを設定することも、Oracle Key Vaultにエンロールされているすべてのエンドポイント・データベースにグローバルに設定することもできます。このパラメータは、データベース・エンドポイントのokvclient.ora構成ファイルでは使用できません。このパラメータを設定するには、Oracle Key Vault管理コンソールを使用します。

EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNを有効にすると、Oracle Key VaultからキーがフェッチされるときにPKCS#11永続キャッシュが作成されます。キャッシュがエンドポイント・データベースで引き続き使用できるのは、データベース・インスタンスがマウントまたはオープンされている場合にかぎります。エンドポイント・データベースが停止すると、PKCS#11永続キャッシュは使用できなくなりますが、次にエンドポイント・データベースが起動するときに再作成されます。ただし、永続キャッシュは、エンドポイント・プラガブル・データベース(PDB)がクローズしてから再オープンされた場合、使用可能な状態のままです。

特定のエンドポイント・データベースに対してEXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNを有効にすると、okvutil list -t okv_persistent_cacheコマンドを使用して永続キャッシュの内容を表示できなくなります。また、エンドポイント・データベースの起動後にキーがフェッチされる際、Oracle Key Vaultが使用可能であることを確認する必要があります。

個々のエンドポイント・データベースに対するEXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNの設定

  1. システム管理者ロールを持っているユーザーとしてOracle Key Vault管理コンソールにログインします。
  2. 「Endpoints」タブをクリックします。
  3. 「Endpoints」ページで、EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNを設定するエンドポイントを選択します。
  4. 「Endpoint Details」ページで、下部までスクロールして、「Expire PKCS11 Persistent Cache on Database Shutdown」チェック・ボックスを設定します。
  5. 「Save」をクリックします。

EXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNのグローバルな設定

次の手順では、Oracle Key Vaultにエンロールされている現在および将来のすべてのエンドポイント・データベースにEXPIRE PKCS11 PERSISTENT CACHE ON DATABASE SHUTDOWNを適用します。

  1. システム管理者ロールを持っているユーザーとしてOracle Key Vault管理コンソールにログインします。
  2. 「Endpoints」タブを選択して、左側のバーから「Settings」を選択します。
  3. 「Global Endpoint Configuration Parameters」ページで、「Expire PKCS11 Persistent Cache on Database Shutdown」チェック・ボックスを設定します。
  4. 「Save」をクリックします。

12.1.8 永続マスター・キー・キャッシュのコンテンツのリスト

okvutil listコマンドを使用すると、永続マスター暗号化キー・キャッシュにキャッシュされているマスター暗号化キーをリストできます。

Oracle Key Vaultは、永続キャッシュでokvutil listコマンドを実行した後に期限切れになったマスター暗号化キーを自動的に削除します。
  • 次の例のように、okvutil listコマンドを実行します。
    $ ./okvutil list -t okv_persistent_cache -l $ORACLE_HOME/okv/$ORACLE_SID
    Enter Oracle Key Vault endpoint password: password 

    出力は、次のようになります。

    OKV Persistent Cache entries:
    Current Persistent Cache Timeout is 600 seconds
    Version Unique ID                            TDE Master Key Identifier          Cache Start Time    Maximum Use Time  Maximum Refresh Window  Status
    02      55D745B1-2F30-667F-E053-0100007FAFDB 0636846AAF88F74FC6BF1DB68538797B69 22:38:12 2019-08-03 600 seconds       0 seconds                Expired
    02      55D745B1-2F2E-667F-E053-0100007FAFDB 063AC48E9433734F7EBF97180276E719C4 22:37:10 2019-08-03 600 seconds       180 seconds              Available
    02      55D745B1-2F2D-667F-E053-0100007FAFDB 0604425983989C4F6ABF7BD9E1D55459C4 22:37:00 2019-08-03 600 seconds       180 seconds              Available
    02      55D70FA4-81D1-5C8A-E053-0100007F8217 06172EACB79F4C4F32BFB7D50B0ACA7101 03:44:22 2019-08-03 300 seconds       0 seconds                Expired
    02      55D745B1-2F2B-667F-E053-0100007FAFDB 06983C4664FFC04F6ABF72F961A15AD943 22:36:49 2019-08-03 600 seconds       300 seconds              Available
    02      55D745B1-2F29-667F-E053-0100007FAFDB 0639E05D58B27B4FFDBFAEC5EAA08DB301 03:26:40 2019-08-03 300 seconds       0 seconds                Expired
    02      55D745B1-2F28-667F-E053-0100007FAFDB 06A29F4039E1B74FDCBFA687E0608EEEBA 03:19:17 2019-08-03 300 seconds       0 seconds                Expired
    02      55D745B1-2F27-667F-E053-0100007FAFDB 0678287C2877B74FF3BF0BA33A17A59F94 03:19:21 2019-08-03 300 seconds       0 seconds                Expired

    次の表では、OKV Persistent Cache entriesリスト内の列を説明します。

    列名 説明

    Version

    永続マスター暗号化キー・キャッシュのバージョン

    Unique ID

    マスター暗号化キーに割り当てられたKMIP識別子

    TDE Master Key Identifier

    マスター暗号化キーに割り当てられたデータベースID

    Cache Start Time

    マスター暗号化キーがキャッシュされた時刻

    Maximum Use Time

    マスター暗号化キーが永続マスター暗号化キー・キャッシュに格納された時点からキーの有効期限が切れるまでの時間(秒)

    Maximum Refresh Window

    永続マスター暗号化キー・キャッシュにキャッシュされた後のマスター暗号化キーの使用可能期間を延長します。

    Status

    マスター暗号化キーが使用可能か、リフレッシュ中か、失効しているかが表示されます

12.1.9 Oracle Databaseのデプロイメントと永続マスター暗号化キー・キャッシュ

永続マスター暗号化キー・キャッシュは、他のOracle機能とOracle Key Vaultの統合に影響します。

  • Oracle Key Vaultサーバーがオフラインの場合のデータベースの再起動: 自動ログイン・ウォレットを使用するようにOracle Key Vaultを構成すると、データベースはデータベースの再起動時にOracle Key Vaultサーバーに接続します。データベースの再起動時にOracle Key Vaultサーバーがオフラインの場合、データベースは永続マスター暗号化キー・キャッシュからマスター暗号化キーを取得します。マスター暗号化キーがアクティブで期限切れになっていない場合、データベース操作は正常に再開します。

    永続マスター暗号化キー・キャッシュおよびOracle Key Vaultエンドポイント・ウォレットのパスワードが同期されていることを確認してください。

    ノート:

    エンドポイント・ウォレットの資格証明が変更された場合は、永続マスター暗号化キー・キャッシュを削除する必要があります。
  • Oracle Real Application Cluster (Oracle RAC)環境での永続マスター暗号化キー・キャッシュの使用: Oracle RAC環境では、各Oracle RACノードは一意のデータベース・エンドポイントであり、一意の永続マスター暗号化キー・キャッシュを使用します。

    Oracle RAC環境では、各Oracle RACノードの永続マスター暗号化キー・キャッシュにマスター暗号化キーの最新バージョンをキャッシュするために、各Oracle RACノードからデータベースを問い合せる必要があります。

  • Oracle Data Guard環境での永続マスター暗号化キー・キャッシュの使用: プライマリ・サーバーのデータベースにあるマスター暗号化キーのローテーションによって、プライマリ・サーバーのデータベースの永続マスター暗号化キー・キャッシュにマスター暗号化キーがキャッシュされます。

    プライマリ・サーバーから新しいREDOログがスタンバイ・サーバーに適用された後、スタンバイ・サーバーでは、新しいマスター暗号化キーを取得してスタンバイ・サーバーのデータベースの永続マスター暗号化キー・キャッシュにキャッシュします。混乱を回避するために、プライマリ・サーバーのデータベース内のマスター暗号化キーのローテーション直後に、プライマリ・サーバーとスタンバイ・サーバーを同期化してください。

12.2 Oracle Key Vaultから新しいTDE対応データベースへの接続の構成

Oracle Key Vaultと、まだTransparent Data Encryption用に構成されていないデータベースの間の接続を構成できます。

12.2.1 Oracle Key Vaultから新しいTDE対応データベースへの接続の構成について

Oracle Key Vaultと、まだTDE用に構成されていないデータベースの間の接続を構成できます。

接続の構成を始める前に、Oracle Key Vaultクライアントのインストール環境がデータベース・ランタイム環境と同じであることを確認してください。環境変数ORACLE_HOMEORACLE_BASEおよびORACLE_SIDは、svrctlおよびオペレーティング・システム環境変数で同じ値に設定する必要があります。これは、エンドポイントのエンロールにOracle Key Vault RESTfulサービス・ユーティリティを使用している場合にも該当します。

TDEおよびOracle Key Vaultと連携できるようにOracle Data Guardを構成する方法の詳細は、次を参照してください。

TDEおよびOracle Key Vaultと連携するようにOracle Real Application Clusters (Oracle RAC)を構成する方法の詳細は、次を参照してください。

PDBキーがOracle Key Vaultに格納される場合にPDBをクローニングするステップの詳細は、ASO管理ガイドを参照してください:

12.2.2 Transparent Data Encryptionエンドポイント統合の制限事項

このタイプのTransparent Data Encryption(TDE)エンドポイント統合では、バージョンが非互換の場合、問題が発生する可能性があります。

TDEエンドポイントの統合の制限事項は次のとおりです。

  • 同じコンピュータ上のすべてのエンドポイントは、同じバージョンのOracle Key Vaultライブラリを使用する必要があります。liborapkcs.soファイルのコンピュータごとに1つの場所(/opt/oracle/expapi/64/hsm/oracle/1.0.0/liborapkcs.so)があります。

  • 同じホストに複数のデータベースがあり、それらのデータベースで同じsqlnet.oraファイルが共有されている場合は、すべてのデータベースを同時に移行する必要があります。各データベースにそれ固有のsqlnet.oraファイルがある場合(TNS_ADMINパラメータの個別設定によって制御)、データベースをOracle Key Vaultに個別に移行できます。

注意:

TDEを構成した後はウォレットからキーを削除することや、ウォレット自体を削除することがないようにしてください。キーを失うとデータベースが失われます。これは、次のシナリオでも同様です。
  • キーストア(ウォレットまたはOracle Key Vault)を作成またはオープンした場合は、最初のキーを設定する前でも、データベース内のデータを暗号化する前でも同様です

  • 暗号化されたすべてのデータが復号化されている場合

  • キーとウォレットをハードウェア・セキュリティ・モジュールに移行した場合

12.2.3 ステップ1: Oracle Key Vaultサーバー環境の構成

接続を構成する前に、Oracle DatabaseおよびOracle Key Vaultの設定が正しいことを確認する必要があります。

これらの設定には、Oracle環境変数およびOracle COMPATIBILITYパラメータが含まれます。
  1. データベースのエンドポイントがインストールされているサーバーにログインします。
  2. データベースを起動する前に、ORACLE_BASE環境変数が現在のオペレーティング・システム・セッションに設定されていることを確認し、Oracle Real Application Clusters (Oracle RAC)対応データベースのsrvctlでも確認します。
    このステップは非常に重要です。ORACLE_BASE環境変数が存在しない場合は、$ORACLE_BASE/okv/$ORACLE_SID/okvclient.oraファイルからkey_vault_endpoint_installation_dir/conf/okvclient.oraファイルへのソフト・リンクを作成してください。Oracle Real Application Clusters環境のすべてのデータベース・インスタンスでこのステップを実行する必要があります。
  3. COMPATIBILITY初期化パラメータが12.1.0.0以降に設定されていることを確認します。
  4. Transparent Data Encryption (TDE)データを含むTDE対応データベース用にエンドポイントをエンロールおよびプロビジョニングします。
    エンドポイントを最初にエンロールするときに、TDEとの統合用のエンドポイント・タイプとしてORACLE_DBを選択する必要があります。
  5. ウォレットをそのエンドポイントのデフォルト・ウォレットとして定義することで、使用する仮想ウォレットにエンドポイントがアクセスできるようにします。
    Oracle RACおよびOracle Data Guard環境では、すべてのプライマリ・インスタンスおよびスタンバイ・インスタンスのエンドポイントで、同じデフォルト・ウォレットが共有されます。
  6. Oracle Databaseのリリースに応じて、暗号化ウォレットの場所を構成します。
    • Oracle Databaseリリース12.1.0.2の場合は、次のようにして、このデータベースにあるsqlnet.oraファイルを、Oracle Key Vaultを指すように構成します。
      ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=HSM))
    • Oracle Databaseリリース12.2.0.1の場合は、Oracle Key Vaultを指すようにこのデータベースのsqlnet.oraファイルを構成します。
      ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=OKV))
      

      デフォルトで、sqlnet.oraファイルは、ORACLE_HOME/network/adminディレクトリ、またはTNS_ADMIN環境変数で設定された場所にあります。

    • Oracle Databaseリリース18c以降では、次のパラメータを構成します。
      • WALLET_ROOTを設定して、Oracle Key Vaultクライアントのインストール・ディレクトリを定義します。データベースで正しいキーストア構成が自動検出されるようにするには、WALLET_ROOTとして定義するディレクトリに、次のサブディレクトリ(小文字)が必要です。
        • /okv: Oracle Key Vaultクライアント・ソフトウェアがこのディレクトリにインストールされます。
        • /tde: TDEウォレット(またはOracle Key Vaultの自動オープン・ウォレット)がこのサブディレクトリに配置されます。
        • /tde_seps: このディレクトリは、EXTERNAL STORE句を使用してパスワードを置換する場合に、ADMINISTER KEY MANAGEMENTコマンドにキーストア・パスワード(ウォレットまたはOracle Key Vault)が非表示になるウォレット用です。
      • TDE_CONFIGURATIONを、Oracle Key Vaultの場合はOKVに、Oracle Key Vaultへの自動オープン接続の場合はOKV|FILEに設定します。

      エンドポイントは、PKCS#11ライブラリ・サポートを使用してTDEマスター暗号化キーを管理します。root.shスクリプト(okvclient_installation_directory/binディレクトリ内)を実行して、エンドポイントとOracle Key Vault間の通信を容易にするPKCS#11ライブラリをデプロイします。

      この段階で、Oracleデータベースは、キーの集中管理にOracle Key Vaultを使用します。すべてのTDEコマンドおよび文で、エンドポイント・ソフトウェアのインストール時に指定されたOracle Key Vaultエンドポイント・パスワードを使用します。ただし、WALLET_ROOT/tde_sepsディレクトリに作成されたウォレット内のADMINISTER KEY MANAGEMENTコマンドにキーストア・パスワードが非表示になっている場合を除きます。

  7. SQL*Plusの場合、データベースに再接続します。
    変更は、現在のSQL*Plusセッションをログアウトし、再度接続してから表示されます。
  8. V$ENCRYPTION_WALLET動的ビューを問い合せて、sqlnet.oraファイル内のMETHOD_DATAの設定が変更されたことを確認します。
    SELECT * FROM V$ENCRYPTION_WALLET;
    

    これで、問合せの出力にOKVが表示されるようになります。

  9. TDEマスター暗号化キーに「Extractable」属性値を構成します。
    この設定によって、特定の操作中にOracle Key Vaultから対称キーを取得(抽出)できるかどうかが決まります。
    キー管理者ロールを持つユーザーは、「Endpoint Settings for Keys and Secrets」ページで、新しい対称キーに対する「Extractable」属性のデフォルト値を設定できます。エンドポイントごとの設定がある場合は、グローバル・エンドポイントの設定がオーバーライドされます。この属性値は、(C、JAVA SDKまたはRESTfulサービス・ユーティリティを使用して)新しい対称キーを作成または登録するときに明示的に設定することもできます。ただし、この場合はさらに制限を受けることになります。抽出可能属性の有効なエンドポイント設定がFALSE (新しい対称キーが抽出不可)に設定されている場合、新しい対称キーの抽出可能属性をTRUE (新しいキーを抽出可能として作成)に設定できません。
    キー管理者ロールを持つユーザーは、既存の対称キーの抽出可能属性設定をTRUEまたはFALSEに変更できます。
    既存の対称キーに対する読取り/書込みアクセス権を持つユーザーまたはエンドポイントも、その抽出可能属性設定を変更できますが、これは、より厳しい設定(つまり、値をFALSEに設定してオブジェクトを抽出不可にすること)を適用する場合にのみ許可されます。このようなユーザーまたはエンドポイントは、対称キーが現在抽出不可能な場合は、抽出可能にするように「Extractable」属性設定を変更できません。
TDE構成はここで完了です。これで、既存の表領域を暗号化することや、暗号化された新しい表領域をデータベースに作成することができるようになりました。外部キー・マネージャではTDE列暗号化を使用しないことをお薦めします。残りのTDE構成とともにsqlnet.oraファイルが正しく構成されている場合、次のいずれかのSQL文を使用して暗号化キーを設定すると、TDEマスター暗号化キーがOracle Key Vaultに作成されます。
  • ALTER SYSTEM SET [ENCRYPTION] KEY IDENTIFIED BY "password";
  • ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY IDENTIFIED BY "password"

これら両方のSQL文のパスワードは、Oracle Key Vaultクライアント・ソフトウェアをインストールしたときに定義したパスワードです。その時点でパスワードを定義しなかった場合、これら2つの文のパスワードはNULLになります。

12.2.4 ステップ2: Transparent Data EncryptionとOracle Key Vaultの統合

この統合により、Oracle Key VaultでTDEマスター暗号化キーを直接管理できます。

  1. Oracle Key Vaultクライアントがインストールされているサーバーにログインしていることを確認します。

    ノート:

    root.shスクリプトを実行するときは、次の点を考慮してください:
    • 複数のOracleデータベースがあるホストで1回のみ、root.shを実行してOracle Key Vaultライブラリをインストールする必要があります。
    • 必ず、同じホストにあるすべてのTDE対応データベースのOracle Key Vaultクライアントのインストールが完了した後にのみ、root.shを実行してください。
    • このホストにあるすべてのOracleデータベースが停止していることを確認してください。
  2. データベース・サーバーを停止します。

    このスクリプトは永続マスター暗号化キー・キャッシュ機能をOracle Key Vault PKCS#11ライブラリに実装し、断続的なネットワークの中断またはOracle Key Vaultのアップグレード時のデータベースの可用性を向上させます。

    • UNIX: rootスクリプトはPKCS#11ライブラリを /opt/oracle/extapi/64/hsm/oracle/1.0.0にコピーし、ファイル・アクセス権限を最小限に抑えます。
    • Windows: root.batスクリプトを実行して、liborapkcs.dllファイル(libディレクトリ内)をC:\oracle\extapi\64\hsm\oracle\1.0.0ディレクトリにコピーします。要求に応じてデータベースのバージョンを指定します。
  3. okvclient_installation_directory/binからrootスクリプトを実行します。
  4. Oracleデータベースを起動します。
  5. データベース上のパスワード保護されたウォレットの場合は、ウォレットを開きます。(自動ログイン・ウォレットは自動的に開かれます。)
    • Oracle Databaseリリース12.1.0.2以降の場合: SYSKM管理権限を付与されたユーザーとして、次を実行します。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "Oracle_Key_Vault_endpoint_password"; 
      
  6. マスター暗号化キーを設定します。
    • Oracle Databaseリリース12.1.0.2以降の場合:
      ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY IDENTIFIED BY "Oracle_Key_Vault_endpoint_password" WITH BACKUP;
      

12.3 既存のTDEウォレットのOracle Key Vaultへの移行

移行したTDEウォレットを使用して、TDEによって以前に暗号化されたデータベースの内容をリストアできます。

12.3.1 既存のTDEウォレットのOracle Key Vaultへの移行について

sqlnet.oraファイルを使用すると、既存のTDEウォレットをOracle Key Vaultに移行できます。

Oracle Databaseリリース12.2.0.1以前では、sqlnet.oraファイルを使用して、既存のTDEウォレットをOracle Key Vaultに移行できます。Oracle Databaseリリース18c以降では、ウォレットをOracle Key Vaultに移行するには、パラメータTDE_CONFIGURATIONおよびWALLET_ROOTを設定する必要があります。

Transparent Data Encryption (TDE)ウォレットがすでに存在する場合は、Oracle Key Vaultを認識するようにsqlnet.oraファイルまたはTDE_CONFIGURATIONパラメータを変更してから、既存のTDEウォレットをOracle Key Vaultに移行する必要があります。

Oracle Walletは、現在のTDEマスター暗号化キーとともに、TDEマスター暗号化キーをローテーションさせる毎回のキー更新操作によって上書きされた、過去のTDEマスター暗号化キーを保持しています。この過去のTDEマスター暗号化キーは、過去のTDEマスター暗号化キーの1つを使用して作成されたOracle Databaseバックアップをリストアする際に助けになります。Oracle WalletファイルからOracle Key VaultへのTDE移行の際、Key Vaultは新しいマスター暗号化キーを生成します。このマスター暗号化キー生成の後は、Oracle Key Vaultがすべての新しいキーを保持します。

移行を実行する前に、Oracle WalletをOracle Key Vaultにアップロードすることをお薦めします。これにより、移行を開始する前に、過去のすべてのキー情報とともにウォレットのバックアップを保管できます。移行が完了したら、クライアント・システムで、手動で古いウォレットを削除してください。

Oracle Real Application Clusters (Oracle RAC)構成で操作する場合は、共有TDEウォレット(Oracle Automatic Storage Management (Oracle ASM)またはOracle Advanced Cluster File System (Oracle ACFS))からOracle Key Vaultに移行してください。Oracle RACノードごとの個別のウォレットはサポートされていません。

12.3.2 既存のTDEウォレットのOracle Key Vaultへの移行

okvutil uploadコマンドを使用して、既存のTDEウォレットからOracle Key VaultへのTDE対応データベースの移行を開始できます。

  1. 移行するデータベースをバックアップします。
  2. エンドポイントのエンロールを完了します。
  3. まだ実行していない場合は、okvutil uploadコマンドを使用して、TDEウォレットからOracle Key Vaultの仮想ウォレットに現在および過去のマスター暗号化キーをアップロードします。
    $ OKV_HOME/bin/okvutil upload -t WALLET -l /path/to/tde-wallet -g name_of_wallet_in_Oracle_Key_Vault -v 4

    このステップでは、正常な移行後にウォレットを削除できます。これは多くの場合、暗号化サーバー上の暗号化キーを許可しないセキュリティ・ポリシーの要件となります。

    okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。ウォレットをダウンロードできますが、ウォレットのオブジェクトの「Extractable」属性がFALSEに設定されている場合、それらのオブジェクトはダウンロードできません。

  4. ウォレットの場所を構成します。
    • Oracle Databaseリリース12.2.0.1以前の場合: Oracle Key Vaultへの移行のために、Oracle Databaseのsqlnet.oraファイルのMETHOD設定を編集します。
      ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=OKV)(METHOD_DATA=(DIRECTORY=wallet_location)))
      

      デフォルトで、sqlnet.oraファイルは、ORACLE_HOME/network/adminディレクトリ、またはTNS_ADMIN環境変数で設定された場所にあります。

    • Oracle Databaseリリース18c以降の場合: TDE_CONFIGURATIONパラメータを設定します。
       ALTER SYSTEM SET TDE_CONFIGURATION = "KEYSTORE_CONFIGURATION=OKV|FILE" SCOPE = BOTH;

      WALLET_ROOTパラメータはすでに設定されているため、変更する必要はありません。

  5. データベース・インスタンスに再接続(またはOracle RACデータベースを再起動)して、sqlnet.oraファイルの変更を取得します。
    データベース・インスタンスに再接続する場合、Oracle Databae 18c以降でのTDE_CONFIGURATIONパラメータへの変更は即時に適用され、再起動する必要はありません。
  6. V$ENCRYPTION_WALLET動的ビューを問い合せて、sqlnet.oraファイル内のMETHOD_DATAの設定が変更されたことを確認します。
    SELECT CON_ID, WALLET_TYPE, WALLET_ORDER, STATUS 
    FROM V$ENCRYPTION_WALLET 
    WHERE CON_ID <> 2;

    これで、問合せの出力にMETHOD=OKVと表示されます。

  7. エンドポイントがOracle Database 11gリリース2の場合は、次のように、ローカルのOracle Walletを閉じてHSMウォレットを開きます。
  8. 次のステップを使用して、ローカルのOracle Walletを閉じます。
    1. 次のように、ローカルのOracleウォレットを閉じます。
      自動ログイン・ウォレットが開いている場合、次のコマンドを実行します。
      oracle$ cd wallet_location
      oracle$ mv cwallet.sso cwallet.sso.bak
      sqlplus sys as sysdba
      Enter password: password 
      SQL> ALTER SYSTEM SET WALLET CLOSE;

      パスワードで保護されたウォレットが開いている場合は、SQL*Plusで次の文を実行します。

      ALTER SYSTEM SET WALLET CLOSE IDENTIFIED BY "wallet_password";
    2. SQL*Plusで、Oracle Key Vaultへの接続を開きます。ここでのOracle_Key_Vault_passwordは、okvclient.jarファイルのインストール時に指定されたパスワードです。
      ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "Oracle_Key_Vault_password";
  9. TDEウォレットからOracle Key Vaultに移行します。
    • Oracle Database 11gリリース2の場合: エンドポイント・クライアント・ソフトウェアのインストール時にウォレットのパスワードを入力した場合は、SQL*Plusで次の文を実行します。
      ALTER SYSTEM SET ENCRYPTION KEY 
      IDENTIFIED BY "Oracle_Key_Vault_password" 
      MIGRATE USING "wallet_password"; 
      

      エンドポイント・クライアント・ソフトウェアのインストール時に自動ログイン・オプションを選択した場合は、次の文を実行します。

      ALTER SYSTEM SET ENCRYPTION KEY 
      IDENTIFIED BY "NULL" 
      MIGRATE USING "wallet_password";
    • Oracle Database 12c以降の場合: SYSKM管理権限を付与されたユーザーとして、次を実行します。
      ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY IDENTIFIED BY "Oracle_Key_Vault_password" MIGRATE USING "wallet_password" WITH BACKUP; 
      

      ADMINISTER KEY MANAGEMENT文でWITH BACKUP句は必要ですが、Oracle Key VaultではTDEによって無視されます。

  10. ウォレットを開きます。
    • Oracle Database 11gリリース2の場合: エンドポイントでOracle Key Vaultへの接続にパスワードが必要な場合は、パスワードを入力します。
      ALTER SYSTEM SET ENCRYPTION WALLET OPEN 
      IDENTIFIED BY "Oracle_Key_Vault_endpoint_password"; 
      
    • Oracle Database12c以上の場合
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
      IDENTIFIED BY "Oracle_Key_Vault_endpoint_password";
      
  11. 移行の完了後、自動ログイン・ウォレットを使用している場合、cwallet.sso.bakファイルの名前をcwallet.ssoに変更してそれを再有効化します。

12.3.3 TDEによって以前に暗号化されたデータベース内容のOracle Walletを使用したリストア

Oracleウォレットをダウンロードしたエンドポイントでリストア・プロセスを実行します。

Oracleデータベース・エンドポイントが、ローカルのOracle WalletファイルからOracle Key Vaultの使用に変換された場合は、このローカル・ウォレット・ファイルにあるキーを使用して暗号化されたバックアップをリストアする必要がある場合があります。
この場合、Oracle Key Vaultから、リストア・プロセスでバックアップを復号化する際に使用するローカル・ウォレット・ファイルに、必要なキーをダウンロードする必要があります。たとえば、Finance_DBデータベースを最近移行し、移行前のウォレットをアップロードした後、Oracle Key Vaultへのオンライン・マスター暗号化キーが使用されるようになったとします。システム障害のために、Oracle Key Vaultへの移行前に取ったデータベース・バックアップからリストアする必要が生じた場合も、以前にアップロードしたFinance_DBウォレット・データが含まれるOracle仮想ウォレットからダウンロードしたOracle Walletを使用して、データベースの内容をリストアできます。
  1. okvutil downloadコマンドを使用して、Oracle Key VaultからこのOracle Walletをダウンロードします。
  2. Oracle Walletをダウンロードしたエンドポイントで、sqlnet.oraファイルを編集して次のように設定します。
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=wallet_file_path)))
    

    ENCRYPTION_WALLET_LOCATION設定は1行で記述します。

  3. 指定したパスワードを使用して、ダウンロードしたウォレットを開きます。
    • Oracle Database 11gリリース2の場合は、ALTER SYSTEMシステム権限を付与されたユーザーとして、次を実行します。

      ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "wallet_password"; 
      
    • Oracle Database 12c以上の場合は、SYSKM管理権限を付与されたユーザーとして、次を実行します。

      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "wallet_password";
      

    ウォレットを開くと、サーバーは更新されたsqlnet.oraファイルの内容を読み取ることができます。この時点で、エンドポイント・サーバーは元のバージョンのウォレットとともに実行できる状態にリストアされました。

12.4 Oracle Walletのアップロードとダウンロード

Oracle Walletを保存および共有するには、それらをOracle Key Vaultにアップロードする必要があります。

12.4.1 Oracle Walletのアップロードとダウンロードについて

Oracleウォレットをアップロードおよびダウンロードするには、okvutilユーティリティを使用します。

ウォレットをOracle Key Vaultにアップロードした後、Key Vaultで新しい仮想ウォレットを作成し、共有するセキュリティ・オブジェクトを追加できます。ダウンロードする前に、仮想ウォレットへのエンドポイント・アクセス権を付与する必要があります。okvutil uploadおよびokvutil downloadコマンドを使用して、Oracle Key Vaultとそのエンドポイントの間でOracle Walletをアップロードおよびダウンロードできます。okvutilユーティリティは、エンドポイントにインストールするエンドポイント・ソフトウェアとともにパッケージ化されています。

Oracle Key Vaultのokvutilソフトウェアでは、個々のセキュリティ・オブジェクトの粒度レベルでOracle Walletを読み取ることができ、最大128 KBのサイズのセキュリティ・オブジェクトがサポートされています。そのため、ウォレットの内容は、個々の項目としてアップロードされます。ダウンロード中に、同じセキュリティ・オブジェクトのセットを使用して元のウォレットを再作成するか、別のセキュリティ・オブジェクトのセットを使用して新しいウォレットを作成できます。

パスワード・ベースのウォレットと自動ログイン・ウォレットの両方を、アップロードおよびダウンロードできます。ウォレットの内容は、いずれかのタイプの新しいウォレットに、後でダウンロードできます。たとえば、アップロードされたパスワード保護済ウォレットを自動ログイン・ウォレットとしてダウンロードしたり、アップロードされた自動ログイン・ウォレットをパスワード保護されたウォレットとしてダウンロードしたりできます。

Oracle Key Vaultを使用して、以前アップロードしたOracle Walletのセキュリティ・オブジェクトを含む新しい仮想ウォレットを構成できます。たとえば、以前にアップロードしたOracle Walletに5つの対称キーと3つの不透明オブジェクトが含まれていた場合は、元の5つの対称キーのうち3つと、元の3つの不透明オブジェクトのうちの1つのみから構成される、新しい仮想ウォレットを作成できます。この仮想ウォレットは元のウォレットと同様にダウンロードでき、キーのサブセットのみに対するアクセス権を持つエンドポイントを提供します。このプロセスは、元のウォレットを変更しません。

okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。ウォレットをダウンロードできますが、ウォレットのオブジェクトの「Extractable」属性がFALSEに設定されている場合、それらのオブジェクトはダウンロードできません。

12.4.2 Oracleウォレットのアップロード

okvutil uploadコマンドは、ウォレットをOracle Key Vaultにアップロードします。

Oracle Key VaultへのTDEウォレットの内容のアップロードは、Oracle Key Vault独自の機能です。オンライン・マスター暗号化キー・モードでOracle Key Vaultを使用するためにデータベースを移行する場合は、移行手順の実行前にウォレットの内容をアップロードしておく必要があります。そうすれば、データベース・サーバーを正常に移行した後に、ファイルベースのウォレットを削除できます。これはPCI-DSSの要件です。アップロード操作では、セキュリティ・オブジェクトやそのメタデータなど、Oracleウォレット内のすべて内容をアップロードして、ダウンロード・プロセスでウォレットを再構築できるようにします。Oracleウォレットには、通常、TDEマスター暗号化キー、過去のTDEマスター暗号化キー、SSLまたはTLS証明書およびそれらのメタデータ(不透明オブジェクトとしてOracle Key Vaultに格納されます)、ウォレット・メタデータおよび明示的に追加したキーが含まれます。okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。
  1. Oracle WalletがあるサーバーがOracle Key Vaultエンドポイントとしてエンロールされ、プロビジョニングされていることを確認します。
  2. エンドポイントが、使用する仮想ウォレットへのアクセス権を持っていることを確認します。

    エンドポイントは、Oracle Key Vaultの仮想ウォレットに対して読取り、変更、およびウォレット管理アクセス権を持っている必要があります。

  3. okvutil uploadコマンドを実行して、ウォレットをアップロードします。

    たとえば:

    # okvutil upload -l /etc/oracle/wallets -t wallet -g HRWallet
    Enter wallet password (<enter> for auto-login): password
    Enter Oracle Key Vault endpoint password: Key_Vault_endpoint_password
    Upload succeeeded
    

    この例では次のとおりです。

    • -lは、アップロードするウォレットのディレクトリ場所を指定します。

    • -tはタイプを示します。この場合はOracle Walletです。

    • -gは、このウォレットがステップ2で構成されたOracle Key Vault仮想ウォレットの一部になるように、その仮想ウォレットを指定します。

これでアップロードは完了です。他のユーザーおよびエンドポイントと仮想ウォレットを共有できるようになりました。

12.4.3 Oracleウォレットのダウンロード

okvutil downloadコマンドは、Oracle Key VaultサーバーからエンドポイントにOracle Walletをダウンロードします。

  1. ウォレット内のセキュリティ・オブジェクトの抽出ステータスがTRUEであることを確認します。

    オブジェクトにFALSE「Extractable」属性設定がある場合、そのオブジェクトはダウンロードできません。「Extractable」属性設定を確認するには、「Object Details」ページにナビゲートします。「Keys & Wallets」タブを選択し、左側のナビゲーション・バーで「Keys & Secrets」を選択し、リストされているキーに対して「Edit」アイコンを選択します。「Extractable」属性設定は、「Advanced」セクションにリストされます。

  2. エンドポイントが、ダウンロードする仮想ウォレットにおける読取りアクセス権を持っていることを確認します。
  3. okvutil downloadコマンドを実行して、ウォレットをダウンロードします。

    たとえば:

    # okvutil download -l /etc/oracle/wallets/orcl/ -t WALLET -g HRwallet
    Enter new wallet password(<enter> for auto-login): Oracle_wallet_password
    Confirm new wallet password: Oracle_wallet_password
    Enter Oracle Key Vault endpoint password: Key_Vault_endpoint_password
    

    この例では次のとおりです。

    • -lは、作成されるウォレットの場所です。

    • -tはタイプを示します。この場合はOracle Walletです。

    • -gは、ステップ2で構成されたOracle Key Vault仮想ウォレットを指定します。

    ウォレットがすでに存在し、-oパラメータを使用して既存のウォレットに上書きしなかった場合は、次のアクションが実行されます。

    • 既存のウォレットの名前は、ewallet.p12.current_timestamp (timestampはEpoch以降の秒数)という形式のバックアップ名に変更されます。

    • 新たにダウンロードされたウォレットにはewallet.p12という名前が付けられます。

  4. ウォレットを閉じ、再度開きます。

    ウォレットを閉じて再度開くと、TDEマスター暗号化キーを含むウォレットの内容がTDEで暗号化されたデータベースで使用可能になり、ウォレットの内容がTDEデータベースにロードされます。(自動ログイン・ウォレットは、次にアクセスしたときに自動的に開かれます。)

    • Oracle Database 11gリリース2の場合:

      ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "Oracle_wallet_password"; 
      
      ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Oracle_wallet_password"; 
      
    • Oracle Database12c以上の場合

      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY "Oracle_wallet_password";
      
      ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "Oracle_wallet_password";
      
  5. Oracle RACなどの共有サーバー構成で実行している場合は、データベースを再起動します。

12.4.4 Oracle Walletのアップロードとダウンロードに関するガイドライン

Oracle Key Vaultとの間でウォレットをアップロードおよびダウンロードするためのガイドラインが用意されています。

  • 元のウォレットの内容に変更がある場合は(キー・ローテーションやキー更新操作など)、Key Vaultにウォレットの最新のコピーが保持されるように、Oracle Key Vaultにウォレットを再アップロードします。

  • okvutil uploadおよびokvutil downloadコマンドで上書き(-o)オプションを使用する予定がある場合は注意してください。このオプションは、アップロードするデータと競合する仮想ウォレットのデータを上書きします。-oオプションを使用する前に、ウォレット・ファイルのローカル・バックアップを作成してください。

  • Oracle Key Vaultサーバー上の複数の仮想ウォレットに対して、同一の物理的なOracle Walletをアップロードしないでください。Oracle Walletを複数のエンドポイントと共有する場合は、エンドポイント・グループを作成します。

12.5 JKSおよびJCEKSキーストアのアップロードとダウンロード

okvutil uploadおよびokvutil downloadコマンドは、JKSおよびJCEKSキーストアをアップロードおよびダウンロードできます。

12.5.1 JKSおよびJCEKSキーストアのアップロードとダウンロードについて

okvutilユーティリティを使用して、JKSおよびJCEKSキーストアをアップロードおよびダウンロードします。

JKSおよびJCEKSキーストアを長期保持、リカバリおよび共有のためにOracle Key Vaultにアップロードし、必要に応じてそれらをエンドポイントにダウンロードできます。

ウォレットと同様に、JKSまたはJCEKSキーストアをアップロードする場合、Oracle Key Vaultはキーストア内の各項目を読み取ることができます。キーストアの内容は個々のアイテムとしてアップロードされ、最大128 KBのサイズのアイテムがサポートされています。

okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。JKSおよびJCEKSキーストアをダウンロードできますが、このキーストアのオブジェクトの「Extractable」属性がFALSEに設定されている場合、それらのオブジェクトはダウンロードできません。

12.5.2 JKSまたはJCEKSキーストアのアップロード

okvutil uploadコマンドは、JKSまたはJCEKSをOracle Key Vaultサーバーにアップロードできます。

okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。JKSおよびJCEKSキーストアをダウンロードできますが、このキーストアのオブジェクトの「Extractable」属性がFALSEに設定されている場合、それらのオブジェクトはダウンロードできません。
  1. JavaキーストアがあるサーバーがOracle Key Vaultエンドポイントとしてエンロールされ、プロビジョニングされていることを確認します。
  2. エンドポイントに対してアクセス制御が構成されていることを確認します。

    キーストアを仮想ウォレットにアップロードする場合、エンドポイントがこの仮想ウォレットへの読取り、変更およびウォレット管理アクセス権を持っていることを確認します。

  3. okvutil uploadコマンドを実行して、キーストアをアップロードします。

    次の例に、JKSおよびJCEKSキーストアを仮想ウォレットにアップロードする方法を示します。

    次の例は、JKSキーストアをアップロードする方法を示しています。

    # okvutil upload -l /etc/oracle/fin_jks.jks -t JKS -g FinanceGrp
    Enter source Java keystore password: Java_keystore_password
    Enter Oracle Key Vault endpoint password: Key_Vault_endpoint_password
    Upload succeeded
    

    この例では次のとおりです。

    • -lは、アップロードされるJavaキーストアの場所です。

    • -tは、JKSまたはJCEKSキーストアのタイプです。アップロードするときや後でダウンロードするときは、必ず正しいタイプのJavaキーストアをアップロードしてください。

    • -gは、Javaキーストアの内容のアップロード先となるOracle Key Vaultの仮想ウォレットです。

    次の例は、JCEKSキーストアをアップロードする方法を示しています。

    # okvutil upload -l /etc/oracle/hr_jceks.jceks -t JCEKS -g HRGrp
    Enter source Java keystore password: password
    Enter Oracle Key Vault endpoint password: password
    Upload succeeded
    

これでアップロードは完了です。必要に応じて、Javaキーストアを共有およびダウンロードする準備が整いました。

12.5.3 JKSまたはJCEKSキーストアのダウンロード

okvutil downloadコマンドは、アップロード済のJKSまたはJCEKSキーストアをダウンロードできます。

  1. JKSまたはJCEKSキーストアのセキュリティ・オブジェクトにTRUE「Extractable」属性が設定されていることを確認します。

    オブジェクトにFALSE「Extractable」属性設定がある場合、そのオブジェクトはダウンロードできません。「Extractable」属性設定を確認するには、「Object Details」ページにナビゲートします。「Keys & Wallets」タブを選択し、左側のナビゲーション・バーで「Keys & Secrets」を選択し、リストされているキーに対して「Edit」アイコンを選択します。「Extractable」属性設定は、「Advanced」セクションにリストされます。

  2. エンドポイントが、ダウンロードする仮想ウォレットにおける読取りアクセス権を持っていることを確認します。
  3. エンドポイント管理者として、コマンドラインから、okvutil downloadコマンドを実行してJavaキーストアをダウンロードします。

    たとえば:

    # okvutil download -l /etc/oracle/new_java_files/hr_jceks.jceks -t JCEKS -g HRGrp
    Enter new Java keystore password: password
    Confirm new Java keystore password: password
    Enter Oracle Key Vault endpoint password: Key_Vault_endpoint_password
    

    この例では次のとおりです。

    • -lは、アップロードされたJavaキーストアをダウンロードするディレクトリです。

    • -tは、JKSまたはJCEKSキーストアのタイプです。必ず正しいタイプのJavaキーストアをダウンロードしてください。

    • -gは、ダウンロードするオブジェクトの名前であり、この場合はJKSキーストアHRGrpです。

12.5.4 JKSおよびJCEKSキーストアのアップロードとダウンロードに関するガイドライン

JKSおよびJCEKSキーストアをアップロードおよびダウンロードする場合の推奨事項は、次のとおりです。

  • 元のJKSまたはJCEKSキーストアの内容に変更がある場合は、Key Vaultにキーストアの最新のコピーが保持されるように、Oracle Key Vaultにキーストアを再アップロードします。

  • okvutil uploadおよびokvutil downloadコマンドで上書き(-o)オプションを使用する予定がある場合は注意してください。このオプションは、ファイル内のデータを上書きします。-oオプションを使用するには、キーストア・ファイルをダウンロードする前にバックアップを作成してください。

  • Oracle Key Vaultサーバー上の複数の仮想ウォレットに対して、同一の物理的なJKSまたはJCEKSキーストアをアップロードしないでください。Javaキーストアを複数のエンドポイントと共有する場合は、エンドポイント・グループを作成します。

12.6 TDEマスター暗号化キーとしてのユーザー定義のキーの使用

生成したキーをインポートして、Oracle Key VaultでTransparent Data Encryption (TDE)マスター暗号化キーとして使用できます。

12.6.1 TDEマスター暗号化キーとしてのユーザー定義のキーの使用について

キー管理者ロールを持つユーザーは、ユーザー定義のキーを書込みアクセス権を持つ仮想ウォレットにアップロードできます。

これにより、Transparent Data Encryption (TDE)マスター暗号化キーとして使用できるようになります。この機能によって、キー管理者は、TDEデータ暗号化キーの暗号化に使用するマスター暗号化キーの作成に対する管理を強化できます。

okvutil uploadコマンドのtypeパラメータには、TDEマスター暗号化キーとして使用されるユーザー定義のキー・バイトをOracle Key VaultにアップロードできるオプションTDE_KEY_BYTESが含まれています。その後、データベースでADMINISTER KEY MANAGEMENT SQL文を実行して、キーをTDEマスター暗号化キーとしてアクティブ化する必要があります。

okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。TDEマスター暗号化キーをダウンロードできますが、このキーのオブジェクトの「Extractable」属性がFALSEに設定されている場合、それらのオブジェクトはダウンロードできません。

12.6.2 ステップ1: ユーザー定義のキーのアップロード

okvutil uploadコマンドを使用して、ユーザー定義のマスター暗号化キーをOracle Key Vaultにアップロードします。

ユーザー定義のキーのRAWバイト・データをテキスト・ファイルに格納して、Oracle Key Vaultにアップロードします。Oracle Key VaultにアップロードされたRAWバイト・データは、TDEマスター・キーおよびTDEマスター・キー識別子の一部を構成します。データベースがTDEマスター・キーおよびTDEマスター・キー識別子としてデータを識別およびアクティブ化できるように、追加のメタデータがRAWバイト・データに追加されます。テキスト・ファイルでは、TDEマスター・キーを構成するRAWバイト・データの先頭にTDEマスター・キーの接頭辞が付きます。TDEマスター・キー識別子を構成するRAWバイト・データには、TDEマスター・キー識別子の接頭辞が付きます。TDEマスター・キー識別子は、データベースのマスター暗号化キーを表します。キーがアクティブ化されると、TDEマスター・キー識別子V$ENCRYPTION_KEYSビューのKEY_ID列のサブセットとして構成するユーザー定義のRAWバイトが表示されます。Oracle Key Vaultでは、TDEマスター・キーおよびTDEマスター・キー識別子の値は、対称キーがKMIPオブジェクト型である管理対象KMIPオブジェクトとして格納されます。

okvutil uploadを使用してOracle Key Vaultで作成されたオブジェクトの「Extractable」属性設定は、エンドポイントから継承されることに注意してください。

  1. ユーザー定義のキーのRAWバイト・データを含むテキスト・ファイルを作成します。

    書式は次のとおりです。

    TDE Master Encryption Key Identifier: contiguous_TDE_Master_Encryption_Key_Identifier_bytes_encoded_in_32_hex_characters_(16_bytes_long)
    TDE Master Encryption Key: contiguous_TDE_Master_Encryption_Key_bytes_encoded_in_64_hex_characters_(32_bytes_long)

    たとえば:

    TDE Master Encryption Key Identifier: 1F1E1D1C1B1A10191817161514131210
    TDE Master Encryption Key: 97cefdb589ef06d56b8d536d3d38b7221a76dfffbf3f28a60d0965b9ae1a785b
  2. ファイルをtde_key_bytes.txtという名前で保存します。
  3. okvutil uploadコマンドを使用して、tde_key_bytes.txtをアップロードします。

    okvutil uploadコマンドの書式は次のとおりです。

    okvutil upload [--overwrite] --location location --type type [--group group] [--
    description description] [--verbose verbosity_level]

    例:

    $OKV_HOME/bin/okvutil upload -l /home/oracle/tde_key_bytes.txt -t TDE_KEY_BYTES -g "FIN_DATABASE_VIRTUAL_WALLET" -d "This key was created for Financial database use on 1st Mar 2019" 

    この例では次のとおりです。

    • -lには、tde_key_bytes.txtファイルへのパスを指定します。

    • -tには、アップロードするオブジェクトのタイプを指定します。ユーザー定義のキーをアップロードするには、タイプをTDE_KEY_BYTESとして指定します。

    • -gには、キーが追加されるOracle Key Vault仮想ウォレットの名前を指定します。

    • -dには、キーの説明を指定します。

    -tTDE_KEY_BYTESの場合、-dに指定された説明は、V$ENCRYPTION_KEYS動的ビューにタグとして表示されます。
  4. 必須パラメータを指定して、[Enter]を押します。
  5. Oracle Key Vaultエンドポイント・パスワードを入力して、[Enter]を押します。
    Upload succeededというメッセージが表示されます。
    $OKV_HOME/bin/okvutil upload -l /home/oracle/tde_key_bytes.txt -t TDE_KEY_BYTES -g "FIN_DATABASE_VIRTUAL_WALLET" -d "This key was created for Financial database use on 1st Mar 2019" 
    Enter Oracle Key Vault endpoint password:
    Upload succeeded
  6. tde_key_bytes.txtファイルを慎重に削除します。
ユーザー定義のキーのRAWバイト・データがアップロードされます。次のステップは、ユーザー定義のキーをTDEマスター暗号化キーとしてアクティブ化することです。

12.6.3 ステップ2: TDEマスター暗号化キーとしてのユーザー定義のキーのアクティブ化

ユーザー定義のキーをアップロードした後は、そのキーをTDEマスター暗号化キーとしてアクティブ化する準備が整います。

TDEマスター・キー識別子用にOracle Key VaultにアップロードされるRAWバイト・データは、Oracle Key Vaultの対応するTDEマスター暗号化キーとして作成されるKMIPオブジェクトのNAME属性として表示されます。

  1. キー管理者ロールを持っているユーザーまたは仮想ウォレットへのアクセス権を持っているユーザーとして、Oracle Key Vault管理コンソールにログインします。
  2. 「Keys & Wallets」タブを選択してから、左側のナビゲーション・バーで「Keys & Secrets」を選択します。
  3. 「Object Details」ページで、「Advanced」を展開します。

    必要なキーIDが「Names」領域に表示されます。キーIDには ORACLE.TDE.HSM.MK.06という接頭辞が付いています。

    たとえば:

    ORACLE.TDE.HSM.MK.061F1E1D1C1B1A10191817161514131210

    TDEマスター暗号化キー識別子には、追加のメタデータの接頭辞が付いたユーザー定義のRAWバイト・データが含まれます。

  4. 接頭辞ORACLE.TDE.HSM.MKの後に表示されるキーIDをコピーして保存します

    たとえば:

    061F1E1D1C1B1A10191817161514131210
  5. ADMINISTER KEY MANAGEMENT SQL文を実行する権限を持つユーザーとしてOracleデータベースに接続します。
    たとえば:
    sqlplus C##crypto_admin/ as syskm
  6. ADMINISTER KEY MANAGEMENTコマンドを使用して、TDEマスター暗号化キーとしてキーをアクティブ化します。
    ADMINISTER KEY MANAGEMENT USE KEY
    '061F1E1D1C1B1A10191817161514131210' IDENTIFIED BY <OKV-pwd> | EXTERNAL STORE;password;

    V$ENCRYPTION_KEYSビューのTAG列に、新しく作成されたキーの識別子を問い合せることができます。