第3章 透過的データ暗号化の構成

ソフトウェア・キーストアおよび外部キーストアを、個々の表列や表領域全体での使用のために構成できます。

3.1 透過的データ暗号化の構成について

透過的データ暗号化を構成するには、キーストアを作成しデータを暗号化する前に、1回かぎりの設定を実行する必要があります。

データの暗号化を開始する前に、使用する予定のキーストアの場所とタイプを指定するために、静的なWALLET_ROOTパラメータと動的なTDE_CONFIGURATIONパラメータを使用して1回かぎりの構成を実行する必要があります。

WALLET_ROOTパラメータは、多数の異なるソフトウェア・キーストア(TDE、Oracle Enterprise User Security (EUS)、TLSなど)の最上位ディレクトリを指定します。TDEの場合、自動検出のディレクトリはWALLET_ROOT/tdeです。

TDE_CONFIGURATIONパラメータは、キーストアのタイプ(ソフトウェア・キーストアまたはOracle Key Vault)を指定します。TDE_CONFIGURATIONを使用してキーストアのタイプを設定した後で、キーストアを作成すると、Oracle Databaseはキーストア・タイプのWALLET_ROOTの場所内にディレクトリを作成します。たとえば、TDE_CONFIGURATIONFILEに設定すると、Oracle DatabaseによってWALLET_ROOT/TDEにTDEウォレットが作成されます。Oracle Key Vaultを使用するには、Oracle Key Vaultクライアント・ソフトウェアをWALLET_ROOT/okvにインストールし、TDE_CONFIGURATIONOKVに設定します。自動オープンOracle Key Vault構成を確立するには、WALLET_ROOT/tdeの自動オープン・ウォレットにOracle Key Vaultパスワードを追加し、TDE_CONFIGURATIONOKV|FILEに設定します。キーストア・タイプ間で移行する場合は、最初にTDE_CONFIGURATIONパラメータに使用するキーストア・タイプを設定し、ADMINISTER KEY MANAGEMENT文を使用して移行を実行する必要があります。たとえば、OKV|FILEに設定して、TDEキーストアをOKVに移行できます。

V$ENCRYPTION_WALLET動的ビューのKEYSTORE_MODE列は、統一モードまたは分離モードが構成されているかどうかを示します。データベースのデフォルト暗号化アルゴリズムをAES128から変更する場合、パッチ30398099を適用した後、次の文を実行して動的初期化パラメータを設定できます。

ALTER SYSTEM SET "_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM" = 'AES256' SCOPE = BOTH SID = '*';

ノート:

以前のリリースでは、キーストア・ディレクトリの場所を定義するためにSQLNET.ENCRYPTION_WALLET_LOCATIONパラメータが使用されていました。このパラメータは現在非推奨になっています。かわりに、WALLET_ROOT静的初期化パラメータおよびTDE_CONFIGURATION動的初期化パラメータを使用することをお薦めします。

3.2 透過的データ暗号化のキーストア検索順序

TDEキーストアの検索順序は、インスタンスの初期化パラメータ、sqlnet.oraのパラメータまたは環境変数の設定によって異なります。

Oracle Databaseは、次の場所を次の順序で検索して、キーストアを取得します。

  1. TDE_CONFIGURATION初期化パラメータのKEYSTORE_CONFIGURATION属性がFILEに設定されている場合、インスタンスのWALLET_ROOT初期化パラメータによって設定される場所。このパラメータを使用してキーストアの場所を構成することをお薦めします。

  2. TDE_CONFIGURATION初期化パラメータのKEYSTORE_CONFIGURATION属性がFILEに設定されていないか、WALLET_ROOTが設定されていない場合は、sqlnet.oraファイルのWALLET_LOCATION設定で指定された場所。(このファイルには複数のWALLET_LOCATION設定を指定できません。)

  3. WALLET_ROOTおよびWALLET_LOCATIONが設定されていない場合は、sqlnet.oraファイルのENCRYPTION_WALLET_LOCATIONパラメータ(WALLET_ROOTが優先されて非推奨になりました)で指定された場所。

  4. これらのパラメータが設定されておらず、ORACLE_BASE環境変数が設定されている場合は、$ORACLE_BASE/admin/db_unique_name/walletディレクトリ。ORACLE_BASEが設定されていない場合は、$ORACLE_HOME/admin/db_unique_name/wallet

3.3 TDEウォレットの構成

TDEウォレットとは、ソフトウェア・ファイル・システム内にあるマスター暗号化キーのコンテナのことです。

3.3.1 TDEウォレットの構成について

ソフトウェア・キーストアとは、TDEマスター暗号化キーを格納するコンテナです。

TDEウォレットの構成前に、まず、静的初期化パラメータWALLET_ROOTを設定して、そのウォレットの場所を定義する必要があります。その後でデータベースを再起動して、データベースにマスター暗号化キーの取得元を指示する動的初期化パラメータTDE_CONFIGURATIONを設定する必要があります。この設定は、キーの取得元になるTDEウォレット、Oracle Key VaultまたはOracle Cloud Interface (OCI)キー管理サービス(KMS)のドキュメントに従います。データベースは、最初にWALLET_ROOT設定をチェックして、このTDEウォレットを探します。この設定が作成されていない場合、データベースは、sqlnet.oraファイルをチェックします。別のTDEウォレット(そのウォレットのコピーなど)を作成して、キーが含まれているファイルを必要に応じてエクスポートすることもできます。WALLET_ROOTの場所に構成したTDEウォレットの削除が必要な場合は、すべてのTDEウォレット(バックアップと自動ログイン・ウォレットを含む)を古い場所から新しい場所にコピーした後でのみ削除してください。その後で、新しいTDEウォレットの場所を指すようにWALLET_ROOTを再設定する必要があります。

WALLET_ROOTパラメータとTDE_CONFIGURATIONパラメータを使用してTDEウォレットの場所を構成すると、CDBにログインしてキーストアを作成して開き、TDEマスター暗号化キーを設定できるようになります。これらのステップを完了したら、データの暗号化を開始できます。

3.3.2 ステップ1: TDEウォレットの場所とタイプの構成

TDEウォレットの場所とタイプを構成するには、init.oraWALLET_ROOTを設定し、データベース・インスタンスでTDE_CONFIGURATIONを設定する必要があります。

  1. Oracleデータベースが存在するサーバーにログインします。
  2. 必要に応じて、ウォレット・ディレクトリを作成します。
    通常、ウォレット・ディレクトリは$ORACLE_BASE/admin/db_unique_nameディレクトリにあり、walletという名前が付いています。このディレクトリは空であると理想的です。
  3. SYSDBA管理権限が付与されたユーザーとして、データベース・インスタンスにログインします。
    たとえば:
    sqlplus sec_admin as sysdba
    Enter password: password
  4. ウォレット・ディレクトリのWALLET_ROOT静的初期化パラメータを設定します。
    TDEウォレットはWALLET_ROOT/tdeに作成されます。たとえば、orclという名前のデータベース・インスタンスの場合は、次のとおりです。
    ALTER SYSTEM SET WALLET_ROOT = '$ORACLE_BASE/ADMIN/ORCL/WALLET' SCOPE = SPFILE SID = '*';
  5. TDE_CONFIGURATIONパラメータを設定して、TDEウォレット・タイプを指定します。
    たとえば:
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=BOTH SID = '*';

    TDEウォレットを構成する場合、この指定のkeystore_typeFILEに設定されている必要があります。

    サーバー・パラメータ・ファイル(spfile)を使用している場合にTDEキーストアを構成するには、次のようにしてscopebothに設定します。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE = BOTH SID = '*';

3.3.3 ステップ2: TDEウォレットの作成

ソフトウェア・キーストアのディレクトリの場所を指定すると、TDEウォレットを作成できるようになります。

3.3.3.1 TDEウォレットの作成について

TDEウォレットには異なる3つのタイプがあります。

パスワードで保護されたTDEウォレット、自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットを作成できます。

問合せSELECT * FROM V$ENCRYPTION_WALLETを実行すると、自動ログインTDEウォレットが自動的に開かれることに注意してください。たとえば、パスワードで保護されたTDEウォレットと、自動ログインTDEウォレットがあるとします。パスワードで保護されたTDEウォレットが開いているときに、そのパスワードで保護されたTDEウォレットを閉じてからV$ENCRYPTION_WALLETビューを問い合せると、TDEウォレットは開いていると出力に示されます。ただし、これはV$ENCRYPTION_WALLETが自動ログインTDEウォレットを開いて、その自動ログイン・ウォレットのステータスを表示したためです。

3.3.3.2 パスワード保護されたソフトウェア・キーストアの作成

パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。

TDEウォレットには、TDE関連のセキュリティ・オブジェクトのみを含めることができ、他のデータベースまたはアプリケーション・コンポーネントによって使用されるセキュリティ・オブジェクトを含めることはできません。また、orapkiまたはmkstoreを使用して、パスワード保護または(ローカル)自動オープンTDEウォレットを作成しないでください。かわりに、ADMINISTER KEY MANAGEMENT文を使用します。
  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  2. SHOW PARAMETERコマンドを使用して、WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。
  3. 次の構文を使用して、ADMINISTER KEY MANAGEMENT SQL文を実行してキーストアを作成します。
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY software_keystore_password;
    

    /tdeディレクトリが存在していない場合は、WALLET_ROOTの下に自動的に作成されます。Oracle Automatic Storage Management (Oracle ASM)で、/tdeディレクトリがまだ存在しない場合は自動的に作成されるように、WALLET_ROOT+DATA/ORACLE_UNQNAMEを指している必要があります。

    この指定では、software_keystore_passwordは、セキュリティ管理者が作成するキーストアのパスワードです。

    たとえば、WALLET_ROOT/tdeディレクトリにキーストアを作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY password;
    
    keystore altered.

    この文を実行すると、キーストアとなるewallet.p12ファイルがキーストアの場所に生成されます。

3.3.3.3 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成

パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。

これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワード保護されたソフトウェア・キーストアから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。

    WALLET_ROOTが設定され、TDE_CONFIGURATIONKEYSTORE_CONFIGURATION=FILEに設定されていることを確認します。

  2. 次の構文を使用して、自動ログイン・キーストアまたはローカル自動ログイン・キーストアを作成します。

    ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE IDENTIFIED BY software_keystore_password;

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

    • LOCALでは、ローカル自動ログイン・ソフトウェア・キーストアを作成できます。そうでない場合、キーストアに他のコンピュータからアクセスできるようにするときは、この句を省略します。LOCALを指定すると、ローカル自動ログイン・ウォレット・ファイルcwallet.ssoが作成され、このウォレットはそれが作成されたホストに関連付けられます。Oracle Real Application Clusters (Oracle RAC)環境の場合は、Oracle RACノードごとにホスト名が異なるため、LOCALキーワードを省略します。Oracle RACインスタンスのローカル自動ログイン・ウォレットを構成した場合は、cwallet.ssoファイルが作成された最初のOracle RACノードのみ、ソフトウェア・キーストアにアクセス可能になります。最初のノードからではなく別のノードからキーストアを開こうとすると、cwallet.ssoが自動的に開かれるという問題が発生するため、ソフトウェア・キーストアを自動で開くことができなくなります。この制限事項が当てはまるのは、Oracle RACクラスタのcwallet.ssoファイルの保持に共有の場所を使用している場合です。これは、LOCALの使用が有効なのは、Oracle RAC環境の各ノードに別個のcwallet.ssoファイル(同じ資格証明を含む)がある場合のみであるためです。

    • software_keystore_passwordは、作成元のキーストアのパスワードです。

    たとえば、パスワード保護されたキーストアの自動ログイン・ソフトウェア・キーストアを/etc/ORACLE/WALLETS/tdeディレクトリに作成するには、次のようにします。

    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE 
    FROM KEYSTORE IDENTIFIED BY password;
    
    keystore altered.

    この文を実行した後、cwallet.ssoファイルがキーストアの場所に表示されます。ewallet.p12ファイルがパスワード保護されたウォレットです。

