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

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

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

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

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

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

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

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

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

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文を再度実行します。

暗号化された表領域に対する閉じられた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 ウォレットがオープンしていませんというエラーが返されます。

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

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

表領域の暗号化のシナリオ 暗号化されたユーザー作成の表領域のデータの操作を禁止するコマンド 暗号化された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管理の表領域も暗号化されていない 該当なし 該当なし 該当なし 該当なし

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 11.2.0.0に設定することにより、ソフトウェア・キーストアからハードウェア・キーストアにキーを移行できます(TDEマスター暗号化キーがハードウェア・キーストア用に構成されていることを確認します)。

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

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

関連項目:

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

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

  1. 管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。

    例:

    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password
  2. COMPATIBLEパラメータの現在の設定を確認します。
    例:
    SHOW PARAMETER COMPATIBLE
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    compatible                           string      12.2.0.0
    noncdbcompatible                     BOOLEAN     FALSE
    
  3. COMPATIBLEパラメータを変更する必要がある場合、この手順の残りのステップを実行します。
    値は、11.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=20.1.0.0.0
  6. SYSDBA管理権限を持つユーザーとして接続し、データベースを再起動します。
    • CDBルートから:
      SHUTDOWN IMMEDIATE
      STARTUP
      
    • PDBから:
      ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;
      ALTER PLUGGABLE DATABASE pdb_name OPEN;
  7. 表領域の暗号化を使用している場合は、データベース・マウントでキーストアを開きます。キーストアは、暗号化された表領域のデータにアクセスする前に開いている必要があります。
    例:
    STARTUP MOUNT;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
    ALTER DATABASE OPEN;

ステップ2: 表領域TDEマスター暗号化キーの設定

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

  • 統一モードまたは分離モードで使用するステップと同じステップを使用して、ソフトウェアTDEマスター暗号化キーまたはハードウェアTDEマスター暗号化キーのTDEマスター暗号化キーを設定します。

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

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

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

暗号化された表領域を作成するには、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リファレンスを参照してください。

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

暗号化された表領域を作成するには、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が使用されます。

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

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

例6-1では、AES192アルゴリズムを使用して暗号化された、securespace_1という表領域を作成します。キー長は192ビットです。

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

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

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

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

既存の表領域は暗号化できません。

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

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

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

TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM動的パラメータは、今後の表領域作成操作のデフォルトの暗号化アルゴリズムを定義します。

TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMは、オフライン表領域暗号化操作とオンライン表領域暗号化操作の両方に適用されます。また、ENCRYPT_NEW_TABLESPACESパラメータで設定される今後の暗号化される表領域にも適用されます。マルチテナント環境では、ルートまたは個々のPDBでTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMを設定できます。
  • 次のALTER SYSTEM文を入力します。
    ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;

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

    または、init.oraファイルにTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMを初期化パラメータとして設定できます。

将来の表領域の暗号化

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

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

将来の表領域を暗号化する機能は、Oracle Cloud環境でのデータ侵害の防止に役立ちます。

ENCRYPT_NEW_TABLESPACESデータベース初期化パラメータは、将来のデータベースの暗号化方法を制御します。

