第3章 透過的データ暗号化の構成
ソフトウェア・キーストアおよび外部キーストアを、個々の表列や表領域全体での使用のために構成できます。
- 透過的データ暗号化の構成について
透過的データ暗号化を構成するには、キーストアを作成しデータを暗号化する前に、設定を1回のみ実行する必要があります。 - ソフトウェア・キーストアの構成
ソフトウェア・キーストアとは、ソフトウェアのファイル・システム上にあるマスター暗号化キーのコンテナです。 - 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。 - 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。 - 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。 - 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
親トピック: 透過的データ暗号化の使用
3.1 透過的データ暗号化の構成について
透過的データ暗号化を構成するには、キーストアを作成しデータを暗号化する前に、1回かぎりの設定を実行する必要があります。
キーストアを構成しデータの暗号化を開始する前に、作成する予定のキーストアの場所とタイプを指定するために、WALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを使用して1回かぎりの構成を実行する必要があります。
WALLET_ROOT
パラメータは、キーストア・ディレクトリの場所を指定します。WALLET_ROOT
を設定する前に、キーストアを格納するために使用できる既存のディレクトリがあることを確認してください。Oracle Databaseは、次の場所を次の順序で検索して、キーストアを取得します。
-
WALLET_ROOT
の場所によって設定された場所 -
sqlnet.ora
ファイルのENCRYPTION_WALLET_LOCATION
設定で指定された場所 -
sqlnet.ora
ファイルのWALLET_LOCATION
設定で指定された場所 -
$ORACLE_BASE/admin/db_unique_name/wallet
ディレクトリ
TDE_CONFIGURATION
パラメータは、キーストアのタイプ(ソフトウェア・キーストアまたはOracle Key Vault)を指定します。TDE_CONFIGURATION
を使用してキーストアのタイプを設定した後で、キーストアを作成すると、Oracle Databaseはキーストア・タイプのWALLET_ROOT
の場所内にディレクトリを作成します。たとえば、TDE_CONFIGURATION
をFILE
に設定すると、Oracle DatabaseによってWALLET_ROOT/TDE
にTDEウォレットが作成されます。Oracle Key Vaultを使用するには、Oracle Key Vaultクライアント・ソフトウェアをWALLET_ROOT/okv
にインストールし、TDE_CONFIGURATION
をOKV
に設定します。自動オープンOracle Key Vault構成を確立するには、WALLET_ROOT/tde
の自動オープン・ウォレットにOracle Key Vaultパスワードを追加し、TDE_CONFIGURATION
をOKV|FILE
に設定します。キーストア・タイプ間で移行する場合は、最初にTDE_CONFIGURATION
パラメータに使用するキーストア・タイプを設定し、ADMINISTER KEY MANAGEMENT
文を使用して移行を実行する必要があります。たとえば、OKV|FILE
に設定して、TDEキーストアをOKV
に移行できます。
V$ENCRYPTION_WALLET
動的ビューのKEYSTORE_MODE
列は、統一モードまたは分離モードのどちらが有効になっているかを示します。
親トピック: 透過的データ暗号化の構成
3.2 ソフトウェア・キーストアの構成
ソフトウェア・キーストアとは、ソフトウェアのファイル・システム上にあるマスター暗号化キーのコンテナです。
- ソフトウェア・キーストアの構成について
ソフトウェア・キーストアとは、TDEマスター暗号化キーを格納するコンテナです。 - ステップ1: ソフトウェア・キーストアの場所とタイプの構成
init.ora
でWALLET_ROOT
を、データベース・インスタンスでTDE_CONFIGURATION
を設定して、キーストアの場所とタイプを構成する必要があります。 - ステップ2: ソフトウェア・キーストアの作成
ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。 - ステップ3: ソフトウェア・キーストアを開く
作成したキーストアの種類に応じて、使用する前にキーストアを手動で開く必要があります。 - ステップ4: ソフトウェア・キーストアのTDEマスター暗号化キーの設定
キーストアが開いたら、それに対してTDEマスター暗号化キーを設定できます。 - ステップ5: データの暗号化
キーストアの構成が完了したので、PDB内のデータの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.2.1 ソフトウェア・キーストアの構成について
ソフトウェア・キーストアとは、TDEマスター暗号化キーを格納するコンテナです。
キーストアを構成する前に、最初にinit.ora
ファイルのWALLET_ROOT
パラメータを設定して、キーストアの場所を定義する必要があります。データベースは、最初にWALLET_ROOT
設定をチェックして、このキーストアを探します。この設定が作成されていない場合、データベースは、sqlnet.ora
ファイルをチェックします。必要に応じて、キーストアのコピーなどの他のキーストアを作成したり、キーが含まれているファイルをエクスポートすることができます。WALLET_ROOT
の場所で構成したキーストアを除去または削除する必要がある場合は、このキーストア内のTDEマスター暗号化キーを別のキーストアに移動した後でのみ行う必要があります。次に、キーストアの新しい場所を指すようにWALLET_ROOT
を再設定する必要があります。
WALLET_ROOT
およびTDE_CONFIGURATION
パラメータを使用してソフトウェア・キーストアの場所を構成したら、CDBにログインしてキーストアを作成して開き、次にTDEマスター暗号化キーを設定できます。これらのステップを完了したら、データの暗号化を開始できます。
親トピック: ソフトウェア・キーストアの構成
3.2.2 ステップ1: ソフトウェア・キーストアの場所とタイプの構成
init.ora
でWALLET_ROOT
を、データベース・インスタンスでTDE_CONFIGURATION
を設定して、キーストアの場所とタイプを構成する必要があります。
親トピック: ソフトウェア・キーストアの構成
3.2.3 ステップ2: ソフトウェア・キーストアの作成
ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。
- ソフトウェア・キーストアを作成することについて
3つの異なるタイプのソフトウェア・キーストアがあります。 - パスワード保護されたソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。 - 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
親トピック: ソフトウェア・キーストアの構成
3.2.3.1 ソフトウェア・キーストアを作成することについて
3つの異なるタイプのソフトウェア・キーストアがあります。
パスワード保護されたソフトウェア・キーストア、自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを作成できます。
問合せSELECT * FROM V$ENCRYPTION_WALLET
を実行すると、自動ログイン・ソフトウェア・キーストアが自動的に開くため、注意してください。たとえば、パスワード保護されたキーストアと自動ログイン・キーストアがあるとします。パスワード保護されたキーストアが開いているときに、このパスワード保護されたキーストアを閉じて、V$ENCRYPTION_WALLET
ビューを問い合せると、出力にキーストアが開いていることが示されます。ところが、これはV$ENCRYPTION_WALLET
が自動ログイン・ソフトウェア・キーストアを開いて、自動ログイン・キーストアのステータスを表示したことによるものです。
関連項目
親トピック: ステップ2: ソフトウェア・キーストアの作成
3.2.3.2 パスワード保護されたソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。
ADMINISTER KEY MANAGEMENT
文を使用します。
親トピック: ステップ2: ソフトウェア・キーストアの作成
3.2.3.3 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワード保護されたソフトウェア・キーストアから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。
-
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。たとえば:
sqlplus sec_admin as syskm Enter password: password Connected.
SQL*Plusがすでに開かれていて、この間に
init.ora
ファイルを変更してWALLET_ROOT
パラメータを設定した場合、SQL*Plusに再接続します。データベース・セッションはinit.ora
の変更が有効になる前に変更される必要があります。 -
パスワード保護されたソフトウェア・キーストアを作成します。
たとえば:
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/etc/ORACLE/WALLETS/orcl' IDENTIFIED BY keystore_password;
-
次の構文を使用して、自動ログイン・キーストアまたはローカル自動ログイン・キーストアを作成します。
ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE FROM KEYSTORE 'keystore_location' 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
ファイル(同じ資格証明を含む)がある場合のみであるためです。 -
keystore_location
は、自動ログイン・キーストアを作成するパスワード保護されたキーストアのディレクトリの場所に対するパスです(/etc/ORACLE/WALLETS/orcl
など)。この設定は、一重引用符(' '
)で囲みます。この場所を確認するには、V$ENCRYPTION_WALLET
ビューのWRL_PARAMETER
列を問い合せます。 -
software_keystore_password
は、自動ログイン・キーストアを作成するパスワード保護されたキーストアです。
たとえば、パスワード保護されたキーストアの自動ログイン・ソフトウェア・キーストアを
/etc/ORACLE/WALLETS/orcl
ディレクトリに作成するには、次のようにします。ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE
FROM KEYSTORE '/etc/ORACLE/WALLETS/orcl
' IDENTIFIED BY password; keystore altered.この文を実行した後、
cwallet.sso
ファイルがキーストアの場所に表示されます。ewallet.p12
ファイルがパスワード保護されたウォレットです。 -
ノート:
自動ログイン・キーストア(.sso
ファイル)の作成後は、PKCS#12
ウォレット(ewallet.p12
ファイル)は削除しないでください。将来、TDEマスター暗号化キーを再生成またはキー更新するには、PKCS#12
ウォレットが必要です。デフォルトでは、このファイルは、$ORACLE_HOME/admin/
ORACLE_SID
/wallet
ディレクトリにあります。
透過的データ暗号化が自動ログイン・キーストアを使用するのは、このキーストアが正しい場所(ENCRYPTION_WALLET_LOCATION
、
WALLET_LOCATION
またはデフォルトのキーストアの場所)にあり、かつ、暗号化されたキーストアを開くためのSQLがまだ実行されていない場合のみです。(自動ログイン・キーストアにはシステム生成のパスワードがあり、暗号化されていることに注意してください。)
親トピック: ステップ2: ソフトウェア・キーストアの作成
3.2.4 ステップ3: ソフトウェア・キーストアを開く
作成したキーストアの種類に応じて、使用する前にキーストアを手動で開く必要があります。
- ソフトウェア・キーストアを開くことについて
キーストアにおいてTDEマスター暗号化キーを作成またはアクセスする前に、パスワード保護されたソフトウェア・キーストアが開いている必要があります。 - ソフトウェア・キーストアを開く
ソフトウェア・キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
親トピック: ソフトウェア・キーストアの構成
3.2.4.1 ソフトウェア・キーストアを開くことについて
キーストアにおいてTDEマスター暗号化キーを作成またはアクセスする前に、パスワード保護されたソフトウェア・キーストアが開いている必要があります。
透過的データ暗号化の多くの操作では、ソフトウェア・キーストアが開いている必要があります。ソフトウェア・キーストアを開くことができる方法は2つあります。
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、キーストアを手動で開きます。その後、操作を実行できます。 -
操作を実行するために使用される
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。
キーストアには、開いている、閉じている、開いていてもマスター暗号化キーがない、開いていても不明なマスター暗号化キーがある、定義されていない、または使用できない(つまりWALLET_ROOT
の場所にない)というステータスがあります。
キーストアを手動で開くと、手動で閉じるまでキーストアは開いたままになります。データベース・インスタンスを再起動するたびに、パスワード・キーストアを手動で開いて暗号化と復号化の操作を再有効化する必要があります。
キーストアが開いているか、開いていないかのステータスは、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せて確認できます。
3.2.4.2 ソフトウェア・キーストアを開く
ソフトウェア・キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
キーストアが開いていても、TDEマスター暗号化キーをまだ作成していない場合は、V$ENCRYPTION_WALLET
ビューのSTATUS
列によってOPEN_NO_MASTER_KEY
ステータスが知らされます。
親トピック: ステップ3: ソフトウェア・キーストアを開く
3.2.5 ステップ4: ソフトウェア・キーストアのTDEマスター暗号化キーの設定
キーストアが開いたら、それに対してTDEマスター暗号化キーを設定できます。
- ソフトウェア・キーストアTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはキーストアに格納されます。 - ソフトウェア・キーストアのTDEマスター暗号化キーの設定
TDEマスター暗号化キーをソフトウェア・キーストアに設定するには、SET KEY
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
親トピック: ソフトウェア・キーストアの構成
3.2.5.1 ソフトウェア・キーストアのTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはキーストアに格納されます。
TDEマスター暗号化キーは、TDE表キーおよび表領域暗号化キーを保護します。デフォルトでは、TDEマスター暗号化キーは、TDEによって生成されるキーです。V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、キーストアに、設定されているTDEマスター暗号化キーがないかどうか、または不明なTDEマスター暗号化キーがないかどうかを確認できます。
データベースの外部でマスター暗号化IDを手動で作成できます。これはCloud環境で役立ちます。また、後で使用するためにTDEマスター暗号化キーを作成でき、その後それらを手動で有効にできます。
3.2.5.2 ソフトウェア・キーストアのTDEマスター暗号化キーの設定
TDEマスター暗号化キーをソフトウェア・キーストアに設定するには、SET KEY
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
-
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。たとえば:
sqlplus sec_admin as syskm Enter password: password Connected.
-
データベースが
READ WRITE
モードでオープンしていることを確認します。OPEN_MODE
がREAD WRITE
に設定されている場合、TDEマスター暗号化キーを設定できます。ステータスを検索するには、V$DATABASE
動的ビューのOPEN_MODE
列を問い合せます。(このビューにアクセスできない場合は、SYSDBA
として接続し、問合せを再試行します。このタイプの問合せに対してSYSKM
として接続するには、これに対するパスワード・ファイルを作成する必要があります。) -
次の構文を使用して、ソフトウェアでTDEマスター暗号化キーを設定します。
ADMINISTER KEY MANAGEMENT SET KEY [USING TAG 'tag'] [FORCE KEYSTORE] IDENTIFIED BY [EXTERNAL STORE] | keystore_password [WITH BACKUP [USING 'backup_identifier']];
ここでは次のように指定します。
-
tag
は、定義する関連の属性および情報です。この設定は、一重引用符(' '
)で囲みます。 -
FORCE KEYSTORE
はこの操作のためにパスワード保護されたキーストアを一時的に開きます。この操作のためにはキーストアを開く必要があります。 -
キーストアが閉じている場合は、
FORCE KEYSTORE
を含める必要があります。これにより、TDEマスター暗号化キーを設定する前に、キーストアが自動的に開きます。また、FORCE KEYSTORE
句は、自動ログイン・キーストアが構成されており、現在開いている場合に、パスワード保護されたソフトウェア・キーストアを開くように切り替えます。 -
IDENTIFIED BY
はキーストア・パスワードを指定します。または、キーストア・パスワードが外部ストアにある場合は、IDENTIFIED BY EXTERNAL STORE
句を使用できます。 -
WITH BACKUP
を使用すると、キーストアのバックアップが作成されます。パスワード保護されたキーストアの場合、このオプションを使用する必要があります。オプションでUSING
句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' '
)で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(たとえば、emp_key_backup
がバックアップ識別子になっているewallet_
time_stamp
_emp_key_backup.p12
)。オペレーティング・システムで使用されているファイル命名規則に従ってください。
たとえば:
ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY keystore_password WITH BACKUP USING 'emp_key_backup'; keystore altered.
-
3.2.6 ステップ5: データの暗号化
キーストアの構成が完了したので、PDB内のデータの暗号化を開始できます。
個別の表の列、あるいは表領域またはデータベース全体のデータを暗号化できます。
親トピック: ソフトウェア・キーストアの構成
3.3 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。
- 外部キーストアの構成について
外部キーストアは、暗号化キー用の安全な保管場所を提供する独立したサーバーまたはデバイスです。 - ステップ1: 外部キーストアの構成
TDE_CONFIGURATION
パラメータを設定して、外部キーストアを構成できます。 - ステップ2: 外部キーストアを開く
外部キーストアを構成したら、使用する前に開く必要があります。 - ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定
外部キーストアを開くと、最初のTDEマスター暗号化キーを設定できるようになります。 - ステップ4: 統一モードでのデータの暗号化
外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.3.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.3.3 ステップ2: 外部キーストアを開く
外部キーストアを構成したら、使用する前に開く必要があります。
- 外部キーストアを開くことについて
暗号化または復号化を実行する前に、データベースにアクセスできるように外部キーストアを開く必要があります。 - 外部キーストアを開く
外部キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用します。
親トピック: 外部キーストアの構成
3.3.3.1 外部キーストアを開くことについて
暗号化または復号化を実行する前に、外部キーストアがデータベースにアクセスできるようにするために、外部キーストアを開く必要があります。
データベースにリカバリ操作が必要な場合(データベースが正常に停止しておらず、リカバリが必要な暗号化された表領域がある場合など)、データベース自体を開く前に外部キーストアを開く必要があります。
外部キーストアを開く方法としては、次の2つがあります。
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、キーストアを手動で開きます。その後、操作を実行できます。 -
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。
キーストアのステータスを確認するには、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せます。キーストアには、CLOSED
、NOT_AVAILABLE
(つまりWALLET_ROOT
の場所にない)、OPEN
、OPEN_NO_MASTER_KEY
、OPEN_UNKNOWN_MASTER_KEY_STATUS
というステータスがあります。
外部キーストアの場合は、データベースがマウント状態だと、データ・ディクショナリを使用できないため、マスター・キーが設定されているかどうかを確認できないということに注意してください。この場合、ステータスはOPEN_UNKNOWN_MASTER_KEY_STATUS
になります。
関連項目
親トピック: ステップ2: 外部キーストアを開く
3.3.3.2 外部キーストアを開く
外部キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用します。
親トピック: ステップ2: 外部キーストアを開く
3.3.4 ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定
外部キーストアを開いたら、最初のTDEマスター暗号化キーを設定できます。
- 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。 - 新しいTDEマスター暗号化キーの設定
透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。 - 前に構成したTDEマスター暗号化キーの移行
ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化キーを移行する必要があります。
親トピック: 外部キーストアの構成
3.3.4.1 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。
TDE用にソフトウェア・キーストアをまだ構成していない場合は、外部キーストアで最初のTDEマスター暗号化キーを設定できます。TDE用にソフトウェア・キーストアをすでに構成してある場合は、外部キーストアを使用するようにデータベースを移行する必要があります。
現在のマスター暗号化キーとともに、Oracleウォレットでは、マスター暗号化キーを更新するキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター・キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。
3.3.4.3 前に構成したTDEマスター暗号化キーの移行
ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化キーを移行する必要があります。
Oracle Data PumpやOracle Recovery Managerなどのツールでは、ソフトウェア・キーストアを使用してエクスポートまたはバックアップされたデータに対して復号化と暗号化の操作を実行するために、古いソフトウェア・キーストアにアクセスする必要があります。ソフトウェアから外部キーストアに移行できます。
現在のマスター暗号化キーともに、Oracleキーストアでは、マスター暗号化キーをローテーションするキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター暗号化キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。
3.3.5 ステップ4: 統一モードでのデータの暗号化
外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。
親トピック: 外部キーストアの構成
3.4 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。
- 表の列の暗号化について
表の個々の列を暗号化できます。 - TDE列暗号化で暗号化できるデータ型
Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。 - TDE列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。 - 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。 - 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。 - 暗号化列に対する索引の作成
暗号化された列に対して索引を作成できます。 - 暗号化列へのSaltの追加
Saltは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。 - 暗号化列からのSaltの削除
ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。 - 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更
ALTER TABLE
SQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。
親トピック: 透過的データ暗号化の構成
3.4.1 表の列の暗号化について
表の個々の列を暗号化できます。
個々の列または表領域全体のどちらを暗号化するかは、表のデータ型によって決まります。また、TDE列暗号化をサポートしていない機能もいくつかあります。
親トピック: 表の列の暗号化
3.4.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 各データ型の最大許容サイズ
データ型 | 最大サイズ |
---|---|
|
1932バイト |
|
3932バイト |
|
32,699バイト |
|
1966バイト |
|
16,315バイト |
|
966バイト |
|
32,699バイト |
ノート:
TDE表領域暗号化には、これらのデータ型制限はありません。
3.4.3 TDE列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。
TDE列暗号化は、次のデータベース機能と併用しないでください。
-
Bツリー以外の索引タイプ
-
索引内のレンジ・スキャン検索
-
同期チェンジ・データ・キャプチャ
-
トランスポータブル表領域
-
ID列として作成された列
また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。
サポートされていないこれらの機能を使用する必要があるアプリケーションは、DBMS_CRYPTO
PL/SQLパッケージを使用して暗号化を実行できます。
透過的データ暗号化は、ディスクまたは他のメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、Oracle Databaseセキュリティ・ガイドに記載されているネットワーク暗号化ソリューションを使用します。
親トピック: 表の列の暗号化
3.4.4 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。
- 暗号化列を含む表の作成について
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成できます。 - デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
TDEでは、192ビットのキーの長さを使用するAES
暗号化アルゴリズム(AES192
)がデフォルトで使用されます。 - アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成します。 - NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。 - 例: CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。 - 例: 表の整合性アルゴリズムの変更
ALTER TABLE SQL文を使用して、データベース表の整合性アルゴリズムを変更できます。 - 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
親トピック: 表の列の暗号化
3.4.4.1 暗号化列を含む表の作成について
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成できます。
暗号化列を含むリレーショナル表を作成するには、CREATE TABLE
SQL文でデータベース列を定義するときにSQL ENCRYPT
句を指定します。
親トピック: 暗号化列を含む表の作成
3.4.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.4.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.4.4.4 NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。
表の行および暗号化列の数が多い場合、TDEチェックをバイパスすることで、かなりの量のディスク領域になることがあります。さらに、処理サイクルが節約され、TDEに関連するパフォーマンス・オーバーヘッドが減少します。
TDEでは、デフォルトでSHA-1
整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1
アルゴリズムを使用している場合は、NOMAC
パラメータによって同じ表の別の列を暗号化することはできません。
-
暗号化および復号化操作での整合性チェックをバイパスするには、
CREATE TABLE
文およびALTER TABLE
文でNOMAC
パラメータを使用します。
親トピック: 暗号化列を含む表の作成
3.4.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.4.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.4.4.7 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
外部表は、ORACLE_DATAPUMP
アクセス・ドライバを使用して更新できます。
-
外部表の特定の列を暗号化するには、列を定義するときに
ENCRYPT
句を使用します。列は、システム生成キーによって暗号化されます。たとえば、次の
CREATE TABLE
SQL文は、3DES168
アルゴリズムを使用してssn
列を暗号化します。CREATE TABLE emp_ext ( first_name, .... ssn ENCRYPT USING '3DES168', ....
外部表を新しい場所に移動することを予定している場合、列の暗号化にランダム生成のキーは使用できません。これは、新しい場所ではランダム生成のキーが使用できないためです。
このような場合は、列を暗号化する際にパスワードを指定する必要があります。データを移動した後で、同じパスワードを使用して、新しい場所の暗号化列データへのアクセスに必要なキーを再生成できます。
表パーティション交換でもパスワード保護された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.4.5 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。
- 既存の表にある列の暗号化について
ALTER TABLE
SQL文では、既存の表にある列を暗号化できます。 - 既存の表への暗号化列の追加
既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALT
を使用して列を索引付けすることができます。 - 暗号化されていない列の暗号化
ALTER TABLE MODIFY
文を使用して、既存の暗号化されていない列を暗号化できます。 - 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
親トピック: 表の列の暗号化
3.4.5.1 既存の表にある列の暗号化について
ALTER TABLE
SQL文では、既存の表にある列を暗号化できます。
既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ADD
句またはMODIFY
句を含むALTER TABLE
SQL文を使用します。
親トピック: 既存の表にある列の暗号化
3.4.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.4.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.4.5.4 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
-
列の暗号化を無効にするには、
ALTER TABLE MODIFY
コマンドを使用し、DECRYPT
句を指定します。
例3-5では、employee
表のfirst_name
列を復号化しています。
例3-5 列の暗号化の無効化
ALTER TABLE employee MODIFY (first_name DECRYPT);
親トピック: 既存の表にある列の暗号化
3.4.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.4.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.4.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.4.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.5 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。
- 表領域およびデータベースの暗号化変換について
CREATE TABLESPACE
SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACE
によって、既存の表領域を暗号化できます。 - 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。 - 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。 - 表領域暗号化のデフォルト・アルゴリズムの設定
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
は、特定の暗号化シナリオに適用されます。 - 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。 - データ・ディクショナリ内の機密資格証明データの暗号化
SYS.LINK$
システム表内およびSYS.SCHEDULER$_CREDENTIAL
システム表内の機密資格証明データを暗号化できます。 - 既存のオフライン表領域の暗号化変換
ALTER TABLESPACE
SQL文のOFFLINE
、ENCRYPT
およびDECRYPT
句を使用して、オフライン暗号化変換を実行できます。 - 既存のオンライン表領域の暗号化変換
ALTER TABLESPACE
SQL文をONLINE
およびENCRYPT
またはDECRYPT
句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。 - 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
親トピック: 透過的データ暗号化の構成
3.5.1 表領域およびデータベースの暗号化変換について
CREATE TABLESPACE
SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACE
によって、既存の表領域を暗号化できます。
新規または既存の表領域の暗号化に加えて、全データベースを暗号化できます。その場合、Oracle管理の表領域(このリリースではSYSTEM
、SYSAUX
、TEMP
およびUNDO
表領域)も暗号化されます。全データベースを暗号化するには、ALTER DATABASE
ではなく、ALTER TABLESPACE
を使用してOracle管理の表領域を暗号化します。
次の表で、表領域およびデータベースのオフラインとオンラインの暗号化変換の違いを比較します。
表3-2 オフラインとオンラインの表領域およびデータベースの暗号化変換
機能 | オフライン変換 | オンライン変換 |
---|---|---|
最小の変換機能があるリリース |
Oracleデータベース11gリリース1 (11.1) |
Oracle Database 12cリリース2 (12.2)以降 |
バックポートできるもの |
AES128 アルゴリズムでのデータ・ファイルの暗号化および復号化の機能(次を使用 またはDECRYPT )をOracle Databaseリリース12.1.0.2および11.2.0.4で使用できます。
|
なし |
サポートされるアルゴリズム |
|
TDEがサポートするすべての対称型暗号化アルゴリズム。サポートされる暗号化と整合性のアルゴリズムを参照してください。「既存のオンライン表領域の暗号化変換について」を参照してください。 |
変換をいつ実行できるか |
表領域がオフラインであるか、データベースがマウント段階にあるとき。 |
表領域がオンラインで、データベースが読取り/書込みモードで開いているとき。 |
変換に補助領域が必要か |
いいえ |
はい。ガイドラインは、オンライン変換での既存の表領域の暗号化を参照してください。 |
Oracle Data Guardの変換ガイドライン |
プライマリおよびスタンバイの両方を手動で変換します。スタンバイを最初に変換し、最小停止時間に切り替えます |
プライマリを変換した後、スタンバイ変換が自動的に行われます。スタンバイでは、オンライン変換を直接実行することはできません。 |
表領域 |
Oracle Database 12cリリース2 (12.2)以降のみ。 |
Oracle Database 12cリリース2 (12.2)以降のみ。 |
既存の |
いいえ、ただし、Oracle Database 12cリリース2 (12.2)以降で |
いいえ、ただし、Oracle Database 12cリリース2 (12.2)以降で |
既存の表領域を復号化できるか |
以前にオフライン暗号化操作によって暗号化された表領域またはデータ・ファイルのみ復号化できます。一度暗号化された |
はい、ただし、一度暗号化された |
暗号化キーをキー更新できるか |
いいえ、ただし、表領域が暗号化された後、オンライン変換を使用してOracle Database 12cリリース2 (12.2)の互換性でキー変更できます。 |
はい |
暗号化操作を並列して実行できるか |
複数のユーザー・セッションを実行しているデータ・ファイル・レベルで、並列した暗号化変換を実行できます。 |
複数のユーザー・セッションが実行している表領域レベルで、並列した暗号化変換を実行できます。 |
暗号化変換SQL文が完了できなかった場合どうするか |
暗号化または復号化SQL文を再発行して、表領域内のすべてのデータ・ファイルが確実に一貫して暗号化または復号化されるようにします。 |
|
親トピック: 表領域およびデータベースの暗号化変換
3.5.2 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。
次の制約に注意してください:
-
透過的データ暗号化(TDE)表領域暗号化では、SQLレイヤーでデータを暗号化および復号化するTDE列暗号化とは対照的に、読取りおよび書込み操作時にデータを暗号化または復号化します。このことは、データ型制限や索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。
-
インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。
-
SYSTEM
、SYSAUX
、TEMP
またはUNDO
表領域を暗号化する場合は、後でALTER TABLESPACE
SQL文を使用して表領域を復号化する場合であっても、キーストアを手動で閉じないでください。
3.5.3 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。
- ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE
初期化パラメータを設定する必要があります。 - ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。 - ステップ3: 暗号化された表領域の作成
COMPATIBLE
初期化パラメータを設定したら、暗号化された表領域の作成の準備は完了です。
親トピック: 表領域およびデータベースの暗号化変換
3.5.3.1 ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE
初期化パラメータを設定する必要があります。
- 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
最小のCOMPATIBLE
初期化パラメータ設定である11.2.0.0
では、表領域暗号化機能の完全なセットが有効になります。 - 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
COMPATIBLE
初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
親トピック: 暗号化された新しい表領域の作成
3.5.3.1.1 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
最小のCOMPATIBLE
初期化パラメータ設定である11.2.0.0
では、表領域暗号化機能の完全なセットが有効になります。
互換性を11.2.0.0
に設定すると、次の機能を使用できます。
-
11.2.0.0
に設定することにより、データベースでは、データの暗号化にサポートしている4つのアルゴリズム(3DES168
、AES128
、AES192
およびAES256
)の任意のものを使用できます。 -
11.2.0.0
に設定することにより、ソフトウェア・キーストアから外部キーストアにキーを移行できます(TDEマスター暗号化キーが外部キーストア用に構成されていることを確認してください)。 -
11.2.0.0
に設定することにより、TDEマスター暗号化キーをキー更新できます。
COMPATIBLE
パラメータを11.2.0.0
に設定すると、変更を元に戻せないことに注意してください。表領域暗号化を使用するには、互換性設定が最低でも11.2.0.0
であることを確認します。
関連項目:
-
COMPATIBLE
パラメータの詳細は、Oracle Database SQL言語リファレンスを参照してください。 -
初期化パラメータ・ファイルの詳細は、Oracle Database管理者ガイドを参照してください。
3.5.3.1.2 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定
COMPATIBLE
初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
-
データベース・インスタンスにログインします。
マルチテナント環境の場合、PDBにログインします。たとえば:
sqlplus sec_admin@hrpdb Enter password: password Connected.
使用可能なPDBを検索するには、
show pdbs
コマンドを実行します。現在のPDBを確認するには、show con_name
コマンドを実行します。 -
COMPATIBLE
パラメータの現在の設定を確認します。たとえば:
SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 11.2.0.0 noncdbcompatible BOOLEAN FALSE
-
COMPATIBLE
パラメータを変更する必要がある場合、この手順の残りのステップを実行します。値は12.2.0.0以上である必要があります。
-
コマンドラインから、データベース・インスタンスの初期化パラメータ・ファイルを特定します。
-
UNIXシステム: このファイルは、
ORACLE_HOME
/dbs
ディレクトリにあり、init
ORACLE_SID
.ora
(initmydb.ora
など)という名前です。 -
Windowsシステム: このファイルは、
ORACLE_HOME
\database
ディレクトリにあり、init
ORACLE_SID
.ora
(initmydb.ora
など)という名前です。
-
-
初期化パラメータ・ファイルを新しい
COMPATIBLE
設定を使用するよう編集します。たとえば:
COMPATIBLE=12.2.0.0
-
SQL*Plusで、
SYSDBA
管理権限を持つユーザーとして接続し、データベースを再起動します。たとえば:
CONNECT /AS SYSDBA SHUTDOWN STARTUP
表領域の暗号化を使用している場合は、データベース・マウントでキーストアを開きます。キーストアは、暗号化された表領域のデータにアクセスする前に開いている必要があります。
たとえば:
STARTUP MOUNT; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password; ALTER DATABASE OPEN;
3.5.3.2 ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。
-
次のようにTDEマスター暗号化キーを設定します。
-
ソフトウェアTDEマスター暗号化キーの場合は、「ステップ4: ソフトウェア・キーストアのTDEマスター暗号化キーの設定」を参照してください。
-
ハードウェアTDEマスター暗号化キーの場合は、ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定を参照してください。
-
親トピック: 暗号化された新しい表領域の作成
3.5.3.3 ステップ3: 暗号化された表領域の作成
COMPATIBLE
初期化パラメータを設定したら、暗号化された表領域の作成は完了です。
- 暗号化された表領域の作成について
暗号化された表領域を作成するには、CREATE TABLESPACE
SQL文を使用します。 - 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING
句を含むCREATE TABLESPACE
文を使用する必要があります。 - 例: AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、暗号化された表領域を作成できます。 - 例: デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。
親トピック: 暗号化された新しい表領域の作成
3.5.3.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: 暗号化された表領域の作成
3.5.3.3.2 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING
句を含むCREATE TABLESPACE
文を使用する必要があります。
-
CREATE TABLESPACE
システム権限が付与されたユーザーとして、データベース・インスタンスにログインします。マルチテナント環境の場合、PDBにログインします。たとえば:
sqlplus sec_admin@hrpdb as syskm Enter password: password Connected.
使用可能なPDBを検索するには、
show pdbs
コマンドを実行します。現在のPDBを確認するには、show con_name
コマンドを実行します。 -
暗号化句を使用して
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.5.3.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: 暗号化された表領域の作成
3.5.3.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: 暗号化された表領域の作成
3.5.4 表領域暗号化のデフォルト・アルゴリズムの設定
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
を設定できます。
親トピック: 表領域およびデータベースの暗号化変換
3.5.5 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。
- 将来の表領域の暗号化について
ENCRYPT_NEW_TABLESPACES
動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。 - 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACES
データベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
親トピック: 表領域およびデータベースの暗号化変換
3.5.5.1 将来の表領域の暗号化について
ENCRYPT_NEW_TABLESPACES
動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。
デフォルトでは、すべてのOracle Cloudデータベースは暗号化されます。そのようなデータベースに既製のアプリケーションをインストールすると、そのインストール・スクリプトには暗号化構文がない可能性があります。この場合、ENCRYPT_NEW_TABLESPACES
がCLOUD_ONLY
に設定されているため、これらの表領域は暗号化されて作成されます。
Oracle Cloud環境では、Oracle Cloud環境およびオンプレミスの環境に暗号化された表領域を作成するときに、次のシナリオが発生する場合があります。
-
Oracle Cloudにテスト・データベースを作成し、
ENCRYPT_NEW_TABLESPACE
パラメータが、暗号化の際にクラウド・データベースを自動的に作成するよう設定されているときに表領域が暗号化されました。ところが、そういった意図がないか、暗号化されたデータベースをオンプレミスに戻すAdvanced Security Optionライセンスさえも持っていない場合があります。この場合、Oracle Recovery Manager (Oracle RMAN)には、AS DECRYPTED
を複製またはリストアするオプションがあります。 -
プライマリ・データベースがオンプレミスで、スタンバイ・データベースがOracle Cloudにある、ハイブリッド環境を作成します。切り替え操作が行われた場合、新しいプライマリはOracle Cloud上になります。新しい表領域が透過的に暗号化された場合、このリストの最初の項目に対して同様のシナリオが発生することがあります。たとえば、Advanced Security Option (ASO)ライセンスを持っておらず、自動的に暗号化された表領域がOracle Cloudにあるとします。オンプレミスのスタンバイ・データベースも自動的に暗号化されます。この場合、オンプレミス・スタンバイ・データベースにAdvanced Securityライセンス(透過的データ暗号化およびデータ・リダクションを含む)が必要か、スタンバイ・データベースを使用できません。
親トピック: 将来の表領域の暗号化
3.5.5.2 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACES
データベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
親トピック: 将来の表領域の暗号化
3.5.6 データ・ディクショナリ内の機密資格証明データの暗号化
SYS.LINK$
システム表およびSYS.SCHEDULER$_CREDENTIAL
システム表内の機密資格証明データを暗号化できます。
デフォルトでは、SYS.LINK$
システム表内およびSYS.SCHEDULER$_CREDENTIAL
システム表内の資格証明データは、不明瞭化されています。ただし、多くのタイプの不明瞭化解除アルゴリズムが使用可能であるため、Oracleでは、この機密資格証明データを暗号化することをお薦めします。データ・ディクショナリ資格証明のステータスを確認するために、DICTIONARY_CREDENTIALS_ENCRYPT
データ・ディクショナリ・ビューを問い合せることができます。
これらの2つのシステム表内の機密資格証明データの暗号化には、透過的データ暗号化を使用します。資格証明データの暗号化には、AES256アルゴリズムを使用します。資格証明データを暗号化するには、Oracle Advanced Security Optionライセンスを所有している必要はありませんが、SYSKM
管理権限が付与されている必要があります。また、データベースには、開いているキーストアがある必要があります。
親トピック: 表領域およびデータベースの暗号化変換
3.5.7 既存のオフライン表領域の暗号化変換
ALTER TABLESPACE
SQL文のOFFLINE
、ENCRYPT
およびDECRYPT
句を使用して、オフライン暗号化変換を実行できます。
- 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。 - オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびENCRYPT
句とともに使用できます。 - オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびDECRYPT
句とともに使用できます。
親トピック: 表領域およびデータベースの暗号化変換
3.5.7.1 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。
このオフラインの暗号化方法は、データベースの互換性をOracle Database 11cリリース2 (11.2)またはOracle Database 12cリリース1 (12.1)からリリース18cに変更する(元に戻すことはできません)ことを計画していない場合に使用します。オフラインの暗号化方法は、このデータベースをリリース18cにアップグレードする前に、透過的データ暗号化を簡単に利用する場合にも便利です。オフライン表領域は、暗号化と復号化の両方を行うことができます。
次の点に注意してください。
-
Oracle Database提供の表領域(
SYSTEM
、SYSAUX
およびUNDO
)をオフライン変換方法を使用して暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。 -
オンラインの方法を使用して、キー更新、暗号化アルゴリズムの変更またはオフラインの方法で以前に暗号化した表領域を復号化できます。
-
Oracle Data Guardを構成している場合には、先にスタンバイの表領域を暗号化し、プライマリに切り替えてから、プライマリの表領域を暗号化することによって、停止時間を最小限に抑えることができます。オフライン暗号化(データファイルおよび表領域レベルの両方)は、最初はスタンバイとなります。オンライン暗号化はOracle Data Guardトランザクションであるため、スタンバイ・データベースでリプレイされます。
-
オフライン変換では暗号化アルゴリズムを指定できません。オフライン変換では、すべてのデータ・ファイルおよび表領域が
AES128
暗号化キーを使用して暗号化されます。暗号化キーは、V$DATABASE_KEY_INFO
ビューのENCRYPTIONALG
列を問い合せることで確認できます。 -
異なるデータ・ファイルを暗号化するために、オフライン表領域を複数のフォアグラウンド・セッションを使用して並列で変換できます。
-
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.5.7.2 オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびENCRYPT
句とともに使用できます。
SYSTEM
およびUNDO
は、オフラインにできません。表領域をオフラインで暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。
関連項目
親トピック: 既存のオフライン表領域の暗号化変換
3.5.7.3 オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびDECRYPT
句とともに使用できます。
関連項目
親トピック: 既存のオフライン表領域の暗号化変換
3.5.8 既存のオンライン表領域の暗号化変換
ALTER TABLESPACE
SQL文をONLINE
およびENCRYPT
またはDECRYPT
句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。
- 既存のオンライン表領域の暗号化変換について
既存のユーザー表領域、SYSTEM
、SYSAUX
およびUNDO
表領域がオンラインのとき、これらを暗号化、復号化またはキー更新できます。 - オンライン変換での既存の表領域の暗号化
オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACE
をONLINE
およびENCRYPT
句とともに使用します。 - オンライン変換での既存の表領域のキー更新
オンラインの既存の表領域をキー更新するには、ALTER TABLESPACE
SQL文のREKEY
句を使用できます。 - オンライン変換での既存の表領域の復号化
既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACE
SQL文をDECRYPT
句とともに使用できます。 - 中断されたオンライン暗号化変換の終了
オンライン暗号化プロセスが中断された場合は、FINISH
句を使用してALTER TABLESPACE
文を再実行することで、変換を完了できます。
親トピック: 表領域およびデータベースの暗号化変換
3.5.8.1 既存のオンライン表領域の暗号化変換について
既存のユーザー表領域、SYSTEM
、SYSAUX
および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.5.8.2 オンライン変換での既存の表領域の暗号化
オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACE
をONLINE
およびENCRYPT
句とともに使用します。
V$ENCRYPTED_TABLESPACES
動的ビューのSTATUS
列を問い合せて、暗号化ステータスを確認できます。このビューのENCRYPTIONALG
列には、使用されている暗号化アルゴリズムが示されます。変換プロセスが中断された場合、ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。たとえば、プライマリ・データ・ファイルが変換され、スタンバイ・データ・ファイルは変換されなかった場合、スタンバイ・データ・ファイルのスタンバイ・データベースでALTER TABLESPACE ... FINISH
を実行できます。
3.5.8.3 オンライン変換での既存の表領域のキー更新
オンラインの既存の表領域をキー更新するには、ALTER TABLESPACE
SQL文のREKEY
句を使用できます。
-
TEMP
表領域をキー更新することはできません。TEMP
表領域に異なる暗号化アルゴリズムを割り当てる場合には、TEMP
を削除して、正しい暗号化アルゴリズムで再作成します。 -
オンライン表領域のキー更新操作とマスター・キーの操作を同時に実行しないでください。いずれかの表領域が現在キー更新中かどうかを確認するには、次の問合せを発行して、暗号化された表領域のキー更新ステータスを確認します。
SELECT TS#,ENCRYPTIONALG,STATUS FROM V$ENCRYPTED_TABLESPACES;
REKEYING
というステータスは、対応する表領域がまだキー更新中であることを意味します。このステータスが適用される間は、マスター・キーをキー更新しないでください。
オンライン変換を使用して既存の表領域をキー更新するには:
ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。
3.5.8.4 オンライン変換での既存の表領域の復号化
既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACE
SQL文をDECRYPT
句とともに使用できます。
ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。
親トピック: 既存のオンライン表領域の暗号化変換
3.5.8.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 TABLEPSPACE
のENCRYPTION ONLINE FINISH ENCRYPT
句を使用して暗号化を再開できます。
親トピック: 既存のオンライン表領域の暗号化変換
3.5.9 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
- 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM
、SYSAUX
、UNDO
およびTEMP
表領域を含むすべての表領域が暗号化されます。 - オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。 - オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
親トピック: 表領域およびデータベースの暗号化変換
3.5.9.1 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM
、SYSAUX
、UNDO
およびTEMP
表領域を含むすべての表領域が暗号化されます。
次の点に注意してください。
-
暗号化を実行するには、表領域暗号化変換のオフラインおよびオンライン機能を使用できます。
-
Oracle提供の表領域のどれかまたはすべてを、任意の順に暗号化できます。Oracle提供の表領域の暗号化は、ユーザー作成の表領域の暗号化に影響が及ぶことはありません。
-
Oracle提供の表領域を暗号化する際、Oracle Databaseはキーストアが閉じないようにします。
-
既存の一時表領域は暗号化できませんが、既存の一時表領域を削除してから、暗号化済として再作成することはできます。
-
暗号化された表領域の機密データから生成されたメタデータ
UNDO
およびTEMP
は、すでに自動的に暗号化されています。そのため、UNDO
およびTEMP
の暗号化はオプションです。 -
データベース内のすべての表領域を暗号化するパフォーマンスの影響は、ワークロードおよびプラットフォームにより異なります。近年のCPUの多くには、内蔵のハードウェア・アクセラレーションが搭載されているため、パフォーマンスへの影響は最小限になります。
-
マルチテナント環境では、Oracle提供の表領域を含めた、プラガブル・データベース(PDB)内の表領域を暗号化できます。ただし、CDBルート内のキーストアは、PDBがキーストアを開けるように、常に開いている必要があります。キーストアが開いているかどうかのステータスは、
V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せて、確認できます。
親トピック: 既存のデータベースの暗号化変換
3.5.9.2 オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
表領域の暗号化アルゴリズムを変更する場合には、「表領域のTDEマスター暗号化キーのキー更新」を参照してください。
親トピック: 既存のデータベースの暗号化変換
3.5.9.3 オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
ALTER TABLESPACE ENCRYPTION REKEY
SQL文を発行できます。
親トピック: 既存のデータベースの暗号化変換
3.6 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
表3-3に、これらの動的ビューおよびデータ・ディクショナリ・ビューを示します。
表3-3 透過的データ暗号化の関連ビュー
ビュー | 説明 |
---|---|
|
現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。 |
|
|
|
データベースにあるすべての暗号化列の暗号化情報が表示されます。 |
|
現在のユーザーのスキーマにある暗号化された表の列の暗号化情報が表示されます。 |
|
永続、一時、およびUNDO表領域を含むすべてのタイプの表領域についての表領域使用状況メトリックを示します |
|
様々な機能(クライアント)用のキーストアに格納された文字列(シークレット)のプロパティが一覧表示されます。 マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
現在のデータベースに使用されているデフォルトの暗号化キーについての情報を表示します。デフォルトは |
|
暗号化された表領域に関する情報が表示されます。 |
|
マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
TDEのキーストアのステータスおよびキーストアの場所に関する情報が表示されます。 |
|
現在のPDBでサポートされている暗号化アルゴリズムを表示し、Oracle Recovery Manager (Oracle RMAN)によってユーザー要求アルゴリズムを検証するために使用されます |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。
親トピック: 透過的データ暗号化の構成