次のガイドラインに従ってください。

  • 自動ログイン・キーストア(.ssoファイル)の作成後は、PKCS#12ウォレット(ewallet.p12ファイル)は削除しないでください。将来、TDEマスター暗号化キーを再生成またはキー更新するには、PKCS#12ウォレットが必要です。
  • 透過的データ暗号化は、自動ログイン・キーストアが正しい場所(WALLET_ROOT/tde)、ENCRYPTION_WALLET_LOCATIONまたはデフォルトのキーストアの場所)にあり、暗号化されたキーストアを開くSQL文がまだ実行されていない場合にのみ、自動ログイン・キーストアを使用する点に注意してください。ENCRYPTION_WALLET_LOCATIONパラメータが設定されている場合、このパラメータは非推奨となったことに注意してください。かわりに、WALLET_ROOT静的初期化パラメータおよびTDE_CONFIGURATION動的初期化パラメータを使用することをお薦めします。

3.3.4 ステップ3: TDEウォレットのオープン

作成したキーストアのタイプによっては、使用前にTDEウォレットを手動で開くことが必要になります。

3.3.4.1 TDEウォレットのオープンについて

パスワードで保護されたTDEウォレットは、そのTDEウォレット内でのTDEマスター暗号化キーの作成やアクセスが可能になるように開いておく必要があります。

透過的データ暗号化の多くの操作は、TDEウォレットが開いていることを必要とします。TDEウォレットは、次の2つの方法で開くことができます:

  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文を発行して、TDEウォレットを手動で開きます。その後、操作を実行できます。

  • 操作を実行するために使用されるADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。FORCE KEYSTOREは、操作の間にTDEウォレットを一時的に開きます。その操作が完了すると、TDEウォレットは再度閉じられます。FORCE KEYSTOREは、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログインTDEウォレットは閉じられた直後に、ユーザーがパスワードベースのTDEウォレットを開く機会を得る前に続けて開かれます。

TDEウォレットのステータスには、開いている、閉じている、開いていてもマスター暗号化キーがない、開いていても不明なマスター暗号化キーがある、定義されていない、または使用できない(つまりWALLET_ROOT/tdeの場所にない)というものがあります。

手動でTDEウォレットを開くと、そのウォレットは手動で閉じるまで開いたままになります。データベース・インスタンスを再起動するたびに、暗号化と復号化の操作を再有効化するために手動でパスワードTDEウォレットを開く必要があります。

TDEウォレットが開いているかどうかのステータスは、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せると確認できます。

3.3.4.2 TDEウォレットのオープン

TDEウォレットを開くには、ADMINISTER KEY MANAGEMENT文をSET KEYSTORE OPEN句とともに使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  2. ADMINISTER KEY MANAGEMENT文を実行してTDEウォレットを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    IDENTIFIED BY TDE_wallet_password;
    keystore altered.

    自動ログイン・キーストアが構成されていて現時点で開いているときに、パスワードで保護されたTDEウォレットを開くように切り替えるには、次のようにFORCE KEYSTORE句を指定します。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    FORCE KEYSTORE 
    IDENTIFIED BY EXTERNAL STORE;
    keystore altered.

    ここでは、TDEウォレット資格証明が外部ストアに存在するため、この文にIDENTIFIED BY EXTERNAL STORE句が含まれています。これにより、この文自体にTDEウォレットのパスワードを指定することなく、パスワードで保護されたTDEウォレットを開くことができます。

    WALLET_ROOTパラメータが設定されている場合、Oracle Databaseは、パスWALLET_ROOT/PDB_GUID/tde_sepsを検索して、外部ストアを探します。

  3. TDEウォレットが開いていることを確認します。
    SELECT STATUS FROM V$ENCRYPTION_WALLET;

TDEウォレットが開いていても、まだTDEマスター暗号化キーを作成していない場合は、V$ENCRYPTION_WALLETビューのSTATUS列のステータスがOPEN_NO_MASTER_KEYになっていることでわかります。

3.3.5 ステップ4: TDEウォレットでのTDEマスター暗号化キーの設定

TDEウォレットを開くと、そのウォレットに対するTDEマスター暗号化キーを設定できるようになります。

3.3.5.1 TDEウォレットTDEマスター暗号化キーの設定について

TDEマスター暗号化キーはTDEウォレットに格納されます。

TDEマスター暗号化キーでは、TDE表キーと表領域暗号化キーを保護します。デフォルトでは、TDEマスター暗号化キーは、TDEによって生成されるキーです。V$ENCRYPTION_WALLETビューのSTATUS列を問い合せることで、TDEウォレットにTDEマスター暗号化キーが設定されていないかどうか、または不明なTDEマスター暗号化キーがあるかどうかを確認できます。

データベースの外部で作成されたマスター暗号化キーをTDEウォレットにインポートできます(独自のキー持込み(BYOK))。すぐに使用するためのキーを設定することも(ADMINISTER KEY MANAGEMENT SETを使用)、後で使用する(ADMINISTER KEY MANAGEMENT USE KEY文でアクティブ化する)キーを作成することもできます。

3.3.5.2 TDEウォレットでのTDEマスター暗号化キーの設定

TDEウォレット内にTDEマスター暗号化キーを設定するには、ADMINISTER KEY MANAGEMENT文をSET KEY句とともに使用する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。

  2. データベースがREAD WRITEモードでオープンしていることを確認します。

    OPEN_MODEREAD WRITEに設定されている場合、TDEマスター暗号化キーを設定できます。ステータスを検索するには、V$DATABASE動的ビューのOPEN_MODE列を問い合せます。(このビューにアクセスできない場合は、SYSDBAとして接続し、問合せを再試行します。このタイプの問合せに対してSYSKMとして接続するには、これに対するパスワード・ファイルを作成する必要があります。)

  3. 次の構文を使用して、ソフトウェアでTDEマスター暗号化キーを設定します。

    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] 
    [FORCE KEYSTORE] 
    IDENTIFIED BY EXTERNAL STORE | software_keystore_password 
    WITH BACKUP [USING 'backup_identifier'];

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

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

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

    • キーストアが閉じている場合は、FORCE KEYSTOREを含める必要があります。これにより、TDEマスター暗号化キーを設定する前に、キーストアが自動的に開きます。また、FORCE KEYSTORE句は、自動ログインTDEウォレットが構成されていて現時点で開いているときには、パスワードで保護されたTDEウォレットを開くように切り替えます。

    • IDENTIFIED BYでは、TDEウォレットのパスワードを指定します。また、TDEウォレットのパスワードが外部ストアにある場合は、IDENTIFIED BY EXTERNAL STORE句を使用できます。

    • WITH BACKUPでは、TDEウォレットのバックアップを作成します。このオプションは、パスワードで保護されたTDEウォレットに対して使用する必要があります。オプションでUSING句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' ')で囲みます。この識別子は名前付きのTDEウォレット・ファイルに付加されます(たとえば、ewallet_time_stamp_emp_key_backup.p12では、emp_key_backupがバックアップ識別子になっています)。オペレーティング・システムで使用されているファイル命名規則に従ってください。

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY 
    FORCE KEYSTORE
    IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password 
    WITH BACKUP USING 'emp_key_backup';

3.3.6 ステップ5: データの暗号化

この時点で構成が完了しているため、PDB内のデータの暗号化を開始できます。

個別の表の列、あるいは表領域またはデータベース全体のデータを暗号化できます。

3.4 外部キーストアの構成

Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。

3.4.1 外部キーストアの構成について

外部キーストアは、暗号化キーのために安全な記憶域を提供する独立したサーバーまたはデバイスです。

外部キーストアはOracleデータベースの外部にあります。Oracleデータベースは外部キーストアとのインタフェースをとることができますが、Oracleインタフェースの外部でそれらを操作することはできません。Oracleデータベースは外部キーストアにキーの作成をリクエストできますが、このキーが外部データベースに格納される方法を定義することはできません。(反対に、TDEを使用して作成されるソフトウェア・キーストアの場合は、Oracleデータベースが完全な制御権限を持ちます。つまり、SQL文を使用してこのタイプのキーストアを操作できます。)外部キーストアの例は、Oracle Key Vaultキーストアです。サポートされている外部キーストアは、Oracle Key VaultおよびOracle Cloud Infrastructure Vaultです。

外部キーストアを構成するには、まずsqlnet.oraファイルにキーストア・タイプを含め、外部キーストアを開き、外部キーストアTDEマスター暗号化キーを設定します。

Oracle Key Vaultの場合:

IDENTIFIED BY "Oracle_Key_Vault_password"

外部キーストアを構成すると、データの暗号化を開始する準備ができます。

3.4.2 ステップ1: 外部キーストアの構成

TDE_CONFIGURATIONパラメータを設定して、外部キーストアを構成できます。

  1. WALLET_ROOTパラメータが設定されている場合は、Oracle Key Vaultクライアント・ソフトウェアをWALLET_ROOT/okvディレクトリにインストールします。
  2. ALTER SYSTEM管理権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  3. TDE_CONFIGURATION動的初期化パラメータを設定して、次の構文を使用してキーストア・タイプを指定します。
    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=keystore_type" SCOPE=BOTH SID = '*';

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

    • keystore_typeのタイプは次のいずれかです。

      • Oracle Key Vaultキーストアを構成するためのOKV

      • ハードウェア・セキュリティ・モジュール(HSM)キーストアを構成するためのHSM

    たとえば、Oracle Key Vaultを使用するようにデータベースを構成するには、次のようにします。

    ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=OKV" 
    SCOPE=BOTH SID = '*";

3.4.3 ステップ2: Oracle Key Vaultへの接続のオープン

TDEキー管理にOracle Key Vaultを使用するようにデータベースを構成したら、使用前にOracle Key Vaultへの接続を開く必要があります。

3.4.3.1 Oracle Key Vaultへの接続のオープンについて

暗号化または復号化を実行する前に、Oracle Key Vaultへの接続を開いてデータベースがアクセスできるようにしておく必要があります。

データベースにリカバリ操作が必要な場合(たとえば、正常に停止しなかったデータベースにリカバリが必要な暗号化された表領域がある場合)、データベース自体を開く前にOracle Key Vaultへの接続を開いておく必要があります。

Oracle Key Vaultの接続を開くには、次の2つの方法があります:

  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN文を発行して、キーストアを手動で開きます。その後、操作を実行できます。

  • ADMINISTER KEY MANAGEMENT文にFORCE KEYSTORE句を含めます。FORCE KEYSTOREは操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTOREは、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。

キーストアのステータスを確認するには、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せます。キーストアには、CLOSEDNOT_AVAILABLE(つまりWALLET_ROOTの場所にない)、OPENOPEN_NO_MASTER_KEYOPEN_UNKNOWN_MASTER_KEY_STATUSというステータスがあります。

外部キーストアの場合は、データベースがマウント状態だと、データ・ディクショナリを使用できないため、マスター・キーが設定されているかどうかを確認できないということに注意してください。この場合、ステータスはOPEN_UNKNOWN_MASTER_KEY_STATUSになります。

3.4.3.2 外部キーストアを開く

外部キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用します。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  2. 次の構文を使用して、外部キーストアを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN 
    [FORCE KEYSTORE] 
    IDENTIFIED BY EXTERNAL STORE | "external_key_manager_password" 
    [CONTAINER = ALL | CURRENT];

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

    • FORCE KEYSTOREは、キーストアが閉じている場合に、キーストア操作を有効にします。

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

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

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

    マルチテナント環境のOracle Key Vaultの場合、CDB$ROOTおよび開いているすべてのPDBのOracle KeyVaultへの接続を開きます。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN [FORCE KEYSTORE] 
    IDENTIFIED BY Oracle_Key_Vault_password 
    CONTAINER = ALL;
  3. データベース・インスタンスを再起動するたびにこの手順を繰り返します。