Oracle Databaseを完全にOracle Cloudで作成および実行できます。この構成はクラウド内の顧客のデータをホストするため、可能なかぎり暗号化を有効にすることをお薦めします。長期的な目標は、Oracle Cloud内のすべてのデータを暗号化することです。あるいは、データベースをクラウドとオンプレミスの両方で持つこともできます。

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

  • Oracle Cloudにテスト・データベースを作成し、ENCRYPT_NEW_TABLESPACEパラメータが、暗号化の際にクラウド・データベースを自動的に作成するよう設定されているときに表領域が暗号化されました。ところが、そういった意図がないか、暗号化されたデータベースをオンプレミスに戻すAdvanced Security Optionライセンスさえも持っていない場合があります。

  • プライマリ・データベースがオンプレミスで、スタンバイ・データベースがOracle Cloudにある、ハイブリッドの定義者権限環境を作成します。切り替え操作が行われた場合、新しいプライマリはOracle Cloud上になります。新しい表領域が透過的に暗号化された場合、このリストの最初の項目に対して同様のシナリオが発生することがあります。たとえば、Advanced Security Option (ASO)ライセンスを持っておらず、自動的に暗号化された表領域がOracle Cloudにあるとします。オンプレミスのスタンバイ・データベースも自動的に暗号化されます。この場合、ASOライセンスを持っていないため、スタンバイ・データベースを使用できません。この問題を修正するには、ENCRYPT_NEW_TABLESPACESDDLに設定して、Oracle Cloudの表領域の暗号化を防ぎます。

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

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

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

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

    • CLOUD_ONLYでは、CREATE TABLESPACE SQL文のENCRYPTION句を指定しない場合はAES128アルゴリズム、またはTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM動的パラメータで指定されたアルゴリズムを使用して、クラウドの表領域を透過的に暗号化します。これはOracle Cloud環境にのみ適用されます。表領域をオンプレミスで作成する場合、作成は入力したCREATE TABLESPACE文の指定に従います。たとえば、ENCRYPTION句を省略した場合、表領域は暗号化されずに作成されます。この句を含めて別のアルゴリズムを使用した場合、表領域はそのアルゴリズムを使用します。CLOUD_ONLYがデフォルトです。

    • ALWAYSでは、クラウドおよびプレミスの両方のシナリオにおいて、CREATE TABLESPACEENCRYPTION句を省略した場合、AES128アルゴリズムまたはTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM動的パラメータで指定されたアルゴリズムを使用して、表領域を自動的に暗号化します。

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

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

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

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

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

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

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

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

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

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

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

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

  • オンラインの方法を使用して、以前にオフラインの方法で暗号化された表領域をキー更新できます。

  • 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表領域を暗号化するには、削除してから、暗号化済として再作成する必要があります。

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

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

この項で説明する手順は、データベース内の個々のユーザーが作成した表領域を暗号化する場合に適用されます。これらの表領域はオフラインで暗号化できます。ただし、Oracle Database提供の表領域SYSTEMおよびUNDOは、オフラインにできません。表領域をオフラインで暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。
  1. 管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
    例:
    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    SYSTEM表領域およびSYSAUX表領域で操作を実行するには、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. 表領域をオフラインにします。
    ALTER TABLESPACE users OFFLINE NORMAL;
  3. 表領域をバックアップします。

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

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

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

    ALTER TABLESPACE users2 ENCRYPTION OFFLINE USING 'AES256' 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. 変換された表領域の全体バックアップを実行します。

オフライン変換での既存の表領域の復号化

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

  1. SYSDBA管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
    例:
    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    SYSTEM表領域およびSYSAUX表領域で操作を実行するには、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. 表領域をオフラインにします。
    ALTER TABLESPACE users OFFLINE NORMAL;
  3. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、キーストアを開きます。
    例:
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ALTER TABLESPACE文は、次の機能と同時に実行することはできません。
    • ADMINSTER 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検証プロセスを再度実行してください。

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

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

  1. SYSDBA管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。

    例:

    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    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またはSYSKM権限が付与されたユーザーとして、マスター暗号化キーを作成して開きます。

    例:

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'keystore_location' IDENTIFIED BY software_keystore_password;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_password;
    ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY software_keystore_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およびUNDOでは、ENCRYPT句を使用して表領域を暗号化できますが、暗号化アルゴリズムは最初に既存のデータベース・キーで暗号化する必要があるため、指定できません。表領域の暗号化を行った後、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を実行できます。

オンライン変換での既存の表領域のキー更新

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

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

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

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

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

オンライン変換を使用して既存の表領域をキー更新するには、次の手順を実行します。

  1. SYSDBA管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。

    例:

    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name 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 処理不可: 制御ファイルがデータ・ディクショナリと整合していませんというエラーが表示された場合は、CDBルートを再起動してステップ4を再試行します。
変換プロセスが中断された場合、ALTER TABLESPACEFINISH句とともに実行してプロセスを再開できます。

オンライン変換での既存の表領域の復号化

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

  1. SYSDBA管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。

    例:

    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    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句とともに実行してプロセスを再開できます。

中断されたオンライン暗号化変換の終了

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

