9 分離モードの管理

分離モードの管理とは、キーストア、マスター暗号化キーおよび透過的データベース暗号化(TDE)の一般的な機能を管理することを意味します。

9.1 分離モードでのキーストアおよびTDEマスター暗号化キーの管理

分離モードでキーストアおよびTDEマスター暗号化キーを作成すると、暗号化キーに対してキー更新やタグ付けなどの管理タスクを実行できるようになります。

外部キーストアのパスワードを変更するには、外部キーストアの管理インタフェースを使用する必要があります。ADMINISTER KEY MANAGEMENT文を使用して、この操作を実行することはできません。

9.1.1 分離モードでのキーストア・パスワードの変更

PDBが分離モードの場合に、ソフトウェア・キーストアのパスワードを変更できます。

外部キーストアのパスワードを変更するには、外部キーストアの管理インタフェースを使用する必要があります。ADMINISTER KEY MANAGEMENT文を使用して、この操作を実行することはできません。

9.1.1.1 分離モードでのパスワード保護されたソフトウェア・キーストアのパスワードの変更

分離モードでパスワード保護されたソフトウェア・キーストアのパスワードを変更するには、ADMINISTER KEY MANAGEMENT文を使用する必要があります。

このパスワードは、サイトのセキュリティ・ポリシーやコンプライアンス・ガイドライン、およびその他のセキュリティ要件に従って、いつでも変更できます。パスワードを変更するコマンドの一部として、WITH BACKUP句を指定する必要があるため、常に現在のキーストアのバックアップが作成されます。パスワードの変更操作中、暗号化や復号化などの透過的データ暗号化操作は正常に動作し続けます。このパスワードはいつでも変更できます。このパスワードは、安全性が損なわれた可能性があると思われる場合には変更することをお薦めします。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、キーストアのパスワードを変更します。
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    [FORCE KEYSTORE] 
    IDENTIFIED BY
    old_password SET new_password 
    [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • FORCE KEYSTOREは、キーストアが閉じている場合、自動ログイン・キーストアが構成されていて現在開いている場合、またはパスワード保護されたキーストアが構成されていて現在閉じている場合に、パスワード保護されたキーストアをこの操作用に一時的に開きます。

    • old_passwordは、変更する現在のキーストア・パスワードです。

    • new_passwordは、キーストア用に設定する新しいパスワードです。

    次の例では、キーストアのバックアップを作成してから、キーストアのパスワードを変更します。

    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
    
    keystore altered.

    この例では同じ操作を実行しますが、自動ログイン・ソフトウェア・キーストアが使用されている場合や、パスワード保護されたソフトウェア・キーストアが閉じている場合のために、FORCE KEYSTORE句を使用します。

    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD
    FORCE KEYSTORE 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
    
    keystore altered.
9.1.1.2 分離モードでの外部キーストアのパスワードの変更

外部キーストアのパスワードを変更するには、外部キーストアを閉じた後、外部キーストアの管理インタフェースからパスワードを変更する必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 外部キーストアを閉じます。
    • たとえば:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY "external_key_manager_password";
      
    • パスワードが外部に格納されている外部キーストアの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY EXTERNAL STORE;
  3. "new_external_key_manager_password"を使用するように外部ストアの資格証明を更新します。

    現時点では、外部ストアに以前の資格証明が含まれていますが、これは機能しなくなっています。

    たとえば:

    ADMINISTER KEY MANAGEMENT
    UPDATE SECRET 'new_external_key_manager_password' 
    FOR CLIENT 'TDE_WALLET' 
    TO LOCAL AUTO_LOGIN KEYSTORE '/etc/ORACLE/WALLETS/orcl/external_store';
  4. 外部キーストアを開きます。

    たとえば:

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

    パスワードが外部に格納されている外部キーストアの場合:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY EXTERNAL STORE;

9.1.2 分離モードでのパスワード保護されたソフトウェア・キーストアのバックアップ

ADMINISTER KEY MANAGEMENT文のBACKUP KEYSTORE句により、パスワード保護されたソフトウェア・キーストアをバックアップします。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、キーストアをバックアップします。
    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    [USING 'backup_identifier'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | software_keystore_password] 
    [TO 'keystore_location'];
    

    ここでは次のように指定します。

    • USING backup_identifierは、バックアップを識別するために指定できるオプション文字列です。この識別子は、一重引用符(' ')で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(ewallet_time-stamp_emp_key_backup.p12など)。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • IDENTIFIED BYは、パスワード保護されたキーストアに対してBACKUP KEYSTORE操作を行う場合に必須です。その理由は、バックアップは既存のキーストアのコピーにすぎませんが、パスワード保護されたキーストアのTDEマスター暗号化キーのステータスをBACKED UPに設定する必要があり、この変更を行うためにキーストア・パスワードが必要になるためです。

    • keystore_locationは、バックアップ・キーストアが格納されるパスです。PDBロックダウン・プロファイルのEXTERNAL_FILE_ACCESS設定がPDBでブロックされている場合、またはPDBの作成時にPATH_PREFIX変数が設定されている場合は、この設定がPDBに制限されます。keystore_locationを指定しない場合、バックアップは元のキーストアと同じディレクトリに作成されます。この場所は一重引用符(' ')で囲みます。

    次の例は、ソフトウェア・キーストアをソース・キーストアと同じ場所にバックアップします。

    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    USING 'hr.emp_keystore' 
    FORCE KEYSTORE 
    IDENTIFIED BY 
    'software_keystore_password';
    
    keystore altered.
    

    次に示すバージョンでは、キーストアのパスワードが外部に保管されているため、EXTERNAL STORE句が使用されています。

    ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE 
    USING 'hr.emp_keystore' 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE;

    この文を実行すると、ewallet_identifier.p12ファイル(ewallet_time-stamp_hr.emp_keystore.p12など)が、キーストアのバックアップ場所に作成されます。

9.1.3 分離モードでのソフトウェア・キーストアのマージ

分離モードで、ソフトウェア・キーストアをマージできます。

9.1.3.1 分離モードでの1つのソフトウェア・キーストアの既存のソフトウェア・キーストアへのマージ

分離モードで、MERGE KEYSTORE句を含むADMINISTER KEY MANAGEMENT文を使用して、1つのソフトウェア・キーストアを別の既存のソフトウェア・キーストアにマージできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、ソフトウェア・キーストアをマージします。
    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'keystore1_location' 
    [IDENTIFIED BY software_keystore1_password] 
    INTO EXISTING KEYSTORE 'keystore2_location' 
    IDENTIFIED BY software_keystore2_password 
    [WITH BACKUP [USING 'backup_identifier]];
    

    ここでは次のように指定します。

    • keystore1_locationは、マージ後も変更されないまま残される1つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、1つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore1_passwordは、1つ目のキーストアのパスワードです。

    • keystore2_locationは、1つ目のキーストアがマージされる2つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • software_keystore2_passwordは、2つ目のキーストアのパスワードです。

ターゲット・キーストア(keystore2)は、キーストアのマージ操作後もパスワード保護されたキーストアのままになります。
9.1.3.2 分離モードでの2つのソフトウェア・キーストアの3番目の新しいキーストアへのマージ

分離モードで、2つのソフトウェア・キーストアを3番目の新しいキーストアにマージして、既存の2つのキーストアを変更せずに、新しいキーストアに両方のソース・キーストアのキーを格納できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、キーストアをマージします。
    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE 'keystore1_location' 
    [IDENTIFIED BY software_keystore1_password] AND KEYSTORE 'keystore2_location' 
    [IDENTIFIED BY software_keystore2_password] 
    INTO NEW KEYSTORE 'keystore3_location' 
    IDENTIFIED BY software_keystore3_password;
    

    ここでは次のように指定します。

    • keystore1_locationは、マージ後も変更されないまま残される1つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、1つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore1_passwordは、1つ目のキーストアの現在のパスワードです。

    • keystore2_locationは、2つ目のキーストアのディレクトリの場所です。このパスは、一重引用符(' ')で囲みます。

    • IDENTIFIED BY句は、2つ目のキーストアがパスワード保護されたキーストアの場合は必要です。software_keystore2_passwordは、2つ目のキーストアの現在のパスワードです。

    • keystore3_locationは、マージされた新しいキーストアのディレクトリの場所を指定します。このパスは、一重引用符(' ')で囲みます。その場所に既存のキーストアがすでに存在する場合は、コマンドが終了してエラーが発生します。

    • software_keystore3_passwordは、マージ後のキーストアの新しいパスワードです。

    次の例は、自動ログイン・ソフトウェア・キーストアをパスワード保護されたキーストアとマージして、マージしたパスワード保護されたキーストアを新しいロケーションに作成します。

    ADMINISTER KEY MANAGEMENT MERGE KEYSTORE '/etc/ORACLE/KEYSTORE/DB1' 
    AND KEYSTORE '/etc/ORACLE/KEYSTORE/DB2' 
    IDENTIFIED BY existing_password_for_keystore_2 
    INTO NEW KEYSTORE '/etc/ORACLE/KEYSTORE/DB3' 
    IDENTIFIED BY new_password_for_keystore_3;
    
    keystore altered.

9.1.4 分離モードでキーストアを閉じる

システム表領域が暗号化されていないかぎり、分離モードでソフトウェア・キーストアと外部キーストアの両方を閉じることができます。

9.1.4.1 分離モードでソフトウェア・キーストアを閉じる

分離モードで、パスワード保護されたキーストア、自動ログイン・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを閉じることができます。

アクセス時に自動的に開かれる自動ログイン・キーストアの場合は、まず自動的に開くことができない新しい場所に移動してから、手動で閉じる必要があります。自動ログイン・キーストアからパスワード保護されたキーストアに構成を変更する場合は、自動ログイン・キーストアが使用されなくなるように構成を変更し(自動ログイン・キーストアを自動的に開くことができない別の場所に移動する)、その後、自動ログイン・キーストアを閉じる必要があります。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、ソフトウェア・キーストアを閉じます。
    次の2つのADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE文の相違点は、パスワード保護されたキーストアの場合はパスワードの指定が必要になる点だけです。
    • パスワード保護されたソフトウェア・キーストアの場合:
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
      IDENTIFIED BY [EXTERNAL STORE | software_keystore_password];

      パスワード保護されたキーストアを閉じると、すべての暗号化操作と復号化操作が無効になります。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

    • 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの場合は、次のように指定します。
      ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE;

      この文を実行しても、キーストアのステータスがCLOSEDに変更されるとはかぎりません。その理由は、cwallet.ssoファイルもOracle Databaseが検出できない場所に移動しないかぎり、バックグラウンド・ジョブまたはバックグラウンド・プロセスによって自動ログイン・キーストアが自動的に再オープンされる可能性があるためです。このため、ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE文が正常に実行された後でも、ステータスが常にOPENと表示される可能性があります。

9.1.4.2 分離モードで外部キーストアを閉じる

外部キーストアを閉じるには、SET KEYSTORE CLOSE句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。

Oracle Key Vaultキーストアの場合は、パスワードを入力するだけで済みます。IDENTIFIED BY句でユーザー名を指定することはできません。パスワードは二重引用符で囲みます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、外部キーストアを閉じます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"];
キーストアを閉じると、すべての暗号化操作と復号化操作が無効になります。データを暗号化または復号化しようとしたり、暗号化データにアクセスしようとすると、エラーが発生します。

9.1.5 分離モードでのユーザー定義のTDEマスター暗号化キーの作成

ユーザー定義のTDEマスター暗号化キーを作成するには、SET | CREATE [ENCRYPTION] KEY句を含むADMINISTER KEY MANAGEMENT文を使用します。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、ユーザー定義のTDEマスター暗号化キーを作成します。
    ADMINISTER KEY MANAGEMENT SET | CREATE [ENCRYPTION] KEY
    'mkid:mk | mk' 
    [USING ALGORITHM 'algorithm'] 
    [FORCE KEYSTORE]
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];

    ここでは次のように指定します。

    • SET | CREATE: マスターを作成して、すぐにTDEマスター暗号化キーをアクティブ化する場合はSETと入力し、後から使用するためのキーを作成して、まだアクティブ化しない場合はCREATEと入力します。

    • mkidおよびmk:

      • mkidは、TDEマスター暗号化キーIDであり、16バイトの16進数エンコード値です。ユーザーが指定するか、Oracle Databaseに生成させることができます。

      • mkは、TDEマスター暗号化キーであり、32バイト(AES256ARIA256およびGOST256アルゴリズムの場合)または16バイト(SEED128アルゴリズムの場合)のいずれかの16進数エンコード値です。ユーザーが指定するか、Oracle Databaseに生成させることができます。

        ノート:

        Oracle Database 23c以降では、GOSTおよびSEEDアルゴリズムのTransparent Data Encryption (TDE)復号化ライブラリは非推奨になり、GOSTおよびSEEDへの暗号化はサポートされなくなります。Oracle Database 23c以降、GOSTおよびSEEDアルゴリズムのTransparent Data Encryption (TDE)暗号化ライブラリはサポートされなくなり、削除されました。GOSTおよびSEED復号化ライブラリは非推奨です。どちらも、HP Itaniumプラットフォームでは削除されます。

        GOST 28147-89はロシア政府によって非推奨とされ、SEEDは韓国政府によって非推奨とされました。韓国政府が承認したTDE暗号化が必要である場合は、かわりにARIAを使用します。GOST 28147-89を使用している場合は、サポートされている別のTDEアルゴリズムを使用して、復号化および暗号化する必要があります。GOST 28147-89およびSEEDの復号化アルゴリズムはOracle Database 23cに含まれていますが、非推奨であり、GOST暗号化アルゴリズムはOracle Database 23cでサポートが終了しました。TDE暗号化にGOSTまたはSEEDを使用している場合は、Oracle Database 23cにアップグレードする前に、別のアルゴリズムで復号化および暗号化することをお薦めします。ただし、HP Itaniumプラットフォームを除き、Oracle Database 23cではGOSTおよびSEED復号化ライブラリを使用できるため、アップグレード後に復号化することもできます。

      mkid:mk|mkid句を省略したが、mk値を含めた場合、Oracle Databaseはmkmkidを生成します。

      mkid:mk|mkid句全体を省略した場合、Oracle Databaseはこれらの値を生成します。

    • USING ALGORITHM: サポートされている次のアルゴリズムのいずれかを指定します。

      • AES256

      • ARIA256

      • SEED128 (非推奨)

      • GOST256 (非推奨)

      アルゴリズムを省略した場合は、デフォルトのAES256が使用されます。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    次の例には、ユーザー作成のTDEマスター暗号化キーが含まれますが、TDEマスター暗号化キーIDは含まれないため、TDEマスター暗号化キーIDが生成されます。

    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    '3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
    USING ALGORITHM 'ARIA256'
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password WITH BACKUP;

    次の例では、マスター暗号化IDおよびTDEマスター暗号化キーの両方のためにユーザー定義のキーが作成されます。アルゴリズムの指定が省略されているため、デフォルトのアルゴリズムAES256が使用されます。

    ADMINISTER KEY MANAGEMENT CREATE ENCRYPTION KEY 
    '10203040506070801112131415161718:3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
    IDENTIFIED BY keystore_password WITH BACKUP;

9.1.6 分離モードでの後で使用するためのTDEマスター暗号化キーの作成

分離モードで、後で使用するTDEマスター暗号化キーを作成するには、事前にキーストアが開かれている必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEマスター暗号化キーを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEY [USING TAG 'tag']
    [FORCE KEYSTORE]
    IDENTIFIED BY EXTERNAL STORE | keystore_password
    WITH BACKUP [USING 'backup_identifier'];

    ここでは次のように指定します。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • IDENTIFIED BYは、パスワード保護されたキーストアに対してBACKUP KEYSTORE操作を行う場合に必須です。その理由は、バックアップは既存のキーストアのコピーにすぎませんが、パスワード保護されたキーストアのTDEマスター暗号化キーのステータスをBACKED UPに設定する必要があり、この変更を行うためにキーストア・パスワードが必要になるためです。

    • keystore_locationは、バックアップ・キーストアが格納されるパスです。PDBロックダウン・プロファイルのEXTERNAL_FILE_ACCESS設定がPDBでブロックされている場合、またはPDBの作成時にPATH_PREFIX変数が設定されていない場合は、この設定がPDBに制限されます。keystore_locationを指定しない場合、バックアップは元のキーストアと同じディレクトリに作成されます。この場所は一重引用符(' ')で囲みます。

    たとえば:

    ADMINISTER KEY MANAGEMENT CREATE KEY 
    FORCE KEYSTORE 
    IDENTIFIED BY keystore_password
    WITH BACKUP;
  3. 必要に応じて、TDEマスター暗号化キーをアクティブ化します。
    1. キーIDを確認します。
      SELECT KEY_ID FROM V$ENCRYPTION_KEYS; 
      
      KEY_ID
      ----------------------------------------------------
      AWsHwVYC2U+Nv3RVphn/yAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    2. このキーIDを使用して、キーをアクティブ化します。
      ADMINISTER KEY MANAGEMENT USE KEY 
      'AWsHwVYC2U+Nv3RVphn/yAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
      USING TAG 'quarter:second;description:Activate Key on standby' 
      IDENTIFIED BY password 
      WITH BACKUP;

9.1.7 分離モードでのTDEマスター暗号化キーのアクティブ化

分離モードでTDEマスター暗号化キーをアクティブ化するには、キーストアを開き、USE KEY句を含むADMINISTER KEY MANAGEMENTを使用する必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_KEYSビューのKEY_ID列を問い合せて、キーの識別子を確認します。
    たとえば:
    SELECT KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    KEY_ID
    ----------------------------------------------------
    ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    
  3. このキー識別子を使用して、次の構文を使用してTDEマスター暗号化キーをアクティブ化します。
    ADMINISTER KEY MANAGEMENT USE KEY 'key_identifier_from_V$ENCRYPTION_KEYS' 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    たとえば:

    ADMINISTER KEY MANAGEMENT USE KEY 'ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password
    WITH BACKUP;

9.1.8 分離モードでのTDEマスター暗号化キーのキー更新

SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用して、TDEマスター暗号化キーをキー更新できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 自動ログインを有効化したキーストアのTDEマスター暗号化キーをキー更新する場合、.ssoファイルによって識別される自動ログイン・キーストアと.p12ファイルによって識別される暗号化キーストアの両方が存在することを確認する必要があります。
    これらのファイルのロケーションは、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せることで確認できます。すべてのデータベース・インスタンスのWRL_PARAMETER値を見つけるには、GV$ENCRYPTION_WALLETビューを問い合せます。
  3. 次の構文を使用して、TDEマスター暗号化キーをキー更新します。
    ADMINISTER KEY MANAGEMENT SET [ENCRYPTION] KEY 
    [FORCE KEYSTORE]
    [USING TAG 'tag_name'] 
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • tagは、定義する関連の属性および情報です。この設定は、一重引用符(' ')で囲みます。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • IDENTIFIED BYは次のいずれかの設定にできます。

      • EXTERNAL STOREは、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。

      • keystore_passwordは、このキーストア用に作成されたパスワードです。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
    
    keystore altered.
    

9.1.9 分離モードでのTDEマスター暗号化キーの新しいキーストアへの移動

分離モードでは、既存のTDEマスター暗号化キーを既存のソフトウェア・パスワード・キーストアから新しいキーストアに移動できます。

この機能を使用すると、キーストアの一部またはすべてのキーを新しいキーストアに移動できます。キーを新しいキーストアに移動し、古いキーストアをバックアップした後は、必要に応じてこの古いキーストアを削除できます。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_KEYSビューのCREATION_TIME列とKEY_ID列を問い合せて、移動するキーのキー識別子を確認します。
    たとえば:
    SELECT CREATION_TIME, KEY_ID FROM V$ENCRYPTION_KEYS; 
    
    CREATION TIME
    ----------------------------------------------------
    22-SEP-19 08.55.12.956170 PM +00:00
    
    KEY_ID
    ----------------------------------------------------
    ARaHD762tUkkvyLgPzAi6hMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  3. 次の構文を使用して、新しいキーストアにキーを移動します。
    ADMINISTER KEY MANAGEMENT 
    MOVE [ENCRYPTION] KEYS
    TO NEW KEYSTORE 'keystore_location1'
    IDENTIFIED BY keystore1_password
    FROM [FORCE] KEYSTORE
    IDENTIFIED BY keystore_password
    [WITH IDENTIFIER IN
    { 'key_identifier' [, 'key_identifier' ]... | ( subquery ) }]
    [WITH BACKUP [USING 'backup_identifier'] ];

    ここでは次のように指定します。

    • keystore_location1は、新しいキーストア.p12ファイルを格納するwalletディレクトリへのパスです。デフォルトでは、このディレクトリは、$ORACLE_BASE/admin/db_unique_name/walletにあります。

    • keystore1_passwordは、新しいキーストアの移動元であるキーストアのパスワードです。

    • FORCEは、この操作のためにキーストアを一時的に開きます。

    • keystore_passwordは、キーの移動元であるキーストアのパスワードです。

    • subqueryは、必要なキー識別子を正確に確認するために使用できます。

    • backup_identifierは、バックアップの説明(オプション)です。backup_identifierは、一重引用符(' ')で囲みます。

    たとえば:

    ADMINISTER KEY MANAGEMENT MOVE KEYS 
    TO NEW KEYSTORE '$ORACLE_BASE/admin/orcl/wallet' 
    IDENTIFIED BY keystore_password 
    FROM FORCE KEYSTORE 
    IDENTIFIED BY keystore_password 
    WITH IDENTIFIER IN 
    (SELECT KEY_ID FROM V$ENCRYPTION_KEYS WHERE ROWNUM < 2)
    WITH BACKUP;
    キーが新しいキーストアに移されると、古いキーストアからそれらのキーがなくなります。
  4. 古いキーストアを削除するには、walletディレクトリに移動して、次の手順を実行します。
    1. 削除するキーストアを含む.p12ファイルをバックアップします。
    2. キーストアを含む.p12ファイルを手動で削除します。
    キーストアの場所を検索するには、キーストアを開いてから、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

9.1.10 分離モードでのカスタム属性タグの作成

分離モードでカスタム属性タグを作成するには、ADMINISTER KEY MANAGEMENT文のSET TAG句を使用する必要があります。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 必要に応じて、V$ENCRYPTION_KEY動的ビューのTAG列を問い合せて、TDEマスター暗号化キーの既存のタグのリストを確認します。
    TDEマスター暗号化キーの新しいタグを作成すると、そのTDEマスター暗号化キーの既存のタグは上書きされます。
  3. 次の構文を使用して、カスタム属性タグを作成します。
    ADMINISTER KEY MANAGEMENT SET TAG 'tag' 
    FOR 'master_key_identifier' 
    [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • tagは、定義する関連の属性または情報です。この情報は一重引用符(' ')で囲みます。

    • master_key_identifierは、tagが設定されるTDEマスター暗号化キーを識別します。TDEマスター暗号化キー識別子のリストを確認するには、V$ENCRYPTION_KEYS動的ビューのKEY_ID列を問い合せます。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • IDENTIFIED BYは次のいずれかの設定にできます。

      • EXTERNAL STOREは、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。

      • keystore_passwordは、このキーストア用に作成されたパスワードです。

      • backup_identifierは、タグの値を定義します。この設定は一重引用符(' ')で囲み、それぞれの値をコロンで区切ります。

    たとえば、2つの値(1番目は特定のセッションID、2番目は特定の端末IDを取得)を使用するタグを作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    USING TAG 'sessionid=3205062574:terminal=xcvt' 
    IDENTIFIED BY keystore_password 
    WITH BACKUP;
    
    keystore altered.
    

    セッションID (3205062574)と端末ID (xcvt)はどちらも、SYS_CONTEXT関数でUSERENVネームスペースを使用するか、USERENV関数を使用することで、値を導出できます。

9.1.11 分離モードでのTDEマスター暗号化キーのエクスポートおよびインポート

分離モードでは、様々な方法でTDEマスター暗号化キーをエクスポートおよびインポートできます。

9.1.11.1 分離モードでのTDEマスター暗号化キーのエクスポート

分離モードで、ADMINISTER KEY MANAGEMENT文を使用して、TDEマスター暗号化キーをエクスポートできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEマスター暗号化のキーストアをエクスポートします。
    ADMINISTER KEY MANAGEMENT EXPORT [ENCRYPTION] KEYS 
    WITH SECRET "export_secret" 
    TO 'file_path' 
    [FORCE KEYSTORE]
    IDENTIFIED BY [EXTERNAL STORE | keystore_password]
    [WITH IDENTIFIER IN 'key_id1', 'key_id2', 'key_idn' | (SQL_query)];
    

    ここでは次のように指定します。

    • export_secretは、エクスポートするキーが含まれるエクスポート・ファイルを暗号化するために指定できるパスワードです。このシークレットを二重引用符(" ")で囲むか、シークレットにスペースが使用されていない場合は引用符を省略できます。

    • file_pathは、キーのエクスポート先ファイルの完全パスと名前です。このパスは、一重引用符(' ')で囲みます。標準ファイル・システムにのみエクスポートできます。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • key_id1key_id2key_idnは、エクスポートするTDEマスター暗号化キーの1つ以上のTDEマスター暗号化キー識別子の文字列です。各キー識別子はカンマで区切り、それぞれのキー識別子を一重引用符(' ')で囲みます。TDEマスター暗号化キーの識別子を確認するには、V$ENCRYPTION_KEYS動的ビューのKEY_ID列を問い合せます。

    • SQL_queryは、TDEマスター暗号化キー識別子のリストをフェッチする問合せです。これによって、通常はTDEマスター暗号化キーの識別子が含まれる1つの列のみが返されます。この問合せは、現在のユーザー権限で実行されます。

9.1.11.2 分離モードでのTDEマスター暗号化キーのインポート

IMPORT [ENCRYPTION] KEYS WITH SECRET句を含むADMINISTER KEY MANAGEMENT文によって、TDEマスター暗号化キーをインポートできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、TDEマスター暗号化のキーストアをインポートします。
    ADMINISTER KEY MANAGEMENT IMPORT [ENCRYPTION] KEYS 
    WITH SECRET "import_secret"  
    FROM 'file_name'  
    [FORCE KEYSTORE]
    IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
    [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • import_secretは、エクスポート操作時にキーの暗号化に使用されたものと同じパスワードです。このシークレットを二重引用符(" ")で囲むか、シークレットにスペースが使用されていない場合は引用符を省略できます。

    • file_nameは、キーのインポート元ファイルの完全パスと名前です。この設定は、一重引用符(' ')で囲みます。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

9.1.12 分離モードでのOracle Databaseシークレットの保管

シークレットとは、Oracle GoldenGateなどの外部クライアントをデータベースに統合するOracle Databaseの内部機能をサポートするデータです。

9.1.12.1 分離モードでのキーストアへのOracle Databaseシークレットの格納について

キーストアでは、Oracle Databaseの内部機能をサポートするシークレットを格納したり、Oracle GoldenGateなどの外部クライアントを統合できます。

秘密キーはOracleの識別子規則に従った文字列である必要があります。既存のキーストアでクライアントのシークレットを追加、更新または削除できます。Oracle GoldenGateのExtractプロセスでは、データ・ファイル内およびREDOまたはUNDOログ内のデータを復号化するためにデータ暗号化キーが必要です。キーは、Oracle DatabaseとOracle GoldenGateクライアントの間でキーを共有するときに、共有シークレットによって暗号化されます。ソフトウェア・キーストアには、共有シークレットが格納されます。

サイトの要件によっては、外部キーストアが構成されている場合でも、自動的にキーストアを開く操作が必要となる場合があります。そのため、外部キー・マネージャのパスワードを自動ログイン・ソフトウェア・キーストアに格納し、外部キー・マネージャで自動ログイン機能を有効にすることができます。また、Oracle Database側では、データベース用の資格証明を格納して、ソフトウェア・キーストアで外部ストレージ・サーバーにログインできます。

Oracle Databaseのシークレットをソフトウェア・キーストアと外部キーストアの両方に格納できます。

  • ソフトウェア・キーストア: シークレットをパスワードベースのソフトウェア・キーストア、自動ログイン・ソフトウェア・キーストア、およびローカル自動ログイン・ソフトウェア・キーストアに格納できます。シークレットを自動ログイン(または自動ログイン・ローカル)・キーストアに格納する場合は、次の点に注意してください。

    • 自動ログイン・ソフトウェア・キーストアがその対応するパスワードベースのソフトウェア・キーストアと同じロケーションにある場合、シークレットは自動的に追加されます。

    • 自動ログイン・ソフトウェア・キーストアがその対応するパスワードベースのソフトウェア・キーストアと異なるロケーションにある場合、パスワードベースのキーストアから自動ログイン・キーストアを再度作成して、2つのキーストアの同期を維持する必要があります。

  • 外部キーストア: シークレットを標準外部キー・マネージャに格納できます。

9.1.12.2 分離モードでのソフトウェア・キーストアへのOracle Databaseシークレットの保管

ADMINISTER KEY MANAGEMENT ADD SECRET|UPDATE SECRET|DELETE SECRET文を使用して、キーストアでのシークレットの追加、シークレットの更新、およびシークレットの削除を行うことができます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、ソフトウェア・キーストア内のデータベース・シークレットを追加、更新または削除します。
    • シークレットを追加するには:
      ADMINISTER KEY MANAGEMENT
      ADD SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
      [WITH BACKUP [USING backup_id]]];
    • シークレットを更新するには:
      ADMINISTER KEY MANAGEMENT
      UPDATE SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [WITH BACKUP [USING backup_id]] 
      | [FORCE KEYSTORE]  
      IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
      [WITH BACKUP [USING backup_id]]]; 
    • シークレットを削除するには:
      ADMINISTER KEY MANAGEMENT
      DELETE SECRET FOR CLIENT 'client_identifier' 
      [FROM [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY [EXTERNAL STORE | keystore_password] 
      [WITH BACKUP [USING backup_id]]]; 

    仕様部は次のとおりです。

    • secretは、格納、更新、または削除するクライアントの秘密キーです。既存のシークレットおよびそれらのクライアント識別子に関する情報を確認するには、V$CLIENT_SECRETS動的ビューを問い合せます。

    • client_identifierは、シークレットの識別に使用される英数字の文字列です。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

9.1.12.3 例: ソフトウェア・キーストアへのOracle Key Vaultパスワードの追加

ADMINISTER KEY MANAGEMENT ADD SECRET文によって、ソフトウェア・キーストアにOracle Key Vaultパスワードを追加できます。

例9-1に、既存のソフトウェア・キーストアにOracle Key Vaultパスワードをシークレットとして追加する方法を示します(たとえば、Oracle Key Vaultへの移行後、Oracle Key Vaultのパスワードを古いTDEソフトウェア・キーストアに追加して、Oracle Key Vaultへの自動オープン接続を設定できます)。

例9-1 ソフトウェア・キーストアへのOracle Databaseのシークレットの追加

ADMINISTER KEY MANAGEMENT 
ADD SECRET 'external_key_manager_password' FOR CLIENT 'OKV_PASSWORD' 
IDENTIFIED BY software_keystore_password WITH BACKUP;

ソフトウェア・キーストアからOracle Key Vaultに移行する前に、ソフトウェア・キーストアをOracle Key Vaultのそのエンドポイントの仮想ウォレットにアップロードできます。移行後、そのキーがOracle Key Vaultにあるため、古いTDEウォレットを削除できます。ウォレットがまだ存在しない場合に自動オープンのOracle Key Vaultを構成するには、次の文を実行します。

ADMINISTER KEY MANAGEMENT ADD SECRET 'external_keystore_password' 
FOR CLIENT 'OKV_PASSWORD' INTO [LOCAL] AUTO_LOGIN KEYSTORE 'WALLET_ROOT/tde';

TDE_CONFIGURATION='KEYSTORE_CONFIGUARTION=OKV'の設定は、Oracle Key Vaultへのパスワードで保護された接続用です。Oracle Key Vaultのパスワードが既存または新しく作成されたウォレットに挿入された後、TDE_CONFIGURATION設定を'KEYSTORE_CONFIGURATION=OKV|FILE'に変更します。

9.1.12.4 例: ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードの変更

ADMINISTER KEY MANAGEMENT UPDATE SECRET文によって、ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードを変更できます。

例9-2に、ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードを変更する方法を示します。

例9-2 ソフトウェア・キーストアでのOracle Key Vaultパスワード・シークレットの変更

ADMINISTER KEY MANAGEMENT
UPDATE SECRET admin_password FOR CLIENT 'admin@myhost' 
USING TAG 'new_host_credentials' FORCE KEYSTORE
IDENTIFIED BY software_keytore_password;

次のバージョンでは、キーストアのパスワードは外部ストアにあります。

DMINISTER KEY MANAGEMENT
UPDATE SECRET admin_password FOR CLIENT 'admin@myhost' 
USING TAG 'new_host_credentials' FORCE KEYSTORE
IDENTIFIED BY EXTERNAL STORE;
9.1.12.5 例: ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードの削除

ADMINISTER KEY MANAGEMENT DELETE SECRET文によって、ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードを削除できます。

例9-3に、ソフトウェア・キーストアにシークレットとして格納されているOracle Key Vaultパスワードを削除する方法を示します。

例9-3 ソフトウェア・キーストアでのOracle Key Vaultパスワード・シークレットの削除

ADMINISTER KEY MANAGEMENT 
DELETE SECRET FOR CLIENT 'OKV_PASSWORD' 
FORCE KEYSTORE
IDENTIFIED BY password WITH BACKUP;

次のバージョンでは、キーストアのパスワードは外部ストアにあります。

ADMINISTER KEY MANAGEMENT 
DELETE SECRET FOR CLIENT 'OKV_PASSWORD'
FORCE KEYSTORE 
IDENTIFIED BY EXTERNAL STORE WITH BACKUP;
9.1.12.6 分離モードでの外部キーストアへのOracle Databaseのシークレットの保管

ADMINISTER KEY MANAGEMENT ADD SECRET|UPDATE SECRET|DELETE SECRET文を使用して、キーストアでのシークレットの追加、シークレットの更新、およびシークレットの削除を行うことができます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、外部キーストア内のデータベース・シークレットを追加、更新または削除します。
    • シークレットを追加するには:
      ADMINISTER KEY MANAGEMENT
      ADD SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
      [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "external_key_manager_password"]
      [WITH BACKUP [USING backup_id]];
    • シークレットを更新するには:
      ADMINISTER KEY MANAGEMENT
      UPDATE SECRET 'secret' FOR CLIENT 'client_identifier' 
      [USING TAG 'tag']
       [TO [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "external_key_manager_password"
      [WITH BACKUP [USING backup_id]]; 
    • シークレットを削除するには:
      ADMINISTER KEY MANAGEMENT
      DELETE SECRET FOR CLIENT 'client_identifier' 
      [FROM [[LOCAL] AUTO_LOGIN] KEYSTORE keystore_location 
      [FORCE KEYSTORE]
      IDENTIFIED BY "eexternal_key_manager_password"; 

    仕様部は次のとおりです。

    • secretは、格納、更新、または削除するクライアントの秘密キーです。既存のシークレットおよびそれらのクライアント識別子に関する情報を確認するには、V$CLIENT_SECRETS動的ビューを問い合せます。

    • client_identifierは、シークレットの識別に使用される英数字の文字列です。

    • FORCE KEYSTOREはこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。

    • external_key_manager_passwordは、Oracle Key VaultまたはOCI Vault - Key Managementの外部キーストア・マネージャ用です。このパスワードは二重引用符で囲みます。Oracle Key Vaultの場合は、Oracle Key Vaultクライアントのインストール時に指定したパスワードを入力します。その時点でパスワードが指定されていない場合、ADMINISTER KEY MANAGEMENT文のパスワードはNULLになります。

9.1.12.7 例: 外部キーストアへのOracle Databaseのシークレットの追加

ADMINISTER KEY MANAGEMENT ADD SECRET文によって、外部キーストアにOracle Databaseのシークレットを追加できます。

例9-4に、ユーザーのパスワードを外部キーストアに追加する方法を示します。

例9-4 外部キーストアへのOracle Databaseのシークレットの追加

ADMINISTER KEY MANAGEMENT ADD SECRET 'password' 
FOR CLIENT 'admin@myhost' USING TAG 'myhost admin credentials' 
IDENTIFIED BY "external_key_manager_password";

次のバージョンでは、キーストア・パスワードが外部ストアにあるため、IDENTIFIED BYにはEXTERNAL STORE設定が使用されます。

ADMINISTER KEY MANAGEMENT ADD SECRET 'password' 
FOR CLIENT 'admin@myhost' USING TAG 'myhost admin credentials' 
IDENTIFIED BY EXTERNAL STORE;
9.1.12.8 例: 外部キーストアでのOracle Databaseのシークレットの変更

ADMINISTER KEY MANAGEMENT MANAGEMENT UPDATE SECRET文によって、外部キーストアにあるOracle Databaseシークレットを変更できます。

例9-5に、外部キーストアにシークレットとして格納されているパスワードを変更する方法を示します。

例9-5 外部キーストアでのOracle Databaseのシークレットの変更

ADMINISTER KEY MANAGEMENT MANAGEMENT UPDATE SECRET 'password2' 
FOR CLIENT 'admin@myhost' USING TAG 'New host credentials' 
IDENTIFIED BY "external_key_manager_password";

次のバージョンでは、キーストアのパスワードは外部ストアにあります。

ADMINISTER KEY MANAGEMENT MANAGEMENT UPDATE SECRET 'password2' 
FOR CLIENT 'admin@myhost' USING TAG 'New host credentials' 
IDENTIFIED BY EXTERNAL STORE;
9.1.12.9 例: 外部キーストアでのOracle Databaseのシークレットの削除

ADMINISTER KEY MANAGEMENT DELETE SECRET FOR CLIENT文によって、外部キーストアにあるOracle Databaseシークレットを削除できます。

例9-6に、外部キーストアにシークレットとして格納されている外部キー・マネージャ・パスワードを削除する方法を示します。

例9-6 外部キーストアでのOracle Databaseのシークレットの削除

ADMINISTER KEY MANAGEMENT DELETE SECRET FOR CLIENT 'admin@myhost' 
IDENTIFIED BY "external_key_manager_password";

次のバージョンでは、キーストアのパスワードは外部ストアにあります。

ADMINISTER KEY MANAGEMENT DELETE SECRET FOR CLIENT 'admin@myhost' 
IDENTIFIED BY EXTERNAL STORE;

9.1.13 分離モードでのキーストアへのOracle GoldenGateシークレットの格納

Oracle GoldenGateシークレットを透過的データ暗号化キーストアに格納できます。

9.1.13.1 分離モードでのキーストアへのOracle GoldenGateシークレットの格納について

キーストアを使用して、ツールおよびOracle GoldenGateなどの外部クライアントの秘密キーを格納できます。

秘密キーはOracleの識別子規則に従った文字列である必要があります。既存のキーストアでクライアントのシークレットを追加、更新または削除できます。この項では、Oracle GoldenGateのExtract(抽出)プロセスでクラシック・キャプチャ・モードを使用して、透過的データ暗号化によって暗号化されたデータを取得する方法について説明します。

Extractがクラシック・キャプチャ・モードの場合、TDEをサポートするには次のキーの交換が必要です。

  • Extractプロセスのクラシック・キャプチャ・モードでのTDEによるOracle GoldenGateのサポートでは、Oracle DatabaseとExtractプロセスでシークレットを共有して、交換される機密情報を暗号化する必要があります。共有シークレットは、Oracle DatabaseおよびOracle GoldenGateドメインに安全に格納されます。共有シークレットは、ソフトウェア・キーストアまたは外部キーストアにデータベース・シークレットとして格納されます。

  • 復号化キーは、Oracle DatabaseおよびOracle GoldenGateドメインに安全に格納されている、共有シークレットとして知られているパスワードです。共有シークレットを所有している当事者のみが、表キーおよびREDOログ・キーを復号化できます。

共有シークレットの構成後、共有シークレットを使用してOracle GoldenGate Extractによってデータが復号化されます。Oracle GoldenGate Extractでは、TDEマスター暗号化キー自体は扱われず、キーストア・パスワードも認識しません。TDEマスター暗号化キーおよびパスワードは、Oracle Database構成内に保持されます。

Oracle GoldenGate Extractでは、遷移時にOracle GoldenGateによって保持されるOracle GoldenGate証跡ファイルに、復号化されたデータが書き込まれるのみです。サイトのオペレーティング・システムの標準セキュリティ・プロトコルと、Oracle GoldenGate AES暗号化オプションを使用して、このファイルを保護できます。Oracle GoldenGateでは、暗号化データは破棄ファイル(DISCARDFILEパラメータで指定)には書き込まれません。ENCRYPTEDという語は、使用中のすべての破棄ファイルに書き込まれます。

Oracle GoldenGateでは、暗号化データの処理時にキーストアが開いている必要はありません。TDE操作に対するOracle GoldenGate機能のパフォーマンス上の影響はありません。

9.1.13.2 Oracle GoldenGate Extractのクラシック・キャプチャ・モードのTDE要件

Oracle GoldenGate Extractで透過的データ暗号化の取得をサポートするための要件を満たしていることを確認します。

要件は次のとおりです。

  • 高いセキュリティ基準を維持するには、Oracle GoldenGateのExtractプロセスがOracleユーザー(Oracle Databaseを実行するユーザー)の一部として実行されるようにします。これにより、キーはOracleユーザーと同じ権限によってメモリー内で保護されます。

  • Oracle GoldenGateのExtractプロセスを、Oracle Databaseインストールと同じコンピュータで実行します。

9.1.13.3 Oracle GoldenGate用のキーストア・サポートの構成

Oracle GoldenGateのために透過的データ暗号化キーストアのサポートを構成するには、キーストアの共有シークレットを使用します。

9.1.13.3.1 ステップ1: キーストアの共有シークレットを決定する

キーストアの共有シークレットはパスワードです。

  • Oracle Databaseのパスワード基準を満たす(または超える)共有シークレットを決定します。

このパスワードは、Oracle GoldenGate Extractと連携するように透過的データ暗号化を構成する作業を担当する、信頼できる管理者以外のユーザーと共有しないでください。

9.1.13.3.2 ステップ2: TDEによるOracle GoldenGateのサポートのためにOracle Databaseを構成する

DBMS_INTERNAL_CLKM PL/SQLパッケージを使用して、Oracle GoldenGateのためにTDEのサポートを構成できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
  2. Oracle Databaseに付属のDBMS_INTERNAL_CLKM PL/SQLパッケージをロードします。

    たとえば:

    @?/app/oracle/product/20.1/rdbms/admin/prvtclkm.plb
    

    prvtclkm.plbファイルでも、Oracle GoldenGateによってOracle Databaseから暗号化データを抽出できます。

  3. DBMS_INTERNAL_CLKM PL/SQLパッケージに対するEXECUTE権限をOracle GoldenGate Extractデータベース・ユーザーに付与します。

    たとえば:

    GRANT EXECUTE ON DBMS_INTERNAL_CLKM TO psmith;
    

    この手順によって、Oracle DatabaseとOracle GoldenGate Extractで情報を交換できます。

9.1.13.3.3 ステップ3: TDE GoldenGate共有シークレットをキーストアに格納する

ADMINISTER KEY MANAGEMENT文によって、TDE GoldenGate共有シークレットをキーストアに格納できます。

この手順を開始する前に、TDEソフトウェア・キーストアまたは外部キーストアを構成済であることを確認します。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
  2. 次の構文を使用して、キーストアにOracle GoldenGateのTDEキーを設定します。
    ADMINISTER KEY MANAGEMENT ADD|UPDATE|DELETE SECRET 'secret' 
    FOR CLIENT 'secret_identifier' [USING TAG 'tag'] 
    IDENTIFIED BY keystore_password [WITH BACKUP [USING 'backup_identifier']];
    

    ここでは次のように指定します。

    • secretは、格納、更新、または削除するクライアントの秘密キーです。この設定は、一重引用符(' ')で囲みます。

    • secret_identifierは、秘密キーの識別に使用される英数字の文字列です。secret_identifierにはデフォルト値はありません。この設定は、一重引用符(' ')で囲みます。

    • tagは、格納する秘密キーについてのオプションのユーザー定義の説明です。tagは、ADDおよびUPDATE操作と一緒に使用できます。この設定は一重引用符(' ')で囲みます。このタグは、V$CLIENT_SECRETSビューのSECRET_TAG列に表示されます。

    • keystore_passwordは、構成されているキーストアのパスワードです。

    • WITH BACKUPは、ADDUPDATEまたはDELETE操作の前にキーストアがバックアップされていない場合は必須です。backup_identifierは、バックアップについてのオプションのユーザー定義の説明です。backup_identifierは、一重引用符(' ')で囲みます。

    次の例は、秘密キーをキーストアに追加して、キーストアと同じディレクトリにバックアップを作成します。

    ADMINISTER KEY MANAGEMENT ADD SECRET 'some_secret' 
    FOR CLIENT 'ORACLE_GG' USING TAG 'GoldenGate Secret' 
    IDENTIFIED BY password WITH BACKUP USING 'GG backup';
    
  3. 作成したエントリを確認します。

    たとえば:

    SELECT CLIENT, SECRET_TAG FROM V$CLIENT_SECRETS WHERE CLIENT = 'ORACLEGG';
    
    CLIENT   SECRET_TAG
    -------- ------------------------------------------
    ORACLEGG some_secret
    
  4. ログ・ファイルを切り換えます。
    CONNECT / AS SYSDBA
    
    ALTER SYSTEM SWITCH LOGFILE;
    
9.1.13.3.4 ステップ4: TDE Oracle GoldenGate共有シークレットをExtractプロセスに設定する

GoldenGateソフトウェア・コマンド・インタフェース(GGSCI)ユーティリティによって、TDE Oracle GoldenGate共有シークレットをExtractプロセスに設定します。

  1. GGSCIユーティリティを起動します。
    ggsci
    
  2. GGSCIユーティリティで、ENCRYPT PASSWORDコマンドを実行してOracle GoldenGate Extractパラメータ・ファイル内の共有シークレットを暗号化します。
    ENCRYPT PASSWORD shared_secret algorithm ENCRYPTKEY keyname
    

    ここでは次のように指定します。

    • shared_secretは、キーストアの共有シークレットを決定するときに作成したクリアテキストの共有シークレットです。この設定では大文字と小文字が区別されます。

    • algorithmAES256です。

    • keynameは、ENCKEYS参照ファイルの暗号化キーの論理名です。Oracle GoldenGateでは、この名前を使用して、ENCKEYSファイル内で実際のキーが参照されます。

    たとえば:

    ENCRYPT PASSWORD password AES256 ENCRYPTKEY mykey1
    
  3. Oracle GoldenGate Extractパラメータ・ファイルで、DECRYPTPASSWORDオプションを指定してDBOPTIONSパラメータを設定します。
    入力として、暗号化共有シークレットと、Oracle GoldenGateによって生成されたか、またはユーザーが定義した復号化キーを指定します。
    DBOPTIONS DECRYPTPASSWORD shared_secret algorithm ENCRYPTKEY keyname
    

    ここでは次のように指定します。

    • shared_secretは、キーストアの共有シークレットを決定するときに作成したクリアテキストの共有シークレットです。この設定では大文字と小文字が区別されます。

    • algorithmAES256です。

    • keynameは、ENCKEYS参照ファイルの暗号化キーの論理名です。

      たとえば:

      DBOPTIONS DECRYPTPASSWORD AACAAAAAAAAAAAIALCKDZIRHOJBHOJUH AES256 ENCRYPTKEY mykey1

9.1.14 分離モードでのキーストアの移行

分離モードでは、ソフトウェア・キーストアと外部キーストア間の移行操作と逆移行操作を実行できます。

9.1.14.1 外部キーストアからウォレットへの分離されたPDBの逆移行

分離されたPDBには個別のキーストア(ウォレットまたはOracle Key Vault内)があり、ウォレットからOracle Key Vaultに個別に移行したり、Oracle Key Vaultからウォレットに個別に逆移行できます。

ソフトウェア・キーストアと外部キーストアの両方を同時に開く場合は、ソフトウェア・キーストアのパスワードが外部キーストアと同じである必要があります。または、移行の完了後にソフトウェア・キーストアの自動ログイン・キーストアを作成できます。
  1. データベースをウォレットからOracle Key Vaultに移行する前に、そのデータベース用にOracle Key Vaultで作成した仮想ウォレットにウォレットの内容(現在およびそれまで使用されたTDEマスター暗号化キー)をアップロードします。
    次の例では、静的初期化パラメータWALLET_ROOT/etc/ORACLE/KEYSTORES/db_nameに設定されています。
    /etc/ORACLE/KEYSTORES/db_name/pdb-guid/okv/bin/okvutil upload -l /etc/ORACLE/KEYSTORES/db_name/pdb-guid/tde/ -t wallet -g virtual_wallet_name_in_Oracle_Key_Vault -v 2
  2. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  3. 外部キーストアのパスワードを、ソフトウェア・キーストアのパスワードと一致するように設定します。
    Oracle Data PumpやOracle Recovery Managerなどの一部のOracleツールでは、古いソフトウェア・キーストアからのTDEマスター暗号化キーを使用してエクスポートまたはバックアップされたデータを復号化するために、古いソフトウェア・キーストアにアクセスする必要があります。
    • ソフトウェア・キーストアのパスワードを外部キーストアと同じになるように設定するには、次の構文を使用します。
      ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
      [FORCE KEYSTORE]
      IDENTIFIED BY software_keystore_password 
      SET "external_key_manager_password" 
      WITH BACKUP [USING 'backup_identifier'];

      ここでは次のように指定します。

      • software_keystore_passwordは、このキーストアが作成されたときに割り当てられたパスワードです。

      • external_key_manager_passwordは、Oracle Key VaultまたはOCI Vault - Key Managementの外部キーストア・マネージャ用です。このパスワードは二重引用符で囲みます。Oracle Key Vaultの場合は、Oracle Key Vaultクライアントのインストール時に指定したパスワードを入力します。その時点でパスワードが指定されていない場合、ADMINISTER KEY MANAGEMENT文のパスワードはNULLになります。

    • または、ソフトウェア・キーストアの自動ログイン・キーストアを作成するには、次の構文を使用します。
      ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
      FROM KEYSTORE 'keystore_location' 
      IDENTIFIED BY software_keystore_password;
  4. Oracle Key Vault管理者ガイド内の手順に従って分離モードのPDB用にOracle Key Vaultをプロビジョニングして、Oracle Key Vaultソフトウェアをエンドポイントにインストールします。
  5. キーストアの構成を次のように設定することで、外部キーストアを新しいプライマリにし、パスワードで保護されたソフトウェア・キーストアをセカンダリにします。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=OKV|FILE";
  6. 次の構文を使用して、外部キーストアを移行します。
    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    IDENTIFIED BY "external_key_manager_password" 
    [FORCE KEYSTORE]
    MIGRATE USING software_keystore_password;
    移行の完了後に、データベースを再起動する必要や外部キーストアを手動で再度開く必要はありません。
9.1.14.2 分離モードでの外部キーストアからパスワード保護されたソフトウェア・キーストアへの移行

分離モードで、外部キーストアからパスワード保護されたソフトウェア・キーストアに移行できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. PDBエンドポイントを登録してあることと、Oracle Key Vault構成が$WALLET_ROOT/PDB_GUID/okvの場所に存在することを確認します。
    ソフトウェア・キーストアと外部キーストアの両方を同時に開く場合は、ソフトウェア・キーストアのパスワードが外部キーストアと同じである必要があります。または、逆移行の完了後にソフトウェア・キーストアの自動ログイン・キーストアを作成できます。
  3. TDE_CONFIGURATIONパラメータを次のように設定することで、FILEを新しいプライマリ・キーストアにし、OKVをセカンダリ・キーストアにします。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE|OKV";
  4. これで、キーストアの構成が完了しました。次の文を発行して、外部キーストアから、パスワードで保護されたソフトウェア・キーストアに逆移行します。
    ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
    IDENTIFIED BY software_keystore_password 
    REVERSE MIGRATE USING "external_key_manager_password" 
    [WITH BACKUP [USING 'backup_identifier']]; 
  5. 必要に応じて、新しく移行されたソフトウェア・キーストアのパスワードを変更します。
    たとえば:
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD 
    IDENTIFIED BY
    old_password SET new_password 
    WITH BACKUP USING 'pwd_change';
これらのステップが完了すると、移行プロセスによってキーストアのキーがメモリーに自動的にリロードされます。データベースを再起動したり、ソフトウェア・キーストアを手動で再度開く必要はありません。以前のキーが、暗号化されたバックアップで使用されているか、Oracle Data PumpやOracle Recovery Managerなどのツールによって使用されている可能性が高いため、逆移行の後でも外部キーストアが必要な場合があります。自動ログイン・キーストアを作成し、それにHSM_PASSWORDクライアント・シークレットを配置する必要があります。たとえば:
ADMINISTER KEY MANAGEMENT ADD SECRET 'external_key_manager_password'
FOR CLIENT 'EXTERNAL_PASSWORD'
TO LOCAL AUTO_LOGIN KEYSTORE software_keystore_location
WITH BACKUP;

9.1.15 プラガブル・データベースのキーストアの統合

PDBキーストアを統合すると、TDEマスター暗号化キーがPDBキーストアからCDBルートのキーストアに移されます。これにより、CDBルートのキーストアの管理者がキーを管理できるようになります。

クライアント・シークレットは移動されません。これらは、PDBが分離モードで構成されていたときに使用されていたキーストアに残されます。PDBキーストアを統合する前に、このキーストアからクライアント・シークレットを削除することをお薦めします。同様に、PDBを分離モードにした場合も、CDBルートのキーストアに格納されているクライアント・シークレットは移動されません。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. 次の構文を使用して、PDBのキーストアを統合します。これにより、TDEマスター暗号化キーが、PDBのキーストアからCDBルートのキーストアに移されます。
    ADMINISTER KEY MANAGEMENT UNITE KEYSTORE
    IDENTIFIED BY isolated_keystore_password
    WITH ROOT KEYSTORE [FORCE KEYSTORE]
    IDENTIFIED BY 
    [EXTERNAL STORE | keystore_password_of_cdb_root]
    [WITH BACKUP [USING backup_id]];

    ここでは次のように指定します。

    • FORCE KEYSTOREは、自動ログイン・キーストアが開いている(および使用されている)か、キーストアが閉じている場合に、この操作のためにパスワード保護されたキーストアを一時的に開きます。

    • united_keystore_password: このパスワード情報を知っていても、UNITE KEYSTORE操作を実行するユーザーが、PDBに対してADMINISTER KEY MANAGEMENT UNITE KEYSTORE操作を実行するための権限を得ることはありません。

    PDBのキーストアをCDBルート内のキーストアに統合すると、PDBに関連付けられていた以前にアクティブであったすべてのTDEマスター暗号化キー(履歴)が、CDBルートのキーストアに移されます。(ORA-46694: The keys are already in the root keystoreエラーが表示された場合は、次を参照してください。)
  3. 分離モードのPDBが統一モードのPDBになっていることを確認します。
    SELECT KEYSTORE_MODE FROM V$ENCRYPTION_WALLET;

    出力はUNITEDとなっている必要があります。

キーストアはなくなっていますが、そのマスター暗号化キーは、CDBルート内のキーストアに移されています。後から統一モードのPDBを分離モードのPDBに戻すことにした場合は、ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE文を使用できます。

ORA-46694エラー: ウォレットがPDBコンテキストで作成された場合、PDBのキーストア・タイプは分離に変更され、PDBにキーが設定されていないかぎり、ウォレット・ステータスはOPEN_NO_MASTER_KEYになります。このタイプのPDBをADMINISTER KEY MANAGEMENT UNITE KEYSTORE文を使用して統合すると、ORA-46694: The keys are already in the root keystoreエラーが発生します。このPDBのKEYSTORE_MODEUNITEDに変更するには、PDBのTDE構成を変更する必要があります。PDBで、次の文を実行します。

ALTER SYSTEM RESET TDE_CONFIGURATION;

9.1.16 PDBクローズ時のキーストアの作成

閉じているPDBでキーストアを作成すると、新しいキーストアは空になり、PDBが分離モードに変換されます。

9.1.16.1 PDBクローズ時のキーストアの作成について

閉じているPDBでキーストアを作成すると、キー更新操作で誤って問題が発生する可能性がありますが、このキーストアの作成は元に戻すことができます。

以前のリリースでは、閉じているPDBでキーストアを作成しようとすると、この操作が中止され、「ORA-65040: プラガブル・データベース内からの操作は許可されていません」というエラーが表示されていました。Oracle Databaseリリース18c以降では、利便性のために、PDBのキーストアが閉じているときにPDBでADMINISTER KEY MANAGEMENT CREATE KEYSTORE文を実行しても、Oracle Databaseによってその操作が中止されることはなくなりました。

閉じられたPDBが暗号化を使用するように構成されていない(つまりADMINISTER KEY MANAGEMENT SET KEY文が実行されたことがない)場合は、ADMINISTER KEY MANAGEMENT CREATE KEYSTOREを実行して、空のキーストアが作成され、PDBの構成が分離モードに変更されると、この空のキーストア内にTDEマスター暗号化キーを作成できます。

しかし、PDBがすでに暗号化を使用するように構成されている場合は、そのPDBが統一モードで構成されている可能性があります(この場合、そのTDEマスター暗号化キーはCDBルートのキーストア内で管理されています)。

このような場合に、閉じられたPDBで誤ってADMINISTER KEY MANAGEMENT CREATE KEYSTORE文を実行すると、追加の(空の)キーストアが作成され、PDBが分離モードで構成されます。これを行うと、PDBが(統一モードになっている必要があるが)分離モードに変更される一方で、TDEマスター暗号化キーは引き続きCDBルートのキーストアにあるため、PDBの構成に誤りが生じることになります。この構成上の誤りによって、後からADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文を使用してTDEマスター暗号化キーをキー更新しようとした場合に、問題が生じる可能性があります。暗号化がすでに有効化されており、キーが設定されている場合、Oracle DatabaseはADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY文をキー更新操作として処理するため、この場合は「ORA-28362: マスター・キーが見つかりません」というエラーが表示されます。キー更新操作を実行するには、Oracle DatabaseがPDBの現在アクティブなTDEマスター暗号化キーを特定する必要があります。しかし、PDBの構成にこのような誤りがあると、PDBが分離モードになっており、必要なキーはCDBルートのキーストア内にあるため、Oracle DatabaseがTDEマスター暗号化キーを特定できません。つまり、PDBのキーストアを検索するようにPDBが構成されることはなく、キー更新操作も失敗します。

PDBのこの構成上の誤りを修正するには、PDBを統一モードに再構成して、空のキーストアを削除する必要があります。(キーストアを削除するときは、必ず事前にバックアップを作成してください。)PDBの構成を統一モードに戻すと、現在アクティブなTDEマスター暗号化キーに対して、キー更新や、TDEマスター暗号化キーを対象としたその他の操作を、再び実行できるようになります。

後からこのPDBを分離モードに構成するには、PDBを開き、ADMINISTER KEY MANAGEMENT ISOLATE KEYSTORE文を実行します。これにより、PDBが分離され、そのTDEマスター暗号化キーと、以前にアクティブであったキー(履歴)が、CDBルートのキーストアから、新しく作成された分離PDBのキーストアに移されます。

9.1.16.2 PDBクローズ時のキーストア作成操作を元に戻す

PDBで誤ってキーストアを作成した(それによってPDBが分離モードで構成された)場合は、キーストアの作成操作を元に戻す必要があります。

この手順は、すでに暗号化が有効化されている(つまり、すでにTDEマスター暗号化キーが存在する)閉じられたPDBでキーストアを作成した場合に使用します。
  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_WALLET動的ビューのKEYSTORE_MODE列を問い合せて、PDBのモードを確認します。
  3. V$ENCRYPTION_WALLETの出力がISOLATEDである場合は、ALTER SYSTEM文を実行して、PDBを統一モードに再構成します。
    • pfileが使用されている場合は、次の文を使用して、TDE_CONFIGURATIONパラメータをクリアします。
      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=MEMORY;

      Oracle Real Application Clusters環境では、次のように、SIDパラメータを指定します。

      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=MEMORY SID='*';
    • spfileが使用されている場合は、次の文を使用して、TDE_CONFIGURATIONパラメータをクリアします。
      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=BOTH;

      Oracle Real Application Clusters環境では、次のように、SIDパラメータを指定します。

      ALTER SYSTEM RESET TDE_CONFIGURATION SCOPE=BOTH SID='*';
  4. WALLET_ROOT/pdb_guid/tdeディレクトリで、誤って作成されたewallet.p12キーストア・ファイルを見つけてバックアップします。
  5. 誤って作成された空のキーストア・ファイルを削除します。
この段階で、PDBが統一モードになり、以降は正しいキーストアおよびTDEマスター暗号化キーに対して、キー更新操作を実行できるようになります。

9.2 分離モードでの透過的データ暗号化の管理

分離モードでは、透過的データ暗号化に対する一般的な管理タスクをいくつか実行できます。

9.2.1 分離モードでの暗号化されたPDBのクローニングまたは再配置

暗号化されたPDBを同じコンテナ・データベース内またはコンテナ・データベース間でクローニングまたは再配置できます。

SYSTEMSYSAUXUNDOまたはTEMP表領域が暗号化されているPDBを移動し、キーの手動エクスポートまたはインポートを使用する場合は、まずPDBを作成する前に、ターゲット・データベースのCDB$ROOTにあるPDBのキーをインポートする必要があります。キーをPDBに関連付けるには、PDB内でキーのインポートが再度必要です。

  • 次の構文を使用してPDBをクローニングまたは再配置します:
    CREATE|RELOCATE PLUGGABLE DATABASE database_name KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE|target_keystore_password [NO REKEY];

9.2.2 分離モードでの暗号化データを含むPDBのCDBに対するアンプラグとプラグイン

分離モードで、暗号化データを含むPDBをCDBにプラグインできます。反対に、このPDBをCDBからアンプラグすることもできます。

9.2.2.1 分離モードでの暗号化データを含むPDBのアンプラグ

(暗号化データを含む)PDBを、あるCDBからアンプラグし、必要に応じて別のCDBにプラグインできます。

統一モードとは異なり、ALTER PLUGGABLE DATABASE文でENCRYPT句を指定する必要はありません。アンプラグされるデータベースには、データ・ファイルおよび他の関連ファイルが含まれています。各PDBには独自の一意のキーストアがあるため、アンプラグするPDBのTDEマスター暗号化キーをエクスポートする必要はありません。PDBがすでにアンプラグされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  • PDBのアンプラグ時に通常使用する方法と同じ方法で、分離モードのPDBをアンプラグします。
    たとえば:
    ALTER PLUGGABLE DATABASE pdb1
      UNPLUG INTO '/oracle/data/pdb1.xml';
9.2.2.2 分離モードでの暗号化データを含むPDBのCDBへのプラグイン

暗号化データを含むPDBをCDBにプラグインすると、そのPDB内で暗号化キーを設定できます。

統一モードとは異なり、CREATE PLUGGABLE DATABASE文でDECRYPT句を指定する必要はありません。アンプラグされたPDBを別のCDBにプラグインする際、この操作は以前のキーの履歴を無効にするため、キー・バージョンは0に設定されます。キー・バージョンは、V$ENCRYPTED_TABLESPACES動的ビューのKEY_VERSIONを問い合せて確認できます。同様に、制御ファイルが失われ再作成された場合、以前のキーの履歴は0にリセットされます。PDBがすでにプラグインされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  1. アンプラグされたPDBをCDBにプラグインして、PDBを作成します。

    • たとえば、PDBデータをメタデータXMLファイルにエクスポートした場合は、次のように指定します。

      CREATE PLUGGABLE DATABASE CDB1_PDB2 
      USING '/tmp/cdb1_pdb2.xml' 
      NOCOPY KEYSTORE 
      IDENTIFIED BY password;
    • PDBをアーカイブ・ファイルにエクスポートした場合は、次のように指定します。

      CREATE PLUGGABLE DATABASE CDB1_PDB2 
      USING '/tmp/cdb1_pdb2.pdb';

    プラグ操作後のPDBのオープン操作中に、Oracle DatabaseによってPDBに暗号化データが含まれるかどうかが判別されます。その場合、PDBはRESTRICTEDモードでオープンされます。

    V$ENCRYPTION_KEYS動的ビューを問い合せることで、ソース・データベースに暗号化データがあるかどうかや、キーストアにTDEマスター暗号化キーが設定されているかどうかを確認できます。

  2. PDBをオープンします。

    たとえば:

    ALTER PLUGGABLE DATABASE CDB1_PDB2 OPEN;
  3. CDBルートのキーストアを開きます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY password;

    必要に応じて、PDB内のキーストアを開きます。

  4. PDBでキーストアを開き、PDBのTDEマスター暗号化キーを設定します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
9.2.2.3 分離モードでの外部キーストアにマスター暗号化キーが格納されたPDBのアンプラグ

外部キーストアを使用するように構成されたCDBからPDBをアンプラグした後、それを同様に外部キーストアを使用するように構成された別のCDBにプラグインできます。

  1. PDBを切断します。
    PDBがすでにアンプラグされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
  2. アンプラグされたPDBのマスター暗号化キーを、ソースCDBで使用されていたハードウェアから、宛先CDBで使用されているハードウェアに移動します。

    マスター・キーを外部キーストア間で移動する方法については、外部キーストアのドキュメントを参照してください。

9.2.2.4 分離モードで外部キーストアにマスター・キーが格納されたPDBのプラグイン

ADMINISTER KEY MANAGEMENT文を使用すると、外部キーストアのマスター暗号化キーを、別のCDBに移されたPDBにインポートできます。

  1. アンプラグされた分離モードのPDBを、外部キーストアを使用するように構成された宛先CDBにプラグインします。
    PDBがすでにプラグインされているかどうかを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのSTATUS列を問い合せます。
    プラグイン操作の後、プラグインされたPDBは制限モードになります。
  2. ソースCDBを使用するように構成された外部キーストアのマスター・キーが、宛先CDBの外部キーストアで使用可能であることを確認します。
  3. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限を付与されたユーザーとして、プラグインされたPDBに接続します。
  4. プラグインされたPDBのキーストアを開きます。

    たとえば、PDB1というPDBの場合は、次のようになります。

    ALTER SESSION SET CONTAINER = PDB1;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY "external_key_manager_password";
  5. 外部キーストアのマスター暗号化キーをPDBにインポートします。
    ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS 
    WITH SECRET "external_keystore" FROM 'external_keystore' 
    IDENTIFIED BY "external_key_manager_password"; 
  6. PDBを閉じて再オープンします。
    ALTER PLUGGABLE DATABASE PDB1 CLOSE;
    ALTER PLUGGABLE DATABASE PDB1 OPEN;

9.2.3 分離モードでの暗号化データを含むPDBのCDBへのクローニング

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むPDBをクローニングできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. クローニングを計画しているPDBのソフトウェア・キーストアが開いていることを確認します。

    V$ENCRYPTION_WALLETビューのSTATUS列を問い合せると、ソフトウェア・キーストアが開いているかどうかを確認できます。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN FORCE KEYSTORE IDENTIFIED BY keystore_password;
  3. PDBをクローニングします。

    たとえば:

    CREATE PLUGGABLE DATABASE cdb1_pdb3 FROM cdb1_pdb1 
    FILE_NAME_CONVERT=('cdb1_pdb1', 'pdb3/cdb1_pdb3') KEYSTORE 
    IDENTIFIED BY keystore_password;

    keystore_passwordcdb1_pdb3クローンが作成されるCDBのキーストアのパスワードに置き換えます。

    クローニングされたPDBの作成後、暗号化データは、元のPDBのマスター暗号化キーを使用して、クローンにより引き続きアクセスできます。PDBがクローニングされた後、暗号化された表領域にユーザー・データがある場合があります。ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、この暗号化データには引き続きアクセスできます。クローンはソースPDBのコピーでありながらも、結局は独自の動作に従い、独自のデータおよびセキュリティ・ポリシーを持つようになるため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  4. クローニングされたPDBのマスター暗号化キーをキー更新します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';
    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。

9.2.4 分離モードでの暗号化されたPDBのリモートからのクローニング

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むPDBをリモートからクローニングできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、クローニングするPDBのソフトウェア・キーストアが開いていることを確認します。
  3. リモートからクローニングするPDBのデータベース・リンクを作成します。
    データベース・リンクを作成するには、CREATE DATABASE LINK SQL文を使用します。リモートPDBのクローニングに必要なデータベース・リンクの前提条件に従って、データベース・リンクを作成する必要があります。
  4. PDBのクローニングを実行するには、CREATE PLUGGABLE DATABASE文をKEYSTORE IDENTIFIED BY句を指定して使用します。

    たとえば:

    CREATE PLUGGABLE DATABASE target_pdb
    FROM source_pdb@clone_link KEYSTORE
    IDENTIFIED BY keystore_password;

    keystore_passwordは、着信PDBのWALLET_ROOT/target_pdb_guid/tdeに作成される新しいソフトウェア・キーストアのパスワードです。

    クローニングされたPDBを作成した後も、ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、暗号化されたデータには引き続きアクセスできます。最終的には独自の動作に従い、独自のデータおよびセキュリティ・ポリシーがあるため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  5. リモートからクローニングされたPDBのマスター暗号化キーをキー更新します。

    次のSQL文を実行して、TAGを使用して管理キー管理コマンドを作成します。

    SELECT ' ADMINISTER KEY MANAGEMENT SET KEY 
    USING TAG '''||SYS_CONTEXT('USERENV', 'CON_NAME')||' '||TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS')||''' 
    IDENTIFIED BY KEYSTORE_PASSWORD WITH BACKUP;' 
    AS "SET KEY COMMAND" FROM DUAL;
    ADMINISTER KEY MANAGEMENT SET KEY USING TAG 'PDB_NAME DATE TIME' 
    IDENTIFIED BY KEYSTORE_PASSWORD WITH BACKUP;
    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。

9.2.5 分離モードでの暗号化されたPDBの再配置

KEYSTORE IDENTIFIED BY句を含むCREATE PLUGGABLE DATABASE文によって、暗号化データを含むクローニングされたPDBをCDB間で再配置できます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、再配置するPDBのソフトウェア・キーストアが開いていることを確認します。
  3. 再配置するPDBのデータベース・リンクを作成します。
    データベース・リンクを作成するには、CREATE DATABASE LINK SQL文を使用します。リモートPDBまたは非CDBの再配置に必要なデータベース・リンクの前提条件に従って、データベース・リンクを作成する必要があります。
  4. PDBを再配置するには、CREATE PLUGGABLE DATABASE文をKEYSTORE IDENTIFIED BY句を指定して使用します。

    たとえば:

    CREATE PLUGGABLE DATABASE target_pdb_name 
    FROM src_pdb_name@dblink RELOCATE  
    KEYSTORE IDENTIFIED BY keystore_password;

    keystore_passwordcdb1_pdb3クローンが作成されるCDBのキーストアのパスワードに置き換えます。

    クローニングされたPDBの作成後、暗号化データは、元のPDBのマスター暗号化キーを使用して、クローンにより引き続きアクセスできます。PDBがクローニングされた後、暗号化された表領域にユーザー・データがある場合があります。ソースPDBのマスター暗号化キーが宛先PDBにコピーされているため、この暗号化データには引き続きアクセスできます。クローンはソースPDBのコピーでありながらも、最終的には独自の動作に従い、独自のデータおよびセキュリティ・ポリシーを持つため、クローニングされたPDBのマスター暗号化キーをキー更新する必要があります。
  5. リモートからクローニングされたPDBのマスター暗号化キーをキー更新します。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE
    IDENTIFIED BY keystore_password 
    WITH BACKUP USING 'emp_key_backup';

    キーストアはキー更新操作中に開いている必要があるため、この例では、FORCE KEYSTOREが含まれています。

    クローニングされたPDBのマスター暗号化キーをキー更新するまで、クローンでは引き続き元のPDBのマスター暗号化キーを使用できます。ただし、これらのマスター暗号化キーは、クローニングされたPDBのV$動的ビューには表示されません。マスター暗号化キーをキー更新すると、クローニングされたPDBで独自の一意のキーが使用されるようになり、そのキーがV$ビューに表示されます。

9.2.6 分離モードでのキーストアの開閉操作の機能

分離モードでキーストアの開閉操作がどのように機能するかを知っておく必要があります。

分離モードの各PDBに関して、透過的データ暗号化の操作が続行できるように、PDBでパスワード保護されたソフトウェア・キーストアまたは外部キーストアを明示的に開く必要があります。(自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)PDBのキーストアを閉じることによって、PDBのすべての透過的データ暗号化操作がブロックされます。

PDBにおけるキーストアの開閉操作は、PDBにおけるキーストアの開閉状態によって異なります。

次の点に注意してください。

  • マルチテナント環境では、各PDBについて個別のキーストア・パスワードを作成できます。

  • 個々のPDBでパスワード保護されたソフトウェアまたは外部キーストアを手動で開く前に、CDBルートでキーストアを開く必要があります。

  • 自動ログイン・キーストアが使用されているか、キーストアが閉じている場合は、キーストアを開くときに、ADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。

  • キーストアがパスワード用に外部ストアを使用するパスワード保護されたソフトウェア・キーストアである場合は、IDENTIFIED BY句のパスワードをEXTERNAL STOREに置き換えます。

  • 個々のPDBでTDEマスター暗号化キーを設定するには、事前にCDBルートでキーを設定する必要があります。PDBにキーを設定するときにUSING TAG句を含めることをお薦めします。たとえば:

    SELECT ' ADMINISTER KEY MANAGEMENT SET KEY 
    USING TAG '''||SYS_CONTEXT('USERENV', 'CON_NAME')||' '||TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS')||''' 
    FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE 
    WITH BACKUP CONTAINER = CURRENT;' AS "SET KEY COMMAND" FROM DUAL;

    USING TAG句を含めると、特定のPDBに属するキーと、それらがいつ作成されたかを迅速かつ容易に識別できます。

  • (自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアは自動的に開きます。)これらを最初にrootからまたはPDBから、手動で開く必要はありません。

  • 分離モードで構成されたPDBがあり、そのキーストアが開いている場合は、CDBルート内のキーストアを閉じようとすると、「ORA-46692 ウォレットをクローズできません」というエラーが発生して失敗します。この動作をオーバーライドするには、ADMINISTER KEY MANAGEMENT文でFORCE CLOSE句を使用します。

  • CDBルートでADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文を実行し、CONTAINER句をALLに設定した場合、キーストアは、統一モードで構成されている各オープンPDBでのみ開くことになります。分離モードで構成されているPDBのキーストアはオープンされません。

9.2.7 分離モードでのPDBのマスター暗号化キーのエクスポートおよびインポート

分離モードでは、ADMINISTER KEY MANAGEMENT EXPORTEXPORT句およびIMPORT句を使用して、PDBのマスター暗号化キーをエクスポートまたはインポートできます。

9.2.7.1 分離モードでのPDBのマスター暗号化キーのエクスポートおよびインポートについて

分離モードでは、CDBルートからマスター暗号化キーをエクスポートおよびインポートできます。

また、PDB内からマスター暗号化キーをエクスポートおよびインポートすることで、PDBに属するすべてのマスター暗号化キーをエクスポートおよびインポートできます。PDBでのマスター暗号化キーのエクスポート操作およびインポート操作では、PDBのアンプラグおよびプラグイン操作がサポートされます。PDBのアンプラグ操作およびプラグイン操作では、PDBに属するすべてのマスター暗号化キー、およびメタデータが対象になります。したがって、PDB内からキーをエクスポートする場合、ADMINISTER KEY MANAGEMENT EXPORT文のWITH IDENTIFIER句は許可されません。WITH IDENTIFIER句は、CDBルートでのみ使用できます。

CDBルートに自動ログイン・キーストアがある場合、またはキーストアが閉じている場合は、FORCE KEYSTORE句を含める必要があります。キーストアがパスワードに外部ストアを使用するように構成されている場合、IDENTIFIED BY EXTERNAL STORE句を使用します。たとえば、このシナリオにおいてエクスポート操作を実行するには、次のようにします。

ADMINISTER KEY MANAGEMENT EXPORT KEYS 
WITH SECRET "my_secret"
TO '/etc/TDE/export.exp'
FORCE KEYSTORE 
IDENTIFIED BY EXTERNAL STORE;

このADMINISTER KEY MANAGEMENT EXPORT操作では、キーがエクスポートされるだけでなく、PDB環境(およびクローニング操作)に必要なメタデータも作成されます。

PDBの内部では、マスター暗号化キーのエクスポート操作によって、キーがエクスポートされるPDBと同じGUIDを持つPDBにより作成またはアクティブ化されたキーがエクスポートされます。基本的に、エクスポートが実行されるPDBに属しているすべてのキーがエクスポートされます。

PDB内のエクスポート・ファイルからマスター暗号化キーがインポートされるのは、そのマスター暗号化キーが同じGUIDを持つ別のPDBからエクスポートされている場合のみです。非CDBのプラグインをCDBへのPDBとしてサポートできるようにするには、非CDBからTDEマスター暗号化キーをエクスポートし、WITH IDENTIFIER句なしでPDBにインポートしておく必要があります。PDB名やデータベースIDなどのPDB固有の詳細は、CDBごとに変化する可能性があるため、PDB固有の情報は、更新されたPDB情報を反映するようにインポート時に変更されます。

ノート:

PDB内では、PDB全体のキーのみエクスポートできます。問合せまたは識別子に基づいた選択的なエクスポート機能はrootに制限されています。

9.2.7.2 分離モードでのPDBのマスター暗号化キーのエクスポートまたはインポート

分離モードでは、ADMINISTER KEY MANAGEMENT文によって、PDBのマスター暗号化キーをエクスポートまたはインポートできます。

  1. ADMINISTER KEY MANAGEMENT権限またはSYSKM権限が付与されたユーザーとして、分離モードのPDBに接続します。
  2. エクスポートまたはインポート操作を実行します。
    たとえば:
    ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS 
    WITH SECRET "hr_secret" TO '/tmp/export.p12' 
    FORCE KEYSTORE 
    IDENTIFIED BY password;

    この操作を行うにはキーストアが開いている必要があるため、FORCE KEYSTORE句が含まれていることを確認してください。

9.2.7.3 例: 分離モードでのPDBからのマスター暗号化キーのエクスポート

ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS文によって、PDBのマスター暗号化キーをエクスポートできます。

例9-7は、PDB hrpdbからマスター暗号化キーをエクスポートする方法を示しています。この例では、自動ログイン・キーストアが使用されているか、キーストアが閉じている場合のために、FORCE KEYSTORE句が含められています。

例9-7 PDBからマスター暗号化キーをエクスポート

ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS 
WITH SECRET "my_secret" TO '/tmp/export.p12' 
FORCE KEYSTORE 
IDENTIFIED BY password;
9.2.7.4 例: 分離モードでのPDBへのマスター暗号化キーのインポート

ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS文によって、PDBにマスター暗号化キーをインポートできます。

例9-8は、PDB hrpdbにマスター暗号化キーをインポートする方法を示しています。

例9-8 PDBにマスター暗号化キーをインポート

ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS 
WITH SECRET "my_secret" 
FROM '/tmp/export.p12' 
FORCE KEYSTORE 
IDENTIFIED BY password 
WITH BACKUP;