3.4.4 ステップ3: Oracle Key VaultでのTDEマスター暗号化キーの設定

Oracle Key Vaultへの接続を開くと、TDEマスター暗号化キーを設定する準備が整います。

3.4.4.1 外部キーストアのTDEマスター暗号化キーの設定について

外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。

Oracle Databaseは、Oracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)のマスター暗号化キーを使用して、データベース内部のTDE表キーまたは表領域暗号化キー(データ暗号化キー)を暗号化または復号化します。

これまでにウォレットによるTDEを構成したことがない場合は、Oracle Key VaultまたはOCI KMSでマスター暗号化キーを設定する必要があります。すでにウォレットによるTDEを構成していた場合は、データベースをOracle Key VaultまたはOCI KMSに移行する必要があります。

現行のマスター暗号化キーとともに、すべてのTDEキーストア(TDEウォレット、Oracle Key VaultおよびOCI KMS)は、マスター暗号化キーをキー更新するキー更新操作のたびに生成される履歴マスター暗号化キーを保持します。こうした履歴マスター・キーにより、以前にいずれかの履歴マスター暗号化キーを使用して作成されたOracle Databaseのバックアップをリストアできます。Oracle Key Vaultを使用するようにデータベースを移行する前に、TDEウォレットからすべての履歴キーをアップロードできるのはOracle Key Vaultのみです。Oracle Key Vaultへの移行後には、TDEウォレットを削除できます。これにより、暗号化サーバーに暗号化キーが存在することを許可しないというセキュリティ規則を満たします。

3.4.4.2 新しいTDEマスター暗号化キーの設定

透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。

  1. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。
  2. データベースがREAD WRITEモードでオープンしていることを確認します。
    OPEN_MODEREAD WRITEに設定されている場合、マスター暗号化キーを設定できます。マルチテナント環境以外の環境に関するステータスを検索するには、V$DATABASE動的ビューのOPEN_MODE列を問い合せます。マルチテナント環境の場合は、show_pdbsコマンドを実行します。
  3. 次の構文を使用して、新しいマスター暗号化キーを設定します。
    ADMINISTER KEY MANAGEMENT SET KEY 
    [USING TAG 'tag'] [FORCE KEYSTORE] 
    IDENTIFIED BY [EXTERNAL STORE | "external_key_manager_password"];

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

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

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

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

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

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

    たとえば:

    ADMINISTER KEY MANAGEMENT SET KEY
    FORCE KEYSTORE 
    IDENTIFIED BY "external_key_manager_password";
    
    keystore altered.
3.4.4.3 暗号化されたデータベースのTDEウォレットからOracle Key VaultまたはOCI KMSへの移行

TDEウォレットからOracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)による集中型キー管理に切り替えるには、現行およびリタイア済のすべてのTDEマスター・キーをアップロードした後で、TDEウォレットからOracle Key VaultまたはOCI KMSにデータベースを移行する必要があります。

Oracle Data PumpやOracle Recovery Managerなどのツールは、TDEウォレットを使用してエクスポートまたはバックアップしたデータに復号化と暗号化の操作を実行するために、古いTDEウォレットにアクセスする必要があります。現在のマスター暗号化キーともに、Oracleキーストアでは、マスター暗号化キーをローテーションするキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター暗号化キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。

3.4.5 ステップ4: 統一モードでのデータの暗号化

外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。

3.5 表の列の暗号化

透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。

3.5.1 表の列の暗号化について

表の個々の列を暗号化できます。

個々の列または表領域全体のどちらを暗号化するかは、表のデータ型によって決まります。また、TDE列暗号化をサポートしていない機能もいくつかあります。

3.5.2 TDE列暗号化で暗号化できるデータ型

Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。

様々なデータ型が使用されるデータ列を暗号化することができます。

サポートされるデータ型は次のとおりです。

  • BINARY_DOUBLE

  • BINARY_FLOAT

  • CHAR

  • DATE

  • INTERVALDAYTOSECOND

  • INTERVALYEARTOMONTH

  • NCHAR

  • NUMBER

  • NVARCHAR2

  • RAW (レガシーまたは拡張)

  • TIMESTAMP (TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEを含む)

  • VARCHAR2 (レガシーまたは拡張)

ラージ・バイナリ・オブジェクト(LOB)を暗号化する必要がある場合は、Oracle SecureFilesを使用できます。Oracle SecureFilesを使用すると、LOBデータを安全に格納できます。SecureFilesを使用してLOBを暗号化するには、CREATE TABLE文またはALTER TABLE文を使用します。

暗号化列のサイズが列のデータ型で許容されるサイズより大きい場合は、列を暗号化できません。

表3-1に、各種データ型の最大許容サイズを示します。

表3-1 各データ型の最大許容サイズ

データ型 最大サイズ

CHAR

1932バイト

VARCHAR2 (レガシー)

3932バイト

VARCHAR2 (拡張)

32,699バイト

NVARCHAR2 (レガシー)

1966バイト

NVARCHAR2 (拡張)

16,315バイト

NCHAR

966バイト

RAW (拡張)

32,699バイト

ノート:

TDE表領域暗号化には、これらのデータ型制限はありません。

3.5.3 TDE列暗号化の使用に関する制限

TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。

TDE列暗号化は、次のデータベース機能と併用しないでください。

  • Bツリー以外の索引タイプ

  • 索引内のレンジ・スキャン検索

  • 同期チェンジ・データ・キャプチャ

  • トランスポータブル表領域

  • ID列として作成された列

また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。

サポートされていないこれらの機能を使用する必要があるアプリケーションは、DBMS_CRYPTO PL/SQLパッケージを使用して暗号化を実行できます。

透過的データ暗号化は、ディスクまたは他のメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、Oracle Databaseセキュリティ・ガイドに記載されているネットワーク暗号化ソリューションを使用します。

3.5.4 暗号化列を含む表の作成

Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。

3.5.4.1 暗号化列を含む表の作成について

CREATE TABLE SQL文を使用して、暗号化列を持つ表を作成できます。

暗号化列を含むリレーショナル表を作成するには、CREATE TABLE SQL文でデータベース列を定義するときにSQL ENCRYPT句を指定します。

3.5.4.2 デフォルト・アルゴリズムを使用する暗号化列を含む表の作成

TDEでは、192ビット長のキーを使用するAES暗号化アルゴリズム(AES192)がデフォルトで使用されます。

アルゴリズムを指定しないで表の列を暗号化すると、その列はAES192アルゴリズムを使用して暗号化されます。

暗号化の前にTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。また、TDEにより整合性をチェックするために、データにメッセージ認証コード(MAC)が追加されます。デフォルトでは、SHA-1整合性アルゴリズムが使用されます。

  • 列を暗号化する表を作成するには、ENCRYPT句を含むCREATE TABLE SQL文を使用します。

    たとえば、デフォルト・アルゴリズムを使用して表の列を暗号化するには、次のようにします。

    CREATE TABLE employee (
         first_name VARCHAR2(128),
         last_name VARCHAR2(128),
         empID NUMBER,
         salary NUMBER(6) ENCRYPT);

    この例では、暗号化列を含む新しい表を作成しています(salary)。この列は、デフォルトの暗号化アルゴリズム(AES192)を使用して暗号化されます。saltおよびMACはデフォルトで追加されます。この例は、キーストアが開かれていて、マスター暗号化キーが設定されていることを前提としています。

ノート:

1つの表に複数の暗号化列がある場合、これらのすべての列で暗号化アルゴリズムと整合性アルゴリズムの同じペアが使用される必要があります。

saltは列レベルで指定されます。つまり、表の暗号化列には、saltが使用される暗号化列とsaltが使用されない暗号化列が混在していてもかまいません。

3.5.4.3 アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成

CREATE TABLE SQL文を使用して、暗号化列を持つ表を作成します。

暗号化の前に、デフォルトでTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。ただし、暗号化列を索引付けする場合、NO SALTパラメータを使用する必要があります。

  • デフォルト以外のアルゴリズムの暗号化列、またはアルゴリズムなしの暗号化列を使用する表を作成するには、次のようにCREATE TABLE SQL文を実行します。

    • アルゴリズムを使用しない場合は、ENCRYPT NO SALT句を含めます。

    • デフォルト以外のアルゴリズムを使用する場合は、ENCRYPT USING句を使用し、その後に一重引用符で囲んだ次のいずれかのアルゴリズムを続けます。

      • 3DES168

      • AES128

      • AES192 (デフォルト)

      • AES256

次の例では、empID列およびsalary列の暗号化設定の指定方法を示します。

CREATE TABLE employee (
     first_name VARCHAR2(128),
     last_name VARCHAR2(128),
     empID NUMBER ENCRYPT NO SALT,
     salary NUMBER(6) ENCRYPT USING '3DES168');

この例では、次のようになります。

  • empID列は暗号化されますが、saltを使用しません。表のすべての暗号化列は、同じ暗号化アルゴリズムを使用する必要があるため、empID列とsalary列の両方は、3DES168暗号化アルゴリズムを使用します。

  • salary列は、3DES168暗号化アルゴリズムを使用して暗号化されます。アルゴリズムを指定する文字列は、一重引用符(' ')で囲む必要があることに注意してください。salary列では、デフォルトでsaltが使用されます。

3.5.4.4 NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上

TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。

表の行および暗号化列の数が多い場合、TDEチェックをバイパスすることで、かなりの量のディスク領域になることがあります。さらに、処理サイクルが節約され、TDEに関連するパフォーマンス・オーバーヘッドが減少します。

TDEでは、デフォルトでSHA-1整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1アルゴリズムを使用している場合は、NOMACパラメータによって同じ表の別の列を暗号化することはできません。

  • 暗号化および復号化操作での整合性チェックをバイパスするには、CREATE TABLE文およびALTER TABLE文でNOMACパラメータを使用します。

3.5.4.5 例: CREATE TABLE文でのNOMACパラメータの使用

CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。

例3-1では、暗号化列を含む表を作成しています。empID列は、NOMACパラメータを使用して暗号化されます。

例3-1 CREATE TABLE文でのNOMACパラメータの使用

CREATE TABLE employee (
     first_name VARCHAR2(128),
     last_name VARCHAR2(128),
     empID NUMBER ENCRYPT 'NOMAC' ,
     salary NUMBER(6));
3.5.4.6 例: 表の整合性アルゴリズムの変更

異なるオフライン表領域を並列で変換するには、異なるフォアグラウンドでALTER TABLE SQL文を使用できます。

例3-2に、表内の暗号化列の整合性アルゴリズムを変更する方法を示します。暗号化アルゴリズムを3DES168に、整合性アルゴリズムをSHA-1に設定しています。2番目のALTER TABLE文では、整合性アルゴリズムをNOMACに設定しています。

例3-2 表の整合性アルゴリズムの変更

ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'SHA-1';

ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'NOMAC';
3.5.4.7 外部表への暗号化列の作成

外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。