暗号化プロセス(暗号化、キー更新または復号化)の中断は、たとえば、ALTER TABLESPACE SQL文のFILE_NAME_CONVERT句でのORA-28425: missing a valid FILE_NAME_CONVERT clauseエラーなどの可能性があります。中断されたプロセスの他の例としては、変換でデータ・ファイルをスキップした場合(Oracleデータベース・ライター(DBWR)プロセスがデータ・ファイルをオフラインにしたときにエラーがあった場合に発生する可能性がある)や、補助ファイルのための十分な領域がない場合などがあります。ALTER TABLESPACE文をFINISH句を指定して再実行しない場合であっても、表領域は操作可能である必要があります。
  1. SYSDBAまたはSYSKM管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。
    例:
    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    SYSTEM表領域およびSYSAUX表領域で操作を実行するには、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

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

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

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

  3. 必要に応じて、次の追加のビューに問い合せて、オンライン変換が中断された表領域についての情報を検索します。
    • DBA_TABLESPACES表領域のSTATUSがオンラインであるかオフラインであるかを示しているかどうかを検索します。
    • V$ENCRYPTED_TABLESPACES表領域のSTATUSが、暗号化されているかどうか、および暗号化キーのKEY_VERSIONが何であるかを示しているかどうかを検索します。
    • V$DATAFILEおよびV$DATAFILE_HEADER表領域に関連付けられたデータ・ファイルを検索します。
  4. 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句を使用するときには、アルゴリズムを指定できません。
  5. 変換を確認するには、V$ENCRYPTED_TABLESPACESビューのSTATUS列を問い合せます。
    ステータスはNORMALである必要があります。Oracle Data Guard環境では、データベースのSTATUSNORMALではない場合、正常に変換しなかったプライマリまたはスタンバイ・データ・ファイルでALTER TABLESPACE ... FINISH文を実行します。

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

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

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

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

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

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

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

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

  • 既存の一時表領域は暗号化できませんが、既存の一時表領域を削除してから、暗号化済として再作成することはできます。

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

  • Oracle提供の表領域は、デフォルトの表領域暗号化アルゴリズムAES128を使用して暗号化することをお薦めします。ただし、必要であれば、これらの表領域を後で異なる暗号化アルゴリズムを使用するようにキー更新できます。(現在のデータベースの暗号化キーを検出するには、V$DATABASE_KEY_INFO動的ビューを問い合せることができます。)

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

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

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

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

  1. SYSDBA管理権限を付与されたユーザーとして、統一モードのCDBルートまたは分離モードのPDBに接続します。

    例:

    CONNECT c##sec_admin AS SYSDBA (or CONNECT sec_admin@pdb_name AS SYSDBA)
    Enter password: password

    SYSTEM表領域およびSYSAUX表領域で操作を実行するには、SYSDBA管理権限を持っている必要があります。それ以外の場合、SYSKM管理権限で接続します。

  2. データベースをマウントします。
    STARTUP MOUNT
  3. ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、キーストアを開きます。
    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. CDBルートまたはPDBをオープンします。
    • CDBの場合、読取り/書込みモードでオープンするには、次のようにします。
      ALTER DATABASE OPEN READ WRITE;
    • PDBの場合:
      ALTER PLUGGABLE DATABASE pdb_name OPEN READ WRITE;
  6. ALTER TABLESPACE SQL文を実行して他のユーザー表領域を暗号化します。
    あるいは、次のステップに進んでデータベースを先に開いて、オフライン変換での既存のユーザー定義表領域の暗号化に記載されたステップを実行できます。
  7. CDBルートまたはPDBをオープンします。
    • CDBの場合:
      ALTER DATABASE OPEN;
    • PDBの場合:
      ALTER PLUGGABLE DATABASE pdb_name OPEN;
表領域の暗号化後、SYSTEMSYSAUXおよびUNDO表領域に異なる暗号化アルゴリズムを使用(TDEマスター暗号化キーを変更)する場合は、オンライン変換を使用する必要があります。サポートされている暗号化アルゴリズムは、AES128に加えて、AES192AES256、およびARIAGOSTなどのその他のアルゴリズムです。

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

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

最初に暗号化を実行するときに暗号化アルゴリズムを指定する必要がない理由は、データベースの暗号化に使用する必要のある表領域がデータベース・キーで自動的に暗号化されるためです。アルゴリズムを変更する場合、最初の暗号化の後に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. 一時表領域では、削除してから暗号化済として再作成します。アルゴリズムを指定しないでください。

    たとえば、ユーザー作成の表領域では、次のようにします。

    DROP TABLESPACE temp_01;
    CREATE TEMPORARY TABLESPACE temp_01 
    TEMPFILE 'temp01.dbf' SIZE 5M AUTOEXTEND ON 
    ENCRYPTION ENCRYPT;

    デフォルトのTEMP表領域を削除することはできません。TEMPを削除する前に、先に新しい表領域を作成してこれをデフォルトにする必要があります。

    例:

    CREATE TEMPORARY TABLESPACE temp_01 
    TEMPFILE 'temp01.dbf' SIZE 5M AUTOEXTEND ON 
    ENCRYPTION ENCRYPT;
    
    ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_01;
    
    DROP TABLESPACE TEMP;