外部表は、ORACLE_DATAPUMPアクセス・ドライバを使用して更新できます。

  • 外部表の特定の列を暗号化するには、列を定義するときにENCRYPT句を使用します。

    列は、システム生成キーによって暗号化されます。たとえば、次のCREATE TABLE SQL文は、3DES168アルゴリズムを使用してssn列を暗号化します。

    CREATE TABLE emp_ext (
        first_name,
        ....
        ssn ENCRYPT USING '3DES168',
        ....
    
    

外部表を新しい場所に移動することを予定している場合、列の暗号化にランダム生成のキーは使用できません。これは、新しい場所ではランダム生成のキーが使用できないためです。

このような場合は、列を暗号化する際にパスワードを指定する必要があります。データを移動した後で、同じパスワードを使用して、新しい場所の暗号化列データへのアクセスに必要なキーを再生成できます。

表パーティション交換でもパスワード保護されたTDE表キーが必要になります。

例3-3では、TDE表キーを作成するためのパスワードを使用して外部表を作成しています。

例3-3 パスワード生成TDE表キーを使用した新しい外部表の作成

CREATE TABLE emp_ext (
     first_name,
     last_name,
     empID,
     salary,
     ssn ENCRYPT IDENTIFIED BY password
)  ORGANIZATION EXTERNAL
   (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY "D_DIR"
    LOCATION('emp_ext.dat')
    )
    REJECT LIMIT UNLIMITED
AS SELECT * FROM EMPLOYEE;

3.5.5 既存の表にある列の暗号化

既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。

3.5.5.1 既存の表にある列の暗号化について

ALTER TABLE SQL文では、既存の表にある列を暗号化できます。

既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ADD句またはMODIFY句を含むALTER TABLE SQL文を使用します。

3.5.5.2 既存の表への暗号化列の追加

既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALTを使用して列を索引付けすることができます。

  • 既存の表に暗号化列を追加するには、ALTER TABLE ADD文を使用して、ENCRYPT句で新しい列を指定します。

例3-4では、employeeという既存の表に暗号化列ssnを追加しています。ssn列は、デフォルトのAES192アルゴリズムを使用して暗号化されます。saltおよびMACはデフォルトで追加されます。

例3-4 既存の表への暗号化列の追加

ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);
3.5.5.3 暗号化されていない列の暗号化

ALTER TABLE MODIFY文を使用して、既存の暗号化されていない列を暗号化できます。

  • 暗号化されていない既存の列を暗号化するには、ALTER TABLE MODIFY文を使用して、ENCRYPT句で、暗号化されてない列を指定します。

次の例では、employee表のfirst_name列を暗号化しています。first_name列は、デフォルトのAES192アルゴリズムを使用して暗号化されます。saltはデフォルトでデータに追加されます。別のアルゴリズムを使用して列を暗号化できます。列を索引付けする場合、NO SALTを指定する必要があります。NOMACパラメータを使用して、整合性チェックをバイパスすることもできます。

ALTER TABLE employee MODIFY (first_name ENCRYPT);

次の例では、NOMACパラメータを使用してemployee表のfirst_name列を暗号化しています。

ALTER TABLE employee MODIFY (first_name ENCRYPT 'NOMAC');
3.5.5.4 列の暗号化の無効化

互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。

  • 列の暗号化を無効にするには、ALTER TABLE MODIFYコマンドを使用し、DECRYPT句を指定します。

例3-5では、employee表のfirst_name列を復号化しています。

例3-5 列の暗号化の無効化

ALTER TABLE employee MODIFY (first_name DECRYPT);

3.5.6 暗号化列に対する索引の作成

暗号化された列に対して索引を作成できます。

索引付け対象の列は、saltなしで暗号化されている必要があります。saltを使用して列が暗号化されている場合、ORA-28338: 索引付けされた列は、saltを使用して暗号化できませんエラーが発生します。

  • 暗号化列に索引を作成する場合は、ENCRYPT NO SALT句を含むCREATE INDEX文を使用します。

例3-6に、saltなしで暗号化された列に対して索引を作成する方法を示します。

例3-6 saltなしで暗号化された列に対する索引の作成

CREATE TABLE employee (
   first_name VARCHAR2(128),
   last_name VARCHAR2(128),
   empID NUMBER ENCRYPT NO SALT,
   salary NUMBER(6) ENCRYPT USING '3DES168');

CREATE INDEX employee_idx on employee (empID);

3.5.7 暗号化列へのSaltの追加

ソルトは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。

Saltにより、同じ平文データが常に同じ暗号化テキストに変換されることがなくなります。saltを追加すると、侵入者がデータを盗むために使用する一般的な方法の1つである暗号化テキストのパターン一致を排除できます。saltを追加するには、暗号化されたデータ値ごとに16バイトの追加記憶域が必要です。

  • 暗号化列に対してsaltを追加または削除するには、ALTER TABLE MODIFY SQL文を使用します。

たとえば、saltを使用してfirst_name列を暗号化するとします。first_name列が以前にsaltなしで暗号化されていた場合は、ALTER TABLE MODIFY文によって、saltを使用して列が再暗号化されます。

ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);

3.5.8 暗号化列からのSaltの削除

ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。

  • 暗号化列からsaltを削除するには、ALTER TABLE SQL文でENCRYPT NO SALT句を使用します。

たとえば、first_name列からsaltを削除するとします。saltを使用して暗号化された列に索引を付ける必要がある場合は、索引を付ける前に、この文を使用してsaltを削除します。

ALTER TABLE employee MODIFY (first_name ENCRYPT NO SALT);

3.5.9 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更

ALTER TABLE SQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。

各表では、その列に1つのTDE表キーのみ指定できます。TDE表キーはALTER TABLE文を使用して再生成できます。このプロセスでは、新しいキーを生成し、以前のキーを使用して表のデータを復号化し、新しいキーを使用してデータを再暗号化し、表のメタデータを新しいキー情報で更新します。新しいTDE表キーに対して別の暗号化アルゴリズムを使用することもできます。

  • 暗号化列を含む表の暗号化キーまたはアルゴリズムを変更するには、ALTER TABLE SQL文でREKEYまたはREKEY USING句を使用します。

たとえば:

ALTER TABLE employee REKEY;

例3-7では、3DES168アルゴリズムを使用してemployee表に対するTDE表キーを再生成しています。

例3-7 暗号化された表の列の暗号化キーおよびアルゴリズムの変更

ALTER TABLE employee REKEY USING '3DES168';

3.6 表領域およびデータベースの暗号化変換

オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。

3.6.1 表領域およびデータベースの暗号化変換について

CREATE TABLESPACE SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACEによって、既存の表領域を暗号化できます。

新規または既存の表領域の暗号化に加えて、全データベースを暗号化できます。その場合、Oracle管理の表領域(このリリースではSYSTEMSYSAUXTEMPおよびUNDO表領域)も暗号化されます。全データベースを暗号化するには、ALTER DATABASEではなく、ALTER TABLESPACEを使用してOracle管理の表領域を暗号化します。

次の表で、表領域およびデータベースのオフラインとオンラインの暗号化変換の違いを比較します。

表3-2 オフラインとオンラインの表領域およびデータベースの暗号化変換

機能 オフライン変換 オンライン変換

最小の変換機能があるリリース

Oracleデータベース11gリリース2 (11.2)

Oracle Database 12cリリース2 (12.2)以降

バックポートできるもの

AES128アルゴリズムを使用してデータ・ファイルを暗号化または復号化する機能(ALTER DATABASE DATAFILE data_file ENCRYPTまたはDECRYPTを使用)は、Oracle Databaseリリース12.1.0.2および11.2.0.4で使用できます。

なし

サポートされるアルゴリズム

TDEがサポートするすべての対称型暗号化アルゴリズム。サポートされる暗号化と整合性のアルゴリズムを参照してください。「既存のオフライン表領域の暗号化変換について」を参照してください。

TDEがサポートするすべての対称型暗号化アルゴリズム。サポートされる暗号化と整合性のアルゴリズムを参照してください。「既存のオンライン表領域の暗号化変換について」を参照してください。

変換をいつ実行できるか

表領域がオフラインであるか、データベースがマウント段階にあるとき。

表領域がオンラインで、データベースが読取り/書込みモードで開いているとき。

変換に補助領域が必要か

いいえ

はい。ガイドラインは、オンライン変換での既存の表領域の暗号化を参照してください。

Oracle Data Guardの変換ガイドライン

プライマリおよびスタンバイの両方を手動で変換します。スタンバイを最初に変換し、最小停止時間に切り替えます

プライマリを変換した後、スタンバイ変換が自動的に行われます。スタンバイでは、オンライン変換を直接実行することはできません。

表領域SYSTEMSYSAUXおよびUNDOの暗号化(データベース変換)

Oracle Database 12cリリース2 (12.2)以降のみ。COMPATIBILITY12.2.0.0に設定する必要があります。自動ログイン・キーストアのみがサポートされています。

Oracle Database 12cリリース2 (12.2)以降のみ。COMPATIBILITY12.2.0.0に設定する必要があります。

既存のTEMP表領域を変換できるか

いいえ、ただし、Oracle Database 12cリリース2 (12.2)以降でTEMP表領域を作成して暗号化し、それをデフォルトの一時表領域とし、元のTEMP表領域を削除できます。

いいえ、ただし、Oracle Database 12cリリース2 (12.2)以降でTEMP表領域を作成して暗号化し、それをデフォルトの一時表領域とし、元のTEMP表領域を削除できます。

既存の表領域を復号化できるか

以前にオフライン暗号化操作によって暗号化された表領域またはデータ・ファイルのみ復号化できます。一度暗号化されたUNDO表領域を復号化することはお薦めしません。

はい、ただし、一度暗号化されたUNDO表領域を復号化することはお薦めしません。

暗号化キーをキー更新できるか

いいえ、ただし、表領域が暗号化された後、オンライン変換を使用してOracle Database 12cリリース2 (12.2)の互換性でキー変更できます。

はい

暗号化操作を並列して実行できるか

複数のユーザー・セッションを実行しているデータ・ファイル・レベルで、並列した暗号化変換を実行できます。

複数のユーザー・セッションが実行している表領域レベルで、並列した暗号化変換を実行できます。

暗号化変換SQL文が完了できなかった場合どうするか

暗号化または復号化SQL文を再発行して、表領域内のすべてのデータ・ファイルが確実に一貫して暗号化または復号化されるようにします。

FINISH句を使用してSQL文を再度実行します。

3.6.2 暗号化された表領域に対する閉じられたTDEキーストアの影響

Oracle管理の表領域が暗号化されている場合は、TDEキーストアを閉じたり、移行したりできますが、Oracle管理の表領域に対する操作を禁止するにはデータベース・システム自体を停止する必要があります。

閉じられたTDEキーストアは、暗号化されたOracle管理の表領域(このリリースでは、SYSTEMSYSAUXTEMPおよびUNDO表領域)に関係する操作に影響しません。これにより、TDEキーストアが閉じられているときにも、バックグラウンド・プロセス(ログ・ライターなど)によって実行される操作をこれらの表領域に対して引き続き実行できます。暗号化されたOracle管理の表領域に対する操作を禁止する場合は、データベースを停止する必要があります。

ユーザー作成の表領域に関しては、TDEキーストアが閉じられていることによって、キーのローテーション、表領域の復号化などの操作が、以前のリリースと同様にORA-28365 ウォレットがオープンしていませんというエラーで失敗します。ユーザー作成の表領域に対する操作を禁止する場合は、TDEキーストアを閉じます(または、データベースを停止します)。

ユーザー作成のデータは、TDEキーストアが開いている間にユーザー作成の表領域から暗号化されたOracle管理の表領域にコピーできます(たとえば、DBMS_STATS統計収集などの内部プロセスによって)。キーストアを閉じた場合、ユーザーがV$ENCRYPTION_WALLETビューを問い合せたときにTDEキーストアがCLOSED状態であっても、後でこのデータを表示することは妨げられません。暗号化されたユーザー作成の表領域を問い合せることによって元のデータにアクセスしようとすると失敗し、ORA-28365 ウォレットがオープンしていませんというエラーが返されます。

表3-3に、ユーザー作成の表領域およびOracle管理の表領域の暗号化されたデータに対する操作を禁止または許可するために必要な操作を示します。たとえば、最初のシナリオでは、ユーザー作成の表領域とOracle管理の表領域の両方が暗号化されています。この場合、暗号化されたユーザー作成の表領域の暗号化データに関しては、管理者はキーストアを開閉し、暗号化されたユーザー作成の表領域を持つデータベースを停止およびオープンできます。暗号化されたOracle管理の表領域が構成されている場合、管理者はデータベースを停止することで操作を禁止できます。また、マウント・モードで起動してTDEキーストアを開き、データベースをオープンすることで操作を許可できます。(暗号化されたOracle管理の表領域にあるブートストラップ・ディクショナリ表を復号化するためにTDEマスター暗号化キーが必要になる可能性があるため、データベースをオープンするにTDEキーストアを開く必要があります。)この表の該当なしフラグは暗号化されていないデータを示しており、インスタンスが停止されないかぎり、常に操作できます。

表3-3 暗号化データの操作を禁止または許可するために必要なコマンド

表領域の暗号化のシナリオ 暗号化されたユーザー作成の表領域のデータの操作を禁止するコマンド 暗号化されたOracle管理の表領域のデータの操作を禁止するコマンド 暗号化されたユーザー作成の表領域のデータの操作を許可するコマンド 暗号化されたOracle管理の表領域のデータの操作を許可するコマンド
ユーザー作成の表領域およびOracle管理の表領域の両方が暗号化されている
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY password;
  • SHUTDOWN
SHUTDOWN
  • STARTUP MOUNT;
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;
  • ALTER DATABASE OPEN
  • STARTUP MOUNT;
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;
  • ALTER DATABASE OPEN
ユーザー表領域は暗号化されていて、Oracle管理の表領域は暗号化されていない
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY password;
  • SHUTDOWN
該当なし
  • STARTUP MOUNT;
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;
  • ALTER DATABASE OPEN
該当なし
ユーザー表領域は暗号化されておらず、Oracle管理の表領域は暗号化されている 該当なし SHUTDOWN 該当なし
  • STARTUP MOUNT;
  • ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;
  • ALTER DATABASE OPEN
ユーザー表領域もOracle管理の表領域も暗号化されていない 該当なし 該当なし 該当なし 該当なし

3.6.3 透過的データ暗号化表領域暗号化の使用に関する制限

表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。

次の制約に注意してください:

  • 透過的データ暗号化(TDE)表領域暗号化では、SQLレイヤーでデータを暗号化および復号化するTDE列暗号化とは対照的に、読取りおよび書込み操作時にデータを暗号化または復号化します。このことは、データ型制限や索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。

  • インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。

3.6.4 暗号化された新しい表領域の作成

新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。

3.6.4.1 ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定

暗号化された表領域を作成する前に、COMPATIBLE初期化パラメータを設定する必要があります。

3.6.4.1.1 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について

最小のCOMPATIBLE初期化パラメータ設定である11.2.0.0では、表領域暗号化機能の完全なセットが有効になります。

互換性を11.2.0.0に設定すると、次の機能を使用できます。

  • 11.2.0.0に設定することにより、データベースでは、データの暗号化にサポートしている4つのアルゴリズム(3DES168AES128AES192およびAES256)の任意のものを使用できます。

  • 11.2.0.0に設定することで、TDEウォレットから外部キーストアにキーを移行できます(TDEマスター暗号化キーが外部キーストア用に構成されていることを確認してください)。

  • 11.2.0.0に設定することにより、TDEマスター暗号化キーをキー更新できます。

COMPATIBLEパラメータを11.2.0.0に設定すると、変更を元に戻せないことに注意してください。表領域暗号化を使用するには、互換性設定が最低でも11.2.0.0であることを確認します。

3.6.4.1.2 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定

COMPATIBLE初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。

  1. データベース・インスタンスにログインします。

  2. COMPATIBLEパラメータの現在の設定を確認します。

    たとえば:

    SHOW PARAMETER COMPATIBLE
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    compatible                           string      11.2.0.0
    noncdbcompatible                     BOOLEAN     FALSE
    
  3. COMPATIBLEパラメータを変更する必要がある場合、この手順の残りのステップを実行します。

    値は12.2.0.0以上である必要があります。

  4. コマンドラインから、データベース・インスタンスの初期化パラメータ・ファイルを特定します。

    • UNIXシステム: このファイルは、ORACLE_HOME/dbsディレクトリにあり、initORACLE_SID.ora (initmydb.oraなど)という名前です。

    • Windowsシステム: このファイルは、ORACLE_HOME\databaseディレクトリにあり、initORACLE_SID.ora (initmydb.oraなど)という名前です。

  5. 初期化パラメータ・ファイルを新しいCOMPATIBLE設定を使用するよう編集します。

    たとえば:

    COMPATIBLE=12.2.0.0
  6. SQL*Plusで、SYSDBA管理権限を持つユーザーとして接続し、データベースを再起動します。

    たとえば:

    CONNECT /AS SYSDBA
    SHUTDOWN
    STARTUP
    

    表領域の暗号化を使用している場合は、データベース・マウントでキーストアを開きます。キーストアは、暗号化された表領域のデータにアクセスする前に開いている必要があります。

    たとえば:

    STARTUP MOUNT;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
    ALTER DATABASE OPEN;
3.6.4.2 ステップ2: 表領域TDEマスター暗号化キーの設定

TDEマスター暗号化キーが構成されていることを確認する必要があります。

3.6.4.3 ステップ3: 暗号化された表領域の作成

COMPATIBLE初期化パラメータを設定したら、暗号化された表領域の作成は完了です。

3.6.4.3.1 暗号化された表領域の作成について

暗号化された表領域を作成するには、CREATE TABLESPACE SQL文を使用します。

暗号化された表領域を作成するには、CREATE TABLESPACEシステム権限が必要です。

Oracle Data Pumpを使用して、暗号化された表領域にデータをインポートできます。CREATE TABLE...AS SELECT...ALTER TABLE...MOVE...などのSQL文を使用して、暗号化された表領域にデータを移動することもできます。CREATE TABLE...AS SELECT...文は、既存の表から表を作成します。ALTER TABLE...MOVE...文は、暗号化された表領域に表を移動します。

セキュリティ上の理由から、NO SALTオプションを使用して表領域を暗号化することはできません。

表領域が暗号化されたかどうかを確認するために、DBA_TABLESPACESデータ・ディクショナリ・ビューおよびUSER_TABLESPACESデータ・ディクショナリ・ビューのENCRYPTED列を問い合せることができます。

関連項目:

DBA_TABLESPACESおよびUSER_TABLESPACESデータ・ディクショナリ・ビューの詳細は、Oracle Databaseリファレンスを参照してください。

3.6.4.3.2 暗号化された表領域の作成

暗号化された表領域を作成するには、ENCRYPTION USING句を含むCREATE TABLESPACE文を使用する必要があります。

  • 暗号化句を使用してCREATE TABLESPACE文を実行します。

    たとえば:

    CREATE TABLESPACE encrypt_ts
      DATAFILE '$ORACLE_HOME/dbs/encrypt_df.dbf' SIZE 1M
      ENCRYPTION USING 'AES256' ENCRYPT;
    

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

    • ENCRYPTION USING 'AES256' ENCRYPTは、暗号化アルゴリズムおよび暗号化キーの長さを指定します。ENCRYPT句は、表領域を暗号化します。この設定は、一重引用符(' ')で囲みます。キー長は、アルゴリズムの名前に含まれています。暗号化アルゴリズムを指定しない場合は、デフォルトの暗号化アルゴリズムAES128が使用されます。

3.6.4.3.3 例: AES192を使用する暗号化された表領域の作成

CREATE TABLESPACE SQL文を使用して、暗号化された表領域を作成できます。

例3-8では、AES192アルゴリズムを使用して暗号化された、securespace_1という表領域を作成します。

例3-8 AES192を使用する暗号化された表領域の作成

CREATE TABLESPACE securespace_1
DATAFILE '/home/user/oradata/secure01.dbf'
SIZE 150M
ENCRYPTION USING 'AES192' ENCRYPT;
3.6.4.3.4 例: デフォルト・アルゴリズムを使用する暗号化された表領域の作成

CREATE TABLESPACE SQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。

例3-9では、securespace_2という表領域を作成します。暗号化アルゴリズムが指定されていないため、デフォルトの暗号化アルゴリズム(AES128)が使用されます。キー長は128ビットです。

例3-9 デフォルト・アルゴリズムを使用する暗号化された表領域の作成

CREATE TABLESPACE securespace_2
DATAFILE '/home/user/oradata/secure01.dbf'
SIZE 150M
ENCRYPTION ENCRYPT;

3.6.5 表領域暗号化のデフォルト・アルゴリズムの設定

TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMは、特定の暗号化シナリオに適用されます。

それは次のような場合です。
  • 暗号化アルゴリズムを指定できない暗号化コマンド
  • 暗号化構文なしで作成された新しい表領域
  • SYSTEM表領域の暗号化アルゴリズム

_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMは、Oracle Key Vaultでの最初のSET KEY操作またはソフトウェア・キーストアベースのTDE構成のCREATE KEYSTOREコマンドの前に設定されている場合にのみ有効になります。

_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMは、オフライン表領域暗号化操作とオンライン表領域暗号化操作の両方に適用されます。TABLESPACE_ENCRYPTIONが適切に設定されている場合、将来の暗号化表領域にも適用されます。マルチテナント環境では、CDBルートまたは個々のPDBでTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMを設定できます。

  • 次のALTER SYSTEM文を入力します。
    ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value SCOPE=BOTH;

    この指定では、valueに暗号化アルゴリズムAES128AES192AES2563DES168ARIA128ARIA192またはARIA256のいずれかを指定できます。デフォルトの暗号化アルゴリズムはAES128です。

3.6.6 将来の表領域の暗号化

将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。

3.6.6.1 将来の表領域の暗号化について

ENCRYPT_NEW_TABLESPACES動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。

デフォルトでは、すべてのOracle Cloudデータベースは暗号化されます。そのようなデータベースに既製のアプリケーションをインストールすると、そのインストール・スクリプトには暗号化構文がない可能性があります。この場合、ENCRYPT_NEW_TABLESPACESCLOUD_ONLYに設定されているため、これらの表領域は暗号化されて作成されます。

Oracle Cloud環境では、Oracle Cloud環境およびオンプレミスの環境に暗号化された表領域を作成するときに、次のシナリオが発生する場合があります。

  • Oracle Cloud内にデータベースを作成している場合、TABLESPACE_ENCRYPTIONパラメータがAUTO_ENABLEに設定されているため、表領域は暗号化されます。ところが、そういった意図がないか、暗号化されたデータベースをオンプレミスに戻すAdvanced Security Optionライセンスさえも持っていない場合があります。この場合、Oracle Recovery Manager (Oracle RMAN)には、AS DECRYPTEDを複製またはリストアするオプションがあります。

  • プライマリ・データベースがオンプレミスで、スタンバイ・データベースがOracle Cloudにある、ハイブリッド環境を作成します。切り替え操作が行われた場合、新しいプライマリはOracle Cloud上になります。たとえば、Advanced Security Option (ASO)ライセンスを持っておらず、自動的に暗号化された表領域がOracle Cloudにあるとします。オンプレミスのスタンバイ・データベースも自動的に暗号化されます。この場合、オンプレミス・スタンバイ・データベースにAdvanced Securityライセンス(透過的データ暗号化およびデータ・リダクションを含む)が必要か、スタンバイ・データベースを使用できません。

3.6.6.2 将来の表領域の暗号化設定

ENCRYPT_NEW_TABLESPACESデータベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。

ノート:

Oracle Database 19.16以降、ENCRYPT_NEW_TABLESPACESは非推奨になっています。
  • SQL*Plusで、次のALTER SYSTEM文を入力します。
    ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES = value;

    この仕様では、valueは次のようになります。

    • CLOUD_ONLYでは、CREATE TABLESPACE SQL文のENCRYPTION句を指定しない場合、表領域暗号化のデフォルト・アルゴリズムを使用してクラウドの表領域を透過的に暗号化します。Oracle Cloud Infrastructure (OCI)データベースでは、Oracleの暗号化義務に準拠するために、この値は変更できません。表領域をオンプレミスで作成する場合、作成は入力したCREATE TABLESPACE文の指定に従います。たとえば、ENCRYPTION句を省略した場合、表領域は暗号化されずに作成されます。この句を含めて別のアルゴリズムを使用した場合、表領域はそのアルゴリズムを使用します。CLOUD_ONLYがデフォルトです。

    • AUTO_ENABLEでは、CREATE TABLESPACE SQL文のENCRYPTION句を指定していない場合や、TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM動的パラメータでアルゴリズムを指定した場合に、表領域暗号化のデフォルトのアルゴリズムと暗号モード(XTS)を使用して表領域を自動的に暗号化します。

    • ALWAYSでは、クラウドおよびオンプレミスの両方のシナリオにおいて、CREATE TABLESPACEENCRYPTION句を省略した場合、表領域暗号化のデフォルト・アルゴリズムを使用して表領域を自動的に暗号化します。

      ただし、ENCRYPTION句を指定した場合、指定したアルゴリズムが表領域暗号化のデフォルト・アルゴリズムよりも優先されます。
    • DDLでは、Oracle Cloudおよびオンプレミスの両方の環境において、CREATE TABLESPACEENCRYPTION句の指定された設定を使用して表領域を暗号化します。

3.6.7 データ・ディクショナリ内の機密資格証明データの暗号化

SYS.LINK$システム表およびSYS.SCHEDULER$_CREDENTIALシステム表内の機密資格証明データを暗号化できます。

デフォルトでは、SYS.LINK$システム表内およびSYS.SCHEDULER$_CREDENTIALシステム表内の資格証明データは、不明瞭化されています。ただし、多くのタイプの不明瞭化解除アルゴリズムが使用可能であるため、Oracleでは、この機密資格証明データを暗号化することをお薦めします。データ・ディクショナリ資格証明のステータスを確認するために、DICTIONARY_CREDENTIALS_ENCRYPTデータ・ディクショナリ・ビューを問い合せることができます。

これらの2つのシステム表内の機密資格証明データの暗号化には、透過的データ暗号化を使用します。資格証明データの暗号化には、AES256アルゴリズムを使用します。資格証明データを暗号化するには、Oracle Advanced Security Optionライセンスを所有している必要はありませんが、SYSKM管理権限が付与されている必要があります。また、データベースには、開いているキーストアがある必要があります。

3.6.8 既存のオフライン表領域の暗号化変換

ALTER TABLESPACE SQL文のOFFLINEENCRYPTおよびDECRYPT句を使用して、オフライン暗号化変換を実行できます。

3.6.8.1 既存のオフライン表領域の暗号化変換について

表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。

このオフラインの暗号化方法は、データベースの互換性をOracle Database 11cリリース2 (11.2)またはOracle Database 12cリリース1 (12.1)からリリース19cに変更する(元に戻すことはできません)ことを計画していない場合に使用します。オフラインの暗号化方法は、このデータベースをリリース18cにアップグレードする前に、透過的データ暗号化を簡単に利用する場合にも便利です。オフライン表領域は、暗号化と復号化の両方を行うことができます。

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

  • Oracle Database提供の表領域(SYSTEMSYSAUXおよびUNDO)をオフライン変換方法を使用して暗号化する場合には、オフライン変換で既存のデータベースを暗号化する場合に推奨される方法を使用する必要があります。

  • オンラインの方法を使用して、キー更新、暗号化アルゴリズムの変更またはオフラインの方法で以前に暗号化した表領域を復号化できます。

  • Oracle Data Guardを構成している場合には、先にスタンバイの表領域を暗号化し、プライマリに切り替えてから、新しいスタンバイ・データベースの表領域をオフライン暗号化することによって、停止時間を最小限に抑えることができます。オフライン暗号化(データファイルおよび表領域レベルの両方)は、最初にスタンバイで実行されます。オンライン暗号化はOracle Data Guardトランザクションであるため、スタンバイ・データベースでリプレイされます。

  • USING ... ENCRYPT句を使用して、暗号化アルゴリズムを指定できます。サポートされているアルゴリズムは、AES128AES192AES256およびその他(ARIAGOSTなど)です。暗号化キーを確認するには、V$DATABASE_KEY_INFOビューのENCRYPTIONALG列を問い合せます。

  • 今後のオフライン表領域暗号化操作のためにデフォルトの暗号化アルゴリズムを設定するには、TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM動的パラメータを設定します。

  • ALTER TABLESPACE文を使用すると、各種のデータ・ファイルを暗号化するために、オフライン表領域を複数のフォアグラウンド・セッションを使用して並列で変換できます。

  • Oracle Data Guardを使用する場合には、先にスタンバイの表領域を暗号化し、切り替えてから、次に元のプライマリの表領域を暗号化することによって、停止時間を最小限に抑えることができます。

  • Oracle Database 11gリリース2 (11.2.0.4)およびOracle Database 12cリリース1 (12.1.0.2)では、表領域SYSTEMおよびSYSAUXのオフライン暗号化は実行できません。また、これらのリリースでUNDO表領域をオフラインで暗号化することはお薦めしません。これを行うとキーストアを閉じられなくなり、データベースが機能しなくなります。また、暗号化された表領域に関連付けられたすべてのUNDOレコードは、すでに自動的にUNDO表領域に暗号化されているため、データベースがオフラインの間にUNDO表領域を暗号化する必要はありません。TEMP表領域を暗号化するには、削除してから、暗号化済として再作成する必要があります。

3.6.8.2 オフライン変換での既存のユーザー定義表領域の暗号化

既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE SQL文をOFFLINE句およびENCRYPT句とともに使用できます。

この項で説明する手順は、データベース内の個々のユーザーが作成した表領域を暗号化する場合に適用されます。これらの表領域はオフラインで暗号化できます。ただし、Oracle Database提供の表領域SYSTEMおよびUNDOは、オフラインにできません。表領域をオフラインで暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。
  1. 管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
    SYSTEM表領域およびSYSAUX表領域で操作を実行するには、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。
  2. 表領域をオフラインにします。
    ALTER TABLESPACE users OFFLINE NORMAL;
  3. 表領域をバックアップします。

    オフライン変換の方法では、補助ディスク領域またはファイルを使用せず、データ・ファイルへ直接インプレースで処理されます。そのため、ユーザー表領域をオフラインで変換する前に、この表領域の全体バックアップを実行する必要があります。

  4. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、TDEウォレットを開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY TDEk_wallet_password; 
  5. 表領域を暗号化します。
    たとえば、表領域全体を暗号化するには、そのデータ・ファイルを含めます。
    ALTER TABLESPACE users1 ENCRYPTION OFFLINE ENCRYPT;

    この例では、デフォルトの暗号化アルゴリズムAES128を使用して表領域を暗号化します。(AES256がデフォルトです。)別の暗号化アルゴリズムを使用するには、次のような文を入力します。

    ALTER TABLESPACE users2 ENCRYPTION OFFLINE USING 'AES128' ENCRYPT;
    表領域内の個々のデータ・ファイルを暗号化するには、ALTER DATABASE DATAFILE SQL文を使用します。たとえば、データ・ファイルuser_01.dbfおよびuser_02.dbfを暗号化するには次のようにします。
    ALTER DATABASE DATAFILE 'user_01.dbf' ENCRYPT;
    ALTER DATABASE DATAFILE 'user_02.dbf' ENCRYPT;

    同じデータベース・セッションにおいて、これらの文は各データ・ファイルを順に次々と暗号化します。各文を独自のデータベース・セッションで実行した場合、それらは並列で実行されます。

    暗号化プロセスが中断された場合、ALTER TABLESPACE文を再度実行します。中断で予想できるエラーの種類は、ファイル・システムまたは記憶域のファイル・システムのエラーなどの一般的なエラーです。表領域内のデータ・ファイルが一貫して暗号化される必要があります。たとえば、10ファイルある表領域をオフラインにしますが、なんらかの理由で、そのうちの9ファイルのみ暗号化が完了し、1ファイルが復号化されたままになっているとします。このような一貫性のない暗号化の状態で表領域をオンラインに戻すことはできますが、COMPATIBLEパラメータが12.2.0.0以降に設定されている場合は、表領域をこの状態のままにしておかないでください。COMPATIBLE12.2.0.0より小さい場合は、暗号化プロパティがデータ・ファイル間で一致していないと、表領域をオンラインにすることはできません。
  6. 表領域をオンラインに戻すか、データベースを開きます。
    • 表領域をオンラインに戻すには、次のようにします。
      ALTER TABLESPACE users ONLINE;
    • 非マルチテナント環境でデータベースを開くには、次のようにします。

      ALTER DATABASE OPEN
    • マルチテナント環境では、ルートが開いていて、PDBが開いていない場合、オフラインの方法でデータ・ファイルまたは表領域を暗号化できます。たとえば、hr_pdbという名前のPDBの場合は、次のようになります。

      ALTER PLUGGABLE DATABASE hr_pdb OPEN
  7. 変換された表領域の全体バックアップを実行します。
3.6.8.3 オフライン変換での既存の表領域の復号化

既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE SQL文をOFFLINE句およびDECRYPT句とともに使用できます。

  1. SYSDBA管理権限を持つユーザーとして接続します。

    表領域SYSTEMおよびSYSAUXを復号化することを計画している場合、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. 表領域をオフラインにします。
    ALTER TABLESPACE users OFFLINE NORMAL;
  3. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、キーストアを開きます。
    たとえば:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY TDE_wallet_password; 
  4. ALTER TABLESPACE SQL文を実行して復号化を実行します。
    たとえば、usersという表領域では次のようにします。
    ALTER TABLESPACE users ENCRYPTION OFFLINE DECRYPT; 

    復号化プロセスが中断された場合、ALTER TABLESPACE文を再度実行します。中断で予想できるエラーの種類は、ファイル・システムまたは記憶域のファイル・システムのエラーなどの一般的なエラーです。表領域内のデータ・ファイルが一貫して復号化される必要があります。たとえば、10ファイルある表領域をオフラインにしますが、なんらかの理由で、そのうちの9ファイルのみ復号化が完了し、1ファイルが暗号化されたままになっているとします。このような一貫性のない復号化の状態で表領域をオンラインに戻すことはできますが、COMPATIBLEパラメータが12.2.0.0以降に設定されている場合は、表領域をこの状態のままにしておかないでください。COMPATIBLE12.2.0.0より小さい場合は、暗号化プロパティがデータ・ファイル間で一致していないと、表領域をオンラインにすることはできません。

  5. 表領域をオンラインにします。
    ALTER TABLESPACE users ONLINE;

3.6.9 既存のオンライン表領域の暗号化変換

ALTER TABLESPACE SQL文をONLINEおよびENCRYPTまたはDECRYPT句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。

3.6.9.1 既存のオンライン表領域の暗号化変換について

既存のユーザー表領域、SYSTEMSYSAUXおよびUNDO表領域がオンラインのとき、これらを暗号化、復号化またはキー更新できます。

ただし、一時表領域をオンラインで暗号化、復号化またはキー更新することはできません。

オンラインの表領域は、CREATE TABLESPACE SQL文のONLINE句を使用して作成できます。表領域をオンラインで暗号化またはキー更新すると、表領域は固有の暗号化キーおよびアルゴリズムを持つことになります。

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

  • オフライン表領域が暗号化されている場合、オンラインでキー更新して別のアルゴリズムを使用できます。

  • 異なる表領域を暗号化するために、複数のフォアグラウンド・セッションを使用して、複数の表領域をオンラインで並列して暗号化できます。各表領域内では、データ・ファイルは順に暗号化されます。

  • 変換が中断された場合、ALTER TABLESPACE SQL文のFINISH句を発行してプロセスを再開できます。

  • 各オンライン表領域変換に対してREDOログが生成されます。

  • 表領域SYSTEMおよびUNDOは、他の表領域と同時に暗号化しないでください。

  • 表領域を暗号化している間は、Oracle Data Pumpでトランスポータブル表領域機能を使用できません。

  • ALTER TABLESPACE文は、次の機能と同時に実行することはできません。
    • ADMINISTER KEY MANAGEMENT SET KEY SQL文

    • FLASHBACK DATABASE SQL文

  • データ・ファイルにOracle Managed Filesを使用する場合、暗号化プロセスは表領域に関連付けられたデータ・ファイルをキー更新し、それらをデフォルトのOracle Managed Filesの場所にコピーまたは移動します。

  • 新しいファイルは、暗号化した後に表領域に追加できます。Oracle Databaseは新しいファイルを新しい暗号化キーで再フォーマットします。新しいキーを使用してブロックが暗号化されます。

  • ルートまたはPDBで行われた以前の操作は、オンライン変換プロセスを開始する前に、制御ファイルをデータ・ディクショナリに対してクロスチェックする必要がある場合があります。ORA-241 operation disallowed: control file is not yet checked against data dictionaryエラーが発生する場合があります。この問題を解決するには、ルートまたはPDBを再起動し、再度オンライン変換コマンドの発行を試行します。

  • セキュリティ上の理由から、オンライン変換によってデータ・ファイルが処理されると、元のデータ・ファイルが削除前にゼロアウトされます。これにより、データベースがディスク・セクターにゴースト・データを残さなくなります。ただし、Oracle Recovery Manager (Oracle RMAN)のファイルの検証と同時にオンライン表領域変換を実行した場合に発生する可能性がある既知の制限があります。オンライン表領域変換では、各ファイルが一度に1つずつ処理されます。オンライン表領域変換によってファイルが処理されているときにOracle RMANがファイルを検証した場合、Oracle RMANが破損の問題を報告することがあります(ORA-01578: Oracleデータ・ブロックに障害が発生しました(ファイル番号%s、ブロック番号%s))。このようになるのは、ファイルを構成するブロックがゼロと見なされるためです。これは間違ったアラームであり、このエラーは無視できます。これが発生した場合は、Oracle RMAN検証プロセスを再度実行してください。
3.6.9.2 オンライン変換での既存の表領域の暗号化

オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACEONLINEおよびENCRYPT句とともに使用します。

  1. SYSDBA管理権限を持つユーザーとして接続します。

    表領域SYSTEMおよびSYSAUXを暗号化することを計画している場合、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. COMPATIBLE初期化パラメータが12.2.0.0以上に設定されていることを確認します。

    パラメータの現在の設定を確認するには、SHOW PARAMETERコマンドを使用できます。

  3. データベースが読取り-書込みモードで開いていることを確認します。

    V$INSTANCE動的ビューのSTATUS列を問い合せてデータベースが開いているかどうか、V$DATABASEビューのOPEN_MODE列を問い合せて読取り-書込みモードであるかどうかを確認できます。

  4. 必要に応じて、読取り-書込みモードでデータベースを開きます。
    ALTER DATABASE OPEN READ WRITE;
  5. 補助領域がこの表領域で最も大きいデータ・ファイルと同じかそれ以上のサイズであることを確認します。

    このサイズ要件は、Oracle Databaseが一度に1ファイルずつ変換を実行するためです。たとえば、表領域の大規模なデータ・ファイルが32 GBの場合は、32 GBの補助領域があることを確認します。データ・ファイルが使用する領域を確認するには、V$DATAFILE動的パフォーマンス・ビューのBYTESまたはBLOCKS列を問い合せます。

  6. マスター暗号化キーを作成して開きます。

    たとえば:

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'TDE_wallet_location' IDENTIFIED BY TDE_wallet_password;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY TDE_wallet_password;
    ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY TDE_wallet_password WITH BACKUP;
  7. ALTER TABLESPACE文をENCRYPTION句およびENCRYPT句を使用して実行し、暗号化します。

    たとえば、Oracle Managed Files以外のusersという表領域では、次のようにします。

    ALTER TABLESPACE users ENCRYPTION ONLINE USING 'AES192' ENCRYPT FILE_NAME_CONVERT = ('users.dbf', 'users_enc.dbf');

    この例では、次のようになります。

    • ENCRYPTION ONLINE USING ‘AES192’ ENCRYPTは、表領域usersがオンラインの間にこの表領域を暗号化するように文を設定し、表領域にAES192暗号化アルゴリズムを割り当てます。USING algorithm句を省略した場合、デフォルトのアルゴリズムAES128が使用されます。SYSTEM表領域では、ENCRYPT句を使用して表領域を暗号化できますが、暗号化アルゴリズムは最初に既存のデータベース・キーで暗号化されるため、指定できません。SYSTEM表領域の暗号化を行った後、REKEY句を使用してアルゴリズムを指定します。

    • FILE_NAME_CONVERTは、表領域に関連付けられたデータ・ファイルの1つ以上のペアを指定します。ペアの1つ目の名前は既存のデータ・ファイルで、2つ目の名前はこのデータ・ファイルの暗号化されたバージョン(ALTER TABLESPACE文が正常に実行された後に作成される)です。表領域に2つ以上のデータ・ファイルがある場合、この文でそれらすべてを処理する必要があります。次の点に注意してください。

      • 各ファイル名はカンマで区切って、複数のファイルのペアを含めます。たとえば:

        FILE_NAME_CONVERT = ('users1.dbf', 'users1_enc.dbf', 'users2.dbf', 'users2_enc.dbf')
      • ディレクトリ・パスは、FILE_NAME_CONVERT句で指定できます。たとえば、次の句は表領域の一致しているファイルを変換し、dbsディレクトリからdbs/encディレクトリに移動します。

        FILE_NAME_CONVERT = ('dbs', 'dbs/enc')
      • FILE_NAME_CONVERT句はパターンを認識します。次の例では、データ・ファイルusers_1.dbfおよびusers_2.dbfusers_enc1.dbfおよびusers_enc2.dbfに変換します。

        FILE_NAME_CONVERT = ('users', 'users_enc')
      • Oracle Data Guard環境では、FILE_NAME_CONVERT設定にスタンバイ・データベース・データ・ファイルの名前を含めます。

      • Oracle Managed Filesモードを使用している場合、新しいファイル名が内部的に割り当てられるため、このファイル名はサイトのファイル命名標準に影響を与えません。Oracle Managed Files以外のモードを使用している場合にFILE_NAME_CONVERT句を省略すると、Oracle Databaseは内部的に補助ファイル名を割り当て、後で元の名前に戻します。これにより、暗号化プロセスは暗号化するファイルに元々付けられている名前を使用できます。名前変更操作では、ファイルの別のコピーが実質的に作成されるため、FILE_NAME_CONVERT句を明示的に含めた場合よりも時間がかかります。パフォーマンスを向上させるには、FILE_NAME_CONVERT句を含めてください。

      • 動的ビューV$DATAFILEまたはV$DATAFILE_HEADERを問い合せると、表領域のデータ・ファイルを検索できます。

      デフォルトでは、データ・ファイルは$ORACLE_HOME/dbsディレクトリ内にあります。データ・ファイルがここにある場合には、パスを指定する必要はありません。

変換の完了後、V$ENCRYPTED_TABLESPACES動的ビューのSTATUS列を問い合せて、暗号化ステータスを確認できます。このビューのENCRYPTIONALG列には、使用されている暗号化アルゴリズムが示されます。変換プロセスが中断された場合、ALTER TABLESPACEFINISH句とともに実行してプロセスを再開できます。たとえば、プライマリ・データ・ファイルが変換され、スタンバイ・データ・ファイルは変換されなかった場合、スタンバイ・データ・ファイルのスタンバイ・データベースでALTER TABLESPACE ... FINISHを実行できます。
3.6.9.3 オンライン変換での既存の表領域のキー更新

オンラインの既存の表領域をキー更新するには、ALTER TABLESPACE SQL文のREKEY句を使用できます。

キー更新操作を実行する前に、次の点に注意してください。
  • TEMP表領域をキー更新することはできません。TEMP表領域に異なる暗号化アルゴリズムを割り当てる場合には、TEMPを削除して、正しい暗号化アルゴリズムで再作成します。

  • オンライン表領域のキー更新操作とマスター・キーの操作を同時に実行しないでください。いずれかの表領域が現在キー更新中かどうかを確認するには、次の問合せを発行して、暗号化された表領域のキー更新ステータスを確認します。

    SELECT TS#,ENCRYPTIONALG,STATUS FROM V$ENCRYPTED_TABLESPACES;

    REKEYINGというステータスは、対応する表領域がまだキー更新中であることを意味します。このステータスが適用される間は、マスター・キーをキー更新しないでください。

オンライン変換を使用して既存の表領域をキー更新するには:

  1. SYSDBA管理権限を持つユーザーとして接続します。

    たとえば:

    sqlplus sec_admin as sysdba
    Enter password: password

    表領域SYSTEMおよびSYSAUXをキー更新することを計画している場合、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. 次の要件が満たされていることを確認してください。
    • COMPATIBLE初期化パラメータが12.2.0.0以降に設定されている。
    • データベースが開かれ、読取り-書込みモードになっている。
    • マスター暗号化キーが作成され開いている。
  3. V$ENCRYPTED_TABLESPACES動的ビューの列KEY_VERSIONおよびSTATUSを問い合せて、マスター暗号化キーで使用される暗号化アルゴリズムの現在のステータスを確認します。
  4. V$ENCRYPTED_TABLESPACES動的ビューに返されたステータスに基づいて、キー更新操作を実行します。
    • 表領域のキー・バージョン・ステータスがNORMALの場合、オンライン表領域のキー更新の新しいアルゴリズムを指定します。

      たとえば:

      ALTER TABLESPACE users ENCRYPTION USING 'AES192' REKEY FILE_NAME_CONVERT = ('users.dbf', 'users_enc.dbf');
    • キー・バージョン・ステータスが、ENCRYPTINGDECRYPTINGまたはREKEYINGの場合、FINISH句を使用します。

      たとえば:

      ALTER TABLESPACE users ENCRYPTION ONLINE FINISH REKEY FILE_NAME_CONVERT = ('users.dbf', 'users_enc.dbf');
  5. ORA-00241 operation disallowed: control file inconsistent with data dictionaryエラーが表示された場合、データベースを再起動します。
    マルチテナント環境では、CDBルート・データベースを再起動し、ステップ4を再度試行します。
変換プロセスが中断された場合、ALTER TABLESPACEFINISH句とともに実行してプロセスを再開できます。
3.6.9.4 オンライン変換での既存の表領域の復号化

既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACE SQL文をDECRYPT句とともに使用できます。

  1. SYSDBA管理権限を持つユーザーとして接続します。

    表領域SYSTEMおよびSYSAUXを復号化することを計画している場合、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. 次の要件が満たされていることを確認してください。
    • COMPATIBLE初期化パラメータが12.2.0.0以降に設定されている。
    • データベースが開かれ、読取り-書込みモードになっている。
    • マスター暗号化キーが作成され開いている。
    • 復号化を完了させるための十分な補助領域があること。
  3. ALTER TABLESPACE SQL文をDECRYPT句とともに実行します。

    たとえば:

    ALTER TABLESPACE users ENCRYPTION ONLINE DECRYPT FILE_NAME_CONVERT = ('users_enc.dbf', 'users.dbf');

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

    • 復号化するファイルを指定するときには、それらが最初に暗号化された順と逆の順で入力します。つまり、先に暗号化されたファイルの名前(users_enc.dbf)、次にデータ・ファイル(users.dbf)を続けて入力します。

    • 復号化にアルゴリズム・キーを指定しないでください。

変換プロセスが中断された場合、ALTER TABLESPACEFINISH句とともに実行してプロセスを再開できます。
3.6.9.5 中断されたオンライン暗号化変換の終了

オンライン暗号化プロセスが中断された場合は、FINISH句を使用してALTER TABLESPACE文を再実行することで、変換を完了できます。

暗号化プロセス(暗号化、キー更新または復号化)の中断は、たとえば、ALTER TABLESPACE SQL文のFILE_NAME_CONVERT句でのORA-28425: missing a valid FILE_NAME_CONVERT clauseエラーなどの可能性があります。中断されたプロセスの他の例としては、変換でデータ・ファイルをスキップした場合(Oracleデータベース・ライター(DBWR)プロセスがデータ・ファイルをオフラインにしたときにエラーがあった場合に発生する可能性がある)や、補助ファイルのための十分な領域がない場合などがあります。ALTER TABLESPACE文をFINISH句を指定して再実行しない場合であっても、表領域は操作可能である必要があります。

中断された暗号化プロセスに加えて、ステータスがENCRYPTINGの期間中に表領域の暗号化プロセスが失敗することがあります。この場合、表領域を復号化して元の状態に戻すか、ALTER TABLEPSPACEENCRYPTION ONLINE FINISH ENCRYPT句を使用して暗号化を再開できます。

  1. V$ENCRYPTED_TABLESPACESを問い合せて、表領域のSTATUS列を確認します。

    STATUS列が、ENCRYPTINGDECRYPTINGまたはREKEYINGを報告する場合、この手順に記載されているようにALTER TABLESPACE文をFINISH句を指定して再実行します。STATUSNORMALを報告する場合、ALTER TABLESPACEFINISH句を指定しないで再実行できます。

    V$DATAFILE_HEADERビューを問い合せると、列TS#およびTABLESPACE_NAMEに一致する表領域名を検索できます。

  2. 必要に応じて、次の追加のビューに問い合せて、オンライン変換が中断された表領域についての情報を検索します。
    • DBA_TABLESPACES表領域のSTATUSがオンラインであるかオフラインであるかを示しているかどうかを検索します。
    • V$ENCRYPTED_TABLESPACES表領域のSTATUSが、暗号化されているかどうか、および暗号化キーのKEY_VERSIONが何であるかを示しているかどうかを検索します。
    • V$DATAFILEおよびV$DATAFILE_HEADER表領域に関連付けられたデータ・ファイルを検索します。
  3. ALTER TABLESPACE文をFINISH句を使用して実行します。
    次に例を示します。
    • 暗号化操作の場合:
      ALTER TABLESPACE users ENCRYPTION ONLINE FINISH ENCRYPT FILE_NAME_CONVERT = ('users.dbf', 'users_enc.dbf');
    • 復号化操作の場合:
      ALTER TABLESPACE users ENCRYPTION ONLINE FINISH DECRYPT FILE_NAME_CONVERT = ('users_enc.dbf', 'users.dbf');

      ファイルが指定される順序に注意します。1つ目は暗号化されたファイルの名前で、次がデータ・ファイルの名前です。(暗号化操作では、データ・ファイルの名前が先に指定され、次に暗号化されたファイルの名前が続きます。)

    • キー更新操作の場合:
      ALTER TABLESPACE users ENCRYPTION ONLINE FINISH REKEY FILE_NAME_CONVERT = ('users.dbf', 'users_enc.dbf');
      ALTER TABLESPACE文でFINISH句を使用するときには、アルゴリズムを指定できません。
  4. 変換を確認するには、V$ENCRYPTED_TABLESPACESビューのSTATUS列を問い合せます。
    ステータスはNORMALである必要があります。Oracle Data Guard環境では、データベースのSTATUSNORMALではない場合、正常に変換しなかったプライマリまたはスタンバイ・データ・ファイルでALTER TABLESPACE ... FINISH文を実行します。

3.6.10 既存のデータベースの暗号化変換

オフラインおよびオンライン両方のデータベースを暗号化できます。

3.6.10.1 既存のデータベースの暗号化変換について

データベース全体の暗号化変換では、Oracle提供のSYSTEMSYSAUXUNDOおよびTEMP表領域を含むすべての表領域が暗号化されます。

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

  • Database Configuration Assistant (DBCA)を使用してデータベースを作成または構成する場合は、作成または構成プロセスの一部としてTDEウォレットをデータベースに作成できます。DBCAを使用してデータベースを削除すると、このデータベースにあるTDEウォレットも削除されます。重要: DBCAを使用してデータベースを削除する前に、ローカルTDEウォレットがある場合は、これらのウォレットを安全な場所にバックアップします。データベースがOracle Key Vaultを使用するように移行されている場合は、そのTDE暗号化キーはOracle Key Vaultサーバーに存在することに注意してください。Oracle Key Vaultをバックアップするのは、Oracle Key Vault管理者の責任です。

  • 暗号化を実行するには、表領域暗号化変換のオフラインおよびオンライン機能を使用できます。

  • Oracle提供の表領域のどれかまたはすべてを、任意の順に暗号化できます。Oracle提供の表領域の暗号化は、ユーザー作成の表領域の暗号化に影響が及ぶことはありません。

  • Oracle提供の表領域を暗号化する際、Oracle Databaseはキーストアが閉じないようにします。

  • 既存の一時表領域は暗号化できませんが、暗号化された一時表領域を作成し、その新しい暗号化された一時表領域をデフォルト一時表領域として使用するようデータベースを構成してから、古いクリアテキストの一時表領域を削除できます。

  • 暗号化された表領域の機密データから生成されたメタデータUNDOおよびTEMPは、すでに自動的に暗号化されています。そのため、UNDOおよびTEMPの暗号化はオプションです。

  • データベース内のすべての表領域を暗号化するパフォーマンスの影響は、ワークロードおよびプラットフォームにより異なります。近年のCPUの多くには、内蔵のハードウェア・アクセラレーションが搭載されているため、パフォーマンスへの影響は最小限になります。

  • マルチテナント環境では、Oracle提供の表領域を含めた、プラガブル・データベース(PDB)内の表領域を暗号化できます。ただし、CDBルート内のキーストアは、PDBがキーストアを開けるように、常に開いている必要があります。キーストアが開いているかどうかのステータスは、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、確認できます。

3.6.10.2 オフライン変換での既存のデータベースの暗号化

既存のデータベースをオフライン変換で暗号化する場合、Oracle管理の表領域には暗号化アルゴリズムを指定しません。

  1. SYSDBA管理権限を持つユーザーとして接続します。

    表領域SYSTEMおよびSYSAUXを暗号化するには、SYSDBA管理権限を持っている必要があります。

  2. データベースをマウントします。
    STARTUP MOUNT
  3. キーストアを開きます。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
  4. ALTER TABLESPACE SQL文を実行して、表領域SYSTEMSYSAUXおよびUNDOを暗号化します。他の表領域の暗号化と同時にSYSTEM表領域を暗号化しないでください。

    たとえば、表領域SYSTEMを暗号化するには、次のようにします。

    ALTER TABLESPACE SYSTEM ENCRYPTION OFFLINE ENCRYPT;
  5. データベースを開きます。
    たとえば、データベースを読取り/書込みモードで開くには、次のようにします。
    ALTER DATABASE OPEN READ WRITE;
  6. ALTER TABLESPACE SQL文を実行して他のユーザー表領域を暗号化します。
    あるいは、次のステップに進んでデータベースを先に開いて、オフライン変換での既存のユーザー定義表領域の暗号化に記載されたステップを実行できます。
  7. データベースを開きます。
    ALTER DATABASE OPEN;
表領域の暗号化後、SYSTEMSYSAUXおよびUNDO表領域に異なる暗号化アルゴリズムを使用(TDEマスター暗号化キーを変更)する場合は、オンライン変換を使用する必要があります。サポートされている暗号化アルゴリズムは、AES128に加えて、AES192AES256、およびARIAGOSTなどのその他のアルゴリズムです。
3.6.10.3 オンライン変換での既存のデータベースの暗号化

既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。

最初に暗号化を実行するときに暗号化アルゴリズムを指定する必要がない理由は、データベースの暗号化に使用する必要のある表領域がデータベース・キーで自動的に暗号化されるためです。アルゴリズムを変更する場合、最初の暗号化の後にALTER TABLESPACE ENCRYPTION REKEY SQL文を発行できます。
  1. オンライン変換での既存の表領域の暗号化に記載されている次のタスクを実行します。
    1. SYSDBA管理権限が付与されたユーザーとして接続します。
    2. COMPATIBLEパラメータが12.2.0.0以降に設定されていることを確認します。
    3. データベースが読取り-書込みモードで開いていることを確認します。
    4. 暗号化を完了させるための十分な補助領域があることを確認します。
    5. 暗号化する必要のある表領域をバックアップします。
    6. キーストアを開きます。
  2. ALTER TABLESPACE SQL文を実行して、表領域SYSTEMSYSAUXおよびUNDOを暗号化します。アルゴリズムは指定せず、表領域SYSTEMを他の表領域の暗号化と同時に暗号化しないでください。

    たとえば、表領域SYSTEMを暗号化するには、次のようにします。

    ALTER TABLESPACE SYSTEM ENCRYPTION ONLINE ENCRYPT 
    FILE_NAME_CONVERT=('system01.dbf','system01_enc.dbf');
  3. 一時表領域を作成します。
    1. 次のように、元のTEMP表領域と同じ特性を持つ新しい(暗号化された)TEMP表領域を作成します。
      SELECT ' CREATE TEMPORARY TABLESPACE '
      ||tablespace_name||'_ENC tempfile '''
      ||substr(file_name,1,length(file_name)-4)
      ||'_enc.dbf'' size '
      ||bytes||' ENCRYPTION USING ''AES256'' ENCRYPT;' 
      AS " Create new encrypted TEMP tablespace" 
      FROM DBA_TEMP_FILES; 

      または、DBMS_METADATA.GET_DDLを実行して元のパラメータを抽出することもできます。USING algorithm句を省略した場合、Oracle Databaseによってデフォルトのアルゴリズムが適用されます。

    2. コマンド(つまり、SELECT文の出力)を実行します。
    3. データベースのデフォルトの一時表領域を、暗号化された新しいTEMP表領域に変更します。
      ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_enc;
    4. 元のTEMP表領域を削除します。
      DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

      オプションで、temp_encの名前をTEMPに変更できます。

3.7 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー

透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。

表3-4に、これらの動的ビューおよびデータ・ディクショナリ・ビューを示します。

表3-4 透過的データ暗号化の関連ビュー

ビュー 説明

ALL_ENCRYPTED_COLUMNS

現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。

DICTIONARY_CREDENTIALS_ENCRYPT

SYS.LINK$およびSYS.SCHEDULER$_CREDENTIALシステム表内の資格証明データが暗号化されているかどうかを示します。

DBA_ENCRYPTED_COLUMNS

データベースにあるすべての暗号化列の暗号化情報が表示されます。

USER_ENCRYPTED_COLUMNS

現在のユーザーのスキーマにある暗号化された表の列の暗号化情報が表示されます。

DBA_TABLESPACE_USAGE_METRICS

永続、一時、およびUNDO表領域を含むすべてのタイプの表領域についての表領域使用状況メトリックを示します

V$CLIENT_SECRETS

様々な機能(クライアント)用のキーストアに格納された文字列(シークレット)のプロパティが一覧表示されます。

マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。

V$DATABASE_KEY_INFO

現在のデータベースに使用されているデフォルトの暗号化キーについての情報を表示します。デフォルトはAES128です。

V$ENCRYPTED_TABLESPACES

暗号化された表領域に関する情報が表示されます。

V$ENCRYPTION_KEYS

ADMINISTER KEY MANAGEMENT文でキー更新されたキーとともに使用されたときには、TDEマスター暗号化キーについての情報を表示します。

マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。

V$ENCRYPTION_WALLET

TDEのキーストアのステータスおよびキーストアの場所に関する情報が表示されます。

V$RMAN_ENCRYPTION_ALGORITHMS

現在のPDBでサポートされている暗号化アルゴリズムを表示し、Oracle Recovery Manager (Oracle RMAN)によってユーザー要求アルゴリズムを検証するために使用されます

関連項目:

これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。