第3章 透過的データ暗号化の構成
ソフトウェア・キーストアおよび外部キーストアを、個々の表列や表領域全体での使用のために構成できます。
- ソフトウェア・キーストアの構成
ソフトウェア・キーストアとは、ソフトウェアのファイル・システム上にあるTDEマスター暗号化キーのコンテナです。 - 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。 - 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。 - 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。 - 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
親トピック: 透過的データ暗号化の使用
3.1 ソフトウェア・キーストアの構成
ソフトウェア・キーストアとは、ソフトウェアのファイル・システム上にあるTDEマスター暗号化キーのコンテナです。
- ソフトウェア・キーストアの構成について
ソフトウェア・キーストアとは、透過的データ暗号化マスター暗号化キーを格納するコンテナです。 - ステップ1: sqlnet.oraファイルでのキーストアの場所の設定
ソフトウェア・キーストアを構成するには、まずsqlnet.oraファイル内にその場所を指定します。 - ステップ2: ソフトウェア・キーストアの作成
ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。 - ステップ3: ソフトウェア・キーストアを開く
作成したキーストアの種類に応じて、使用する前にキーストアを手動で開く必要があります。 - ステップ4: ソフトウェアTDEマスター暗号化キーの設定
キーストアが開いたら、それに対してTDEマスター暗号化キーを設定できます。 - ステップ5: データの暗号化
ソフトウェア・キーストアの構成が完了すると、データの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.1.1 ソフトウェア・キーストアの構成について
ソフトウェア・キーストアとは、透過的データ暗号化マスター暗号化キーを格納するコンテナです。
キーストアを構成する前に、まずsqlnet.oraファイルでその場所を定義する必要があります。1つのデータベースあたり1つのキーストアがあり、データベースは、sqlnet.oraファイルで定義したキーストアの場所を確認することで、このキーストアを探します。必要に応じて、キーストアのコピーなどの他のキーストアを作成したり、キーが含まれているファイルをエクスポートすることができます。ただし、sqlnet.oraの場所で構成したキーストアを除去または削除したり、別のキーストアで置き換えることはできません。
sqlnet.oraファイルでソフトウェア・キーストアの場所を構成したら、データベース・インスタンスにログインしてキーストアを作成して開き、次にTDEマスター暗号化キーを設定できます。これらのステップを完了したら、データの暗号化を開始できます。
親トピック: ソフトウェア・キーストアの構成
3.1.2 ステップ1: sqlnet.oraファイルでのキーストアの場所の設定
ソフトウェア・キーストアを構成する最初のステップは、sqlnet.oraファイル内にその場所を指定します。
- sqlnet.oraファイルでのキーストアの場所について
Oracle Databaseは、sqlnet.oraファイルでキーストアのディレクトリの場所を確認します。 - ソフトウェア・キーストアの場所用のsqlnet.oraファイルの構成
sqlnet.oraファイルを使用して、通常のファイル・システム用、複数データベースのアクセス用、およびOracle Automatic Storage Management (ASM)用にキーストアの場所を構成します。 - キーストア・パスワードのための外部ストアの構成
キーストア・パスワードの外部ストアでは、集中的にアクセスおよび管理できる場所にキーストア・パスワードが格納されます。 - 例: 通常のファイル・システム用のソフトウェア・キーストアの構成
通常のファイル・システムにソフトウェア・キーストアを構成できます。 - 例: 複数のデータベースでsqlnet.oraファイルを共有する場合のソフトウェア・キーストアの構成
複数のデータベースでsqlnet.oraファイルを共有するように構成できます。 - 例: Oracle Automatic Storage Management用のソフトウェア・キーストアの構成
Automatic Storage Management (ASM)ファイル・システムにsqlnet.oraを構成できます - 例: Oracle Automatic Storage Managementディスク・グループ用のソフトウェア・キーストアの構成
Oracle Automatic Storage Management (ASM)ディスク・グループにsqlnet.oraを構成できます。
親トピック: ソフトウェア・キーストアの構成
3.1.2.1 sqlnet.oraファイルでのキーストアの場所について
Oracle Databaseは、sqlnet.oraファイルでキーストアのディレクトリの場所を確認します。
これは、キーストアがソフトウェア・キーストア(ウォレット)、Oracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)のいずれであるかに関係なく適用されます。sqlnet.oraファイルを編集して、作成する予定のキーストアのディレクトリ場所を定義する必要があります。このディレクトリが事前に存在していることを確認してください。このディレクトリは空であると理想的です。
Oracle Real Application Clusters (Oracle RAC)またはマルチテナント環境でsqlnet.oraファイルを編集する必要がある場合は、次の動作に注意してください。
-
Oracle RAC環境:
srvctlユーティリティを使用していて、sqlnet.ora構成ファイルに環境変数を含める場合は、各環境変数をオペレーティング・システムとsrvctl環境の両方に設定する必要があります。Oracle Real Appications Clusters (Oracle RAC)では、Oracle Databaseは、次のような共有ファイル・システム上の共有ソフトウェア・キーストア(ウォレット)のみをサポートします。- Oracle Automatic Storage Management(Oracle ASM)
- Oracle ASMクラスタ・ファイル・システム(Oracle ACFS)
- Oracle Key Vault
- OCI KMS
-
マルチテナント環境:
sqlnet.oraファイルがCDBルート内にある場合、キーストアの場所はCDB環境全体に対して設定されます。
sqlnet.oraファイルで、ENCRYPTION_WALLET_LOCATIONパラメータを設定してキーストアの場所を指定する必要があります。どのキーストアを使用するかを決める場合、Oracle Databaseは、次の場所においてこの順序でキーストアの場所を検索します。
-
sqlnet.oraファイルでパラメータENCRYPTION_WALLET_LOCATIONによって指定されている場所にあるキーストアの使用を試行します。 -
ENCRYPTION_WALLET_LOCATIONパラメータが設定されていない場合、Oracle Databaseはデフォルトのデータベースの場所である${ORACLE_BASE}/admin/${DB_UNIQUE_NAME}/walletでキーストアを検索します。(DB_UNIQUE_NAMEは、初期化パラメータ・ファイルで指定されたデータベースの固有の名前です。)キーストアの場所およびステータスは、V$ENCRYPTION_WALLET動的ビューで確認できます。キーストアの場所がsqlnet.oraファイルに設定されていない場合、V$ENCRYPTION_WALLETビューにはデフォルトの場所が表示されます。
デフォルトでは、sqlnet.oraファイルは、${ORACLE_HOME}/network/adminディレクトリ、またはTNS_ADMIN環境変数によって設定されている場所にあります。正しいsqlnet.oraファイルを指すようにTNS_ADMIN環境変数が適切に設定されていることを確認してください。
3.1.2.2 ソフトウェア・キーストアの場所用のsqlnet.oraファイルの構成
sqlnet.oraファイルを使用して、通常のファイル・システム用、複数データベースのアクセス用、およびOracle Automatic Storage Management (ASM)用にキーストアの場所を構成します。
-
通常のファイル・システムでソフトウェア・キーストアを作成するには、
sqlnet.oraファイルを編集するときに次のフォーマットを使用します。ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=path_to_keystore)))
path_to_keystoreが環境変数を含むことになる場合、データベース・インスタンスが起動した環境で、データベースを起動する前に、この変数を設定します。srvctlユーティリティを使用してデータベースを起動する場合、次のコマンドを使用してsrvctl環境にも環境変数を設定します。srvctl setenv database -db database_name -env "environment_variable_name=environment_variable_value"
-
Oracle Real Application Clusters (Oracle RAC)の共有ファイル・システムでソフトウェア・キーストアを作成するには、
sqlnet.oraファイルを編集するときに次のフォーマットを使用します。ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = +DATA/$ORACLE_UNQNAME/tde)))DIRECTORY設定が環境変数を含むことになる場合、データベース・インスタンスが起動した環境で、データベースを起動する前に、この変数を設定します。srvctlユーティリティを使用してデータベースを起動する場合、Oracle RACインスタンスの名前がFINRACであると仮定すると、次のようなコマンドを使用してsrvctl環境にも環境変数を設定します。srvctl setenv database -db FINRAC -t "ORACLE_UNQNAME=FINRAC, ORACLE_BASE=/u01/opt/oracle"
3.1.2.3 キーストア・パスワードのための外部ストアの構成
キーストア・パスワードの外部ストアでは、集中的にアクセスおよび管理できる場所にキーストア・パスワードが格納されます。
ADMINISTER KEY MANAGEMENTコマンドでは、この非表示パスワードは、SQL*PlusコマンドラインでEXTERNAL STORE句に置き換えることで使用できます。パスワードの外部ストアは、パスワードを必要とする透過的データ暗号化操作を実行するために自動化ツールを使用する状況において、自動化ツールを実行するスクリプトにハードコード化されたパスワードが含まれているときに役立ちます。スクリプト内でのパスワードのハードコード化を回避するために、データベース・サーバーの外部ストアにこのパスワードを格納できます。マルチテナント環境では、すべてのPDBで、ルート・コンテナの非表示パスワードが使用されます。
ADMINISTER KEY MANAGEMENT文でIDENTIFIED BY EXTERNAL STORE句を使用する前に、次のステップを完了する必要があります。
その後、キーストアのオープン、クローズ、バックアップ、シークレット・キーストアの追加、更新または削除、暗号化キーの作成、使用、キー更新、タグ付け、インポート、エクスポートに対してADMINISTER KEY MANAGEMENT文でEXTERNAL STORE句を使用する必要があります。
たとえば:
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY EXTERNAL STORE;
ADMINISTER KEY MANAGEMENT UPDATE CLIENT SECRET文またはADMINISTER KEY MANAGEMENT DELETE CLIENT SECRET文を使用して、外部キーストア・パスワードを変更または削除できます。
3.1.2.4 例: 通常のファイル・システム用のソフトウェア・キーストアの構成
通常のファイル・システムにソフトウェア・キーストアを構成できます。
次の例では、データベース名がorclである通常のファイル・システム用にsqlnet.oraファイルにソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=/etc/ORACLE/WALLETS/orcl)))
3.1.2.5 例: 複数のデータベースでsqlnet.oraファイルを共有する場合のソフトウェア・キーストアの構成
複数のデータベースでsqlnet.oraファイルを共有するように構成できます。
次の例では、複数のデータベースでsqlnet.oraファイルを共有する場合にソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=/etc/ORACLE/WALLETS/$ORACLE_SID/)))
3.1.2.6 例: Oracle Automatic Storage Management用のソフトウェア・キーストアの構成
Automatic Storage Management (ASM)ファイル・システムにsqlnet.oraを構成できます。
次の例では、ASMファイル・システム用にsqlnet.oraファイルにソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=+disk1/mydb/wallet)))3.1.2.7 例: Oracle Automatic Storage Managementディスク・グループ用のソフトウェア・キーストアの構成
Oracle Automatic Storage Management (ASM)ディスク・グループにsqlnet.oraを構成できます。
次のフォーマットは、ASMディスク・グループでソフトウェア・キーストアの場所を作成する場合にソフトウェア・キーストアを構成する方法を示しています。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=+ASM_file_path_of_the_diskgroup)))
3.1.3 ステップ2: ソフトウェア・キーストアの作成
ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。
- ソフトウェア・キーストアを作成することについて
3つの異なるタイプのソフトウェア・キーストアがあります。 - パスワードベースのソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーの保護に使用するパスワードが必要です。 - 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワードベースのキーストアの別の方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
親トピック: ソフトウェア・キーストアの構成
3.1.3.1 ソフトウェア・キーストアを作成することについて
3つの異なるタイプのソフトウェア・キーストアがあります。
パスワードベースのソフトウェア・キーストア、自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを作成できます。
問合せSELECT * FROM V$ENCRYPTION_WALLETを実行すると、自動ログイン・ソフトウェア・キーストアが自動的に開くため、注意してください。たとえば、パスワードベースのキーストアと自動ログイン・キーストアがあるとします。パスワードベースのキーストアが開いているときに、このパスワードベースのキーストアを閉じて、V$ENCRYPTION_WALLETビューを問い合せると、出力にキーストアが開いていることが示されます。ところが、これはV$ENCRYPTION_WALLETが自動ログイン・ソフトウェア・キーストアを開いて、自動ログイン・キーストアのステータスを表示したことによるものです。
マルチテナント環境では、ソフトウェア・キーストア用に安全な外部ストアを作成できます。この機能では、パスワードをオペレーティング・システムから隠すことができます。それにより、終夜のバッチ・スクリプトなどのユーザーの操作なしにデータベースにアクセスできるスクリプトや他のツールにクリアテキスト・キーストア・パスワードを保存する必要がなくなります。このキーストアの場所は、EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION初期化パラメータによって設定されます。マルチテナント環境では、ADMINISTER KEY MANAGEMENT文をIDENTIFIED BY EXTERNAL STORE句を使用して実行すると、様々なPDBがこの外部ストアの場所にアクセスできます。このように、パスワードをまとめて配置すると、パスワードの更新は外部ストアで一度のみで済みます。
関連項目
親トピック: ステップ2: ソフトウェア・キーストアの作成
3.1.3.2 パスワードベースのソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。
ADMINISTER KEY MANAGEMENT文を使用します。
-
ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。マルチテナント環境では、rootとしてログインします。たとえば:
sqlplus c##sec_admin as syskm Enter password: password Connected.SQL*Plusがすでに開かれていて、この間に
sqlnet.oraファイルを変更した場合、SQL*Plusに再接続します。データベース・セッションはsqlnet.oraの変更が有効になる前に変更される必要があります。 -
ADMINISTER KEY MANAGEMENTSQL文を実行してキーストアを作成します。構文は次のとおりです。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'keystore_location' IDENTIFIED BY software_keystore_password;
ここでは次のように指定します。
-
keystore_locationは、自動ログイン・キーストアを作成するパスワードベースのキーストアのキーストア・ディレクトリの場所に対するパスです(/etc/ORACLE/WALLETS/orclなど)。keystore_location設定は一重引用符(' ')で囲みます。この場所を見つけるには、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。(キーストアがデフォルトの場所に作成されていない場合、V$ENCRYPTION_WALLETビューのSTATUS列はNOT_AVAILABLEになります。) -
software_keystore_passwordは、セキュリティ管理者が作成するキーストアのパスワードです。
たとえば、
/etc/ORACLE/WALLETS/orclディレクトリにキーストアを作成する場合、次のようになります。ADMINISTER KEY MANAGEMENT CREATE KEYSTORE
'/etc/ORACLE/WALLETS/orcl' IDENTIFIED BY password; keystore altered.この文を実行すると、キーストアとなる
ewallet.p12ファイルがキーストアの場所に生成されます。 -
親トピック: ステップ2: ソフトウェア・キーストアの作成
3.1.3.3 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワードベースのキーストアの別の方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワード保護されたソフトウェア・キーストアから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。
この手順を開始する前に、ステップ1: sqlnet.oraファイルでのキーストアの場所の設定で説明した手順が完了していることを確認します。
-
ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。マルチテナント環境では、rootとしてログインします。たとえば:
sqlplus c##sec_admin as syskm Enter password: password Connected.SQL*Plusがすでに開かれていて、この間に
sqlnet.oraファイルを変更した場合、SQL*Plusに再接続します。データベース・セッションはsqlnet.oraの変更が有効になる前に変更される必要があります。 -
パスワードベースのソフトウェア・キーストアを作成します。
たとえば:
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/etc/ORACLE/WALLETS/orcl' IDENTIFIED BY keystore_password; -
ADMINISTER KEY MANAGEMENTSQL文を実行してキーストアを作成します。構文は次のとおりです。
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.1.4 ステップ3: ソフトウェア・キーストアを開く
作成したキーストアの種類に応じて、使用する前にキーストアを手動で開く必要があります。
- ソフトウェア・キーストアを開くことについて
キーストアにおいてTDEマスター暗号化キーを作成またはアクセスする前に、パスワードベースのソフトウェア・キーストアが開いている必要があります。 - ソフトウェア・キーストアを開く
ソフトウェア・キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。
親トピック: ソフトウェア・キーストアの構成
3.1.4.1 ソフトウェア・キーストアを開くことについて
キーストアにおいてTDEマスター暗号化キーを作成またはアクセスする前に、パスワードベースのソフトウェア・キーストアが開いている必要があります。
ソフトウェア・キーストアは手動で開くか、特定のADMINISTER KEY MANAGEMENT操作を行うときには、操作の最中にキーストアを一時的に開いておくことができます。自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアは手動で開く必要はありません。これらのキーストアは、必要時に(暗号化操作でキーにアクセスする必要がある場合に)自動的に開かれます。必要に応じて、これらのタイプのどのキーストアでも明示的に閉じることができます。キーストアには、開いている、閉じている、開いていてもマスター・キーがない、開いていても不明なマスター・キーがある、定義されていない、または使用できない(つまりsqlnet.oraの場所にない)というステータスがあります。
キーストアが開いているか、開いていないかのステータスは、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて確認できます。
キーストアを開くと、手動で閉じるまでキーストアは開いたままになります。データベース・インスタンスを再起動するたびに、パスワード・キーストアを手動で開いて暗号化と復号化の操作を再有効化する必要があります。
3.1.4.2 ソフトウェア・キーストアを開く
ソフトウェア・キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。
キーストアが開いていても、TDEマスター暗号化キーをまだ作成していない場合は(後で説明します)、V$ENCRYPTION_WALLETビューのSTATUS列によってOPEN_NO_MASTER_KEYステータスが知らされます。
親トピック: ステップ3: ソフトウェア・キーストアを開く
3.1.5 ステップ4: ソフトウェアTDEマスター暗号化キーの設定
キーストアが開いたら、それに対してTDEマスター暗号化キーを設定できます。
- ソフトウェアTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはキーストアに格納されます。 - ソフトウェア・キーストアのTDEマスター暗号化キーの設定
TDEマスター暗号化キーをソフトウェア・キーストアに設定するには、SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。
親トピック: ソフトウェア・キーストアの構成
3.1.5.1 ソフトウェアTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはキーストアに格納されます。
このキーによって、TDE表キーおよび表領域暗号化キーが保護されます。デフォルトでは、TDEマスター暗号化キーは、透過的データ暗号化(TDE)によって生成されるキーです。V$ENCRYPTION_WALLETビューのSTATUS列を問い合せることで、キーストアに、設定されているマスター・キーがないかどうか、または不明なマスター・キーがないかどうかを確認できます。
マルチテナント環境では、rootまたはPDBからTDEマスター暗号化キーを作成および管理できます。
また、後で使用するためにTDEマスター暗号化キーを作成でき、その後それらを手動で有効にできます。
親トピック: ステップ4: ソフトウェアTDEマスター暗号化キーの設定
3.1.5.2 ソフトウェア・キーストアのTDEマスター暗号化キーの設定
TDEマスター暗号化キーをソフトウェア・キーストアに設定するには、SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用する必要があります。
-
パスワード・ソフトウェア・キーストアの場合、ステップ3: ソフトウェア・キーストアを開くに記載されている、キーを開くための手順を完了したことを確認します。
自動ログイン・ソフトウェア・キーまたはローカル自動ログイン・ソフトウェア・キーは、作成された後で自動的に開きます。パスワードベースのソフトウェア・キーストアは、TDEマスター暗号化キーを設定する前に開かれている必要があります。自動ログイン・ソフトウェア・キーストアが開いている場合、それを閉じてパスワードベースのソフトウェア・キーストアを開く必要があります。パスワードベースのキーストアと自動ログイン・キーストアの両方が構成済の場所に存在し、パスワードベースのキーストアが開いている場合、自動ログイン・キーストアにもTDEマスター暗号化キーが自動的に書き込まれます。
-
ADMINISTER KEY MANAGEMENTまたはSYSKM権限が付与されたユーザーとして、データベース・インスタンスにログインします。マルチテナント環境で、rootまたはPDBにログインします。たとえば、PDBとしてログインするには次を実行します。
sqlplus sec_admin@hrpdb as syskm Enter password: password Connected.利用可能なPDBを検索するには、
DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。 -
データベースが
READ WRITEモードでオープンしていることを確認します。OPEN_MODEがREAD WRITEに設定されている場合、TDEマスター暗号化キーを設定できます。マルチテナント環境以外の環境に関するステータスを検索するには、V$DATABASE動的ビューのOPEN_MODE列を問い合せます。マルチテナント環境を使用している場合は、V$PDBSビューを問合せます。(これらのビューにアクセスできない場合は、SYSDBAとして接続し、問合せを再試行します。このタイプの問合せに対してSYSKMとして接続するには、これに対するパスワード・ファイルを作成する必要があります。 -
SYSKM管理権限を使用して接続し、ADMINISTER KEY MANAGEMENTSQL文を実行してソフトウェア管理キーストアを設定します。ADMINISTER KEY MANAGEMENT SET KEY [USING TAG 'tag'] [FORCE KEYSTORE] IDENTIFIED BY [EXTERNAL STORE] | keystore_password [WITH BACKUP [USING 'backup_identifier']] [CONTAINER = ALL | CURRENT];
ここでは次のように指定します。
-
tagは、定義する関連の属性および情報です。この設定は一重引用符(' ')で囲みます。 -
FORCE KEYSTOREは、自動ログイン・キーストアが使用されているか、キーストアが閉じている場合に、キーストア操作を有効にします。 -
IDENTIFIED BYは次のいずれかの設定にできます。-
EXTERNAL STOREは、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。 -
keystore_passwordは、ステップ2: ソフトウェア・キーストアを作成するでキーストア作成時に作成した必須のキーストア・パスワードです。
-
-
WITH BACKUPを使用すると、キーストアのバックアップが作成されます。パスワードベースのキーストアの場合、このオプションを使用する必要があります。オプションでUSING句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' ')で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(たとえば、emp_key_backupがバックアップ識別子になっているewallet_time_stamp_emp_key_backup.p12)。オペレーティング・システムで使用されているファイル命名規則に従ってください。 -
CONTAINERは、マルチテナント環境で使用するために用意されています。このCDBのすべてのPDBでキーを設定するには、ALLを入力し、現在のPDBで設定するには、CURRENTを入力します。
たとえば、パスワードベースのキーストアが開いている場合は次のようになります。
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password WITH BACKUP USING 'emp_key_backup'; keystore altered.自動ログイン・キーストアが開いているか、キーストアが閉じている場合は、次のようになります。
ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY keystore_password WITH BACKUP USING 'emp_key_backup'; keystore altered. -
親トピック: ステップ4: ソフトウェアTDEマスター暗号化キーの設定
3.1.6 ステップ5: データの暗号化
ソフトウェア・キーストアの構成が完了すると、データの暗号化を開始できます。
個別の表の列、あるいは表領域またはデータベース全体のデータを暗号化できます。
親トピック: ソフトウェア・キーストアの構成
3.2 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。
- 外部キーストアの構成について
外部キーストアは、暗号化キー用の安全な保管場所を提供する独立したサーバーまたはデバイスです。 - ステップ1: Oracle Key Vaultの分離PDBの構成
TDE_CONFIGURATIONパラメータを設定することで、Oracle Key Vaultの分離モードPDBを構成できます。 - ステップ2: 外部キーストアを開く
外部キーストアを構成したら、使用する前に開く必要があります。 - ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定
外部キーストアを開くと、最初のTDEマスター暗号化キーを設定できるようになります。 - ステップ4: データの暗号化
外部キーストアの構成が完了したので、データの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.2.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.2.2 ステップ1: Oracle Key Vaultの分離PDBの構成
TDE_CONFIGURATIONパラメータを設定することで、Oracle Key Vaultの分離モードPDBを構成できます。
親トピック: 外部キーストアの構成
3.2.3 ステップ2: 外部キーストアを開く
外部キーストアを構成したら、使用する前に開く必要があります。
- 外部キーストアを開くことについて
暗号化または復号化を実行する前に、データベースにアクセスできるように外部キーストアを開く必要があります。 - 外部キーストアを開く
外部キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用します。
親トピック: 外部キーストアの構成
3.2.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.2.3.2 外部キーストアを開く
外部キーストアを開くには、SET KEYSTORE OPEN句を含むADMINISTER KEY MANAGEMENT文を使用します。
親トピック: ステップ2: 外部キーストアを開く
3.2.4 ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定
外部キーストアを開いたら、最初のTDEマスター暗号化キーを設定できます。
- 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。 - 新しいTDEマスター暗号化キーの設定
透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。 - 前に構成したTDEマスター暗号化キーの移行
ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化キーを移行する必要があります。
親トピック: 外部キーストアの構成
3.2.4.1 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。
TDE用にソフトウェア・キーストアをまだ構成していない場合は、外部キーストアで最初のTDEマスター暗号化キーを設定できます。TDE用にソフトウェア・キーストアをすでに構成してある場合は、外部キーストアを使用するようにデータベースを移行する必要があります。
現在のマスター暗号化キーとともに、Oracleウォレットでは、マスター暗号化キーを更新するキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター・キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。
3.2.4.2 新しいTDEマスター暗号化キーの設定
透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。
3.2.4.3 前に構成したTDEマスター暗号化キーの移行
ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化キーを移行する必要があります。
Oracle Data PumpやOracle Recovery Managerなどのツールでは、ソフトウェア・キーストアを使用してエクスポートまたはバックアップされたデータに対して復号化と暗号化の操作を実行するために、古いソフトウェア・キーストアにアクセスする必要があります。ソフトウェア・パスワード・キーストアと外部キーストアの間の移行の説明に従って、ソフトウェア・キーストアから外部キーストアに移行できます。
現在のTDEマスター・キーとともに、Oracleウォレットでは、TDEマスター・キーをローテーションするキーの更新操作のたびに生成される履歴TDEマスター・キーを保持します。これらのTDEマスター・キーにより、履歴TDEマスター・キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアすることができます。
3.2.5 ステップ4: データの暗号化
外部キーストアの構成が完了したので、データの暗号化を開始できます。
Oracle Key Vaultキーストアの構成方法については、Oracle Key Vault管理者ガイドを参照してください。
表の個別の列または表領域全体を暗号化できます。
親トピック: 外部キーストアの構成
3.3 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。
- 表の列の暗号化について
表の個々の列を暗号化できます。 - TDE列暗号化で暗号化できるデータ型
Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。 - 透過的データ暗号化列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。 - 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。 - 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。 - 暗号化列に対する索引の作成
暗号化された列に対して索引を作成できます。 - 暗号化列へのSaltの追加
Saltは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。 - 暗号化列からのSaltの削除
ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。 - 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更
ALTER TABLESQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。
親トピック: 透過的データ暗号化の構成
3.3.1 表の列の暗号化について
表の個々の列を暗号化できます。
個々の列または表領域全体のどちらを暗号化するかは、表のデータ型によって決まります。また、TDE列暗号化をサポートしていない機能もいくつかあります。
親トピック: 表の列の暗号化
3.3.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(レガシーまたは拡張)
暗号化列のサイズが列のデータ型で許容されるサイズより大きい場合は、列を暗号化できません。
表3-1に、各種データ型の最大許容サイズを示します。
表3-1 各データ型の最大許容サイズ
| データ型 | 最大サイズ |
|---|---|
|
|
1932バイト |
|
|
3932バイト |
|
|
32,699バイト |
|
|
1966バイト |
|
|
16,315バイト |
|
|
966バイト |
|
|
32,699バイト |
ノート:
TDE表領域暗号化には、これらのデータ型制限はありません。
親トピック: 表の列の暗号化
3.3.3 透過的データ暗号化列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。
TDE列暗号化は、次のデータベース機能と併用しないでください。
-
Bツリー以外の索引タイプ
-
索引内のレンジ・スキャン検索
-
同期チェンジ・データ・キャプチャ
-
トランスポータブル表領域
-
ID列として作成された列
また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。
サポートされていないこれらの機能を使用する必要があるアプリケーションは、DBMS_CRYPTO PL/SQLパッケージを使用して暗号化を実行できます。
透過的データ暗号化は、ディスクまたは他のメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、Oracle Databaseセキュリティ・ガイドに記載されているネットワーク暗号化ソリューションを使用します。
親トピック: 表の列の暗号化
3.3.4 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。
- 暗号化列を含む表の作成について
CREATE TABLESQL文を使用して、暗号化列を持つ表を作成できます。 - デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
TDEでは、192ビットのキーの長さを使用するAES暗号化アルゴリズム(AES192)がデフォルトで使用されます。 - アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
CREATE TABLESQL文を使用して、暗号化列を持つ表を作成します。 - NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。 - 例: CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。 - 例: 表の整合性アルゴリズムの変更
ALTER TABLE SQL文を使用して、データベース表の整合性アルゴリズムを変更できます。 - 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
親トピック: 表の列の暗号化
3.3.4.1 暗号化列を含む表の作成について
CREATE TABLE SQL文を使用して、暗号化列を持つ表を作成できます。
暗号化列を含むリレーショナル表を作成するには、CREATE TABLE SQL文でデータベース列を定義するときにSQL ENCRYPT句を指定します。
親トピック: 暗号化列を含む表の作成
3.3.4.2 デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
TDEでは、192ビット長のキーを使用するAES暗号化アルゴリズム(AES192)がデフォルトで使用されます。
アルゴリズムを指定しないで表の列を暗号化すると、その列はAES192アルゴリズムを使用して暗号化されます。
暗号化の前にTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。また、TDEにより整合性をチェックするために、データにメッセージ認証コード(MAC)が追加されます。デフォルトでは、SHA-1整合性アルゴリズムが使用されます。
-
列を暗号化する表を作成するには、
ENCRYPT句を含むCREATE TABLESQL文を使用します。たとえば、デフォルト・アルゴリズムを使用して表の列を暗号化するには、次のようにします。
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.3.4.3 アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
CREATE TABLE SQL文を使用して、暗号化列を持つ表を作成します。
暗号化の前に、デフォルトでTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。ただし、暗号化列を索引付けする場合、NO SALTパラメータを使用する必要があります。
-
デフォルト以外のアルゴリズムの暗号化列、またはアルゴリズムなしの暗号化列を使用する表を作成するには、次のように
CREATE TABLESQL文を実行します。-
アルゴリズムを使用しない場合は、
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.3.4.4 NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。
表の行および暗号化列の数が多い場合、TDEチェックをバイパスすることで、かなりの量のディスク領域になることがあります。さらに、処理サイクルが節約され、TDEに関連するパフォーマンス・オーバーヘッドが減少します。
TDEでは、デフォルトでSHA-1整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1アルゴリズムを使用している場合は、NOMACパラメータによって同じ表の別の列を暗号化することはできません。
-
暗号化および復号化操作での整合性チェックをバイパスするには、
CREATE TABLE文およびALTER TABLE文でNOMACパラメータを使用します。
親トピック: 暗号化列を含む表の作成
3.3.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.3.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.3.4.7 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
外部表は、ORACLE_DATAPUMPアクセス・ドライバを使用して更新できます。
-
外部表の特定の列を暗号化するには、列を定義するときに
ENCRYPT句を使用します。列は、システム生成キーによって暗号化されます。たとえば、次の
CREATE TABLESQL文は、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.3.5 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。
- 既存の表にある列の暗号化について
ALTER TABLESQL文では、既存の表にある列を暗号化できます。 - 既存の表への暗号化列の追加
既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALTを使用して列を索引付けすることができます。 - 暗号化されていない列の暗号化
ALTER TABLE MODIFY文を使用して、既存の暗号化されていない列を暗号化できます。 - 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
親トピック: 表の列の暗号化
3.3.5.1 既存の表にある列の暗号化について
ALTER TABLE SQL文では、既存の表にある列を暗号化できます。
既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ADD句またはMODIFY句を含むALTER TABLE SQL文を使用します。
親トピック: 既存の表にある列の暗号化
3.3.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.3.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.3.5.4 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
-
列の暗号化を無効にするには、
ALTER TABLE MODIFYコマンドを使用し、DECRYPT句を指定します。
例3-5では、employee表のfirst_name列を復号化しています。
例3-5 列の暗号化の無効化
ALTER TABLE employee MODIFY (first_name DECRYPT);親トピック: 既存の表にある列の暗号化
3.3.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.3.7 暗号化列へのSaltの追加
ソルトは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。
Saltにより、同じ平文データが常に同じ暗号化テキストに変換されることがなくなります。saltを追加すると、侵入者がデータを盗むために使用する一般的な方法の1つである暗号化テキストのパターン一致を排除できます。saltを追加するには、暗号化されたデータ値ごとに16バイトの追加記憶域が必要です。
-
暗号化列に対してsaltを追加または削除するには、
ALTER TABLE MODIFYSQL文を使用します。
たとえば、saltを使用してfirst_name列を暗号化するとします。first_name列が以前にsaltなしで暗号化されていた場合は、ALTER TABLE MODIFY文によって、saltを使用して列が再暗号化されます。
ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);
親トピック: 表の列の暗号化
3.3.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.3.9 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更
ALTER TABLE SQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。
各表では、その列に1つのTDE表キーのみ指定できます。TDE表キーはALTER TABLE文を使用して再生成できます。このプロセスでは、新しいキーを生成し、以前のキーを使用して表のデータを復号化し、新しいキーを使用してデータを再暗号化し、表のメタデータを新しいキー情報で更新します。新しいTDE表キーに対して別の暗号化アルゴリズムを使用することもできます。
-
暗号化列を含む表の暗号化キーまたはアルゴリズムを変更するには、
ALTER TABLESQL文でREKEYまたはREKEY USING句を使用します。
たとえば:
ALTER TABLE employee REKEY;
例3-7では、3DES168アルゴリズムを使用してemployee表に対するTDE表キーを再生成しています。
例3-7 暗号化された表の列の暗号化キーおよびアルゴリズムの変更
ALTER TABLE employee REKEY USING '3DES168';
親トピック: 表の列の暗号化
3.4 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。
- 表領域およびデータベースの暗号化変換について
CREATE TABLESPACESQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACEによって、既存の表領域を暗号化できます。 - 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。 - 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。 - 表領域暗号化のデフォルト・アルゴリズムの設定
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHMは、特定の暗号化シナリオに適用されます。 - 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。 - 既存のオフライン表領域の暗号化変換
ALTER TABLESPACESQL文のOFFLINE、ENCRYPTおよびDECRYPT句を使用して、オフライン暗号化変換を実行できます。 - 既存のオンライン表領域の暗号化変換
ALTER TABLESPACESQL文をOFFLINEおよびENCRYPTまたはDECRYPT句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。 - 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
親トピック: 透過的データ暗号化の構成
3.4.1 表領域およびデータベースの暗号化変換について
CREATE TABLESPACE SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACEによって、既存の表領域を暗号化できます。
新規または既存の表領域の暗号化に加えて、全データベースを暗号化できます。その場合、Oracle提供のSYS、SYSAUX、TEMPおよびUNDO表領域も暗号化されます。全データベースを暗号化するには、ALTER DATABASEではなく、ALTER TABLESPACEを使用してOracle提供の表領域を暗号化します。
次の表で、表領域およびデータベースのオフラインとオンラインの暗号化変換の違いを比較します。
表3-2 オフラインとオンラインの表領域およびデータベースの暗号化変換
| 機能 | オフライン変換 | オンライン変換 |
|---|---|---|
|
最小の変換機能があるリリース |
Oracle Database 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.4.2 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。
次の制約に注意してください:
-
透過的データ暗号化(TDE)表領域暗号化では、SQLレイヤーでデータを暗号化および復号化するTDE列暗号化とは対照的に、読取りおよび書込み操作時にデータを暗号化または復号化します。このことは、データ型制限や索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。
-
インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。
-
SYSTEM、SYSAUX、TEMPまたはUNDO表領域を暗号化する場合は、後でALTER TABLESPACESQL文を使用して表領域を復号化する場合であっても、キーストアを手動で閉じないでください。
3.4.3 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。
- ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE初期化パラメータを設定する必要があります。 - ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。 - ステップ3: 暗号化された表領域の作成
COMPATIBLE初期化パラメータを設定したら、暗号化された表領域の作成の準備は完了です。
親トピック: 表領域およびデータベースの暗号化変換
3.4.3.1 ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE初期化パラメータを設定する必要があります。
- 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
最小のCOMPATIBLE初期化パラメータ設定である11.2.0.0では、表領域暗号化機能の完全なセットが有効になります。 - 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
COMPATIBLE初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
親トピック: 暗号化された新しい表領域の作成
3.4.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.4.3.1.2 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定
COMPATIBLE初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
-
データベース・インスタンスにログインします。
マルチテナント環境の場合、PDBにログインします。たとえば:
sqlplus sec_admin@hrpdb Enter password: password Connected.利用可能なPDBを検索するには、
DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。 -
COMPATIBLEパラメータの現在の設定を確認します。たとえば:
SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 11.2.0.0 noncdbcompatible BOOLEAN FALSE
-
COMPATIBLEパラメータを変更する必要がある場合、この手順の残りのステップを実行します。値は、11.2.0.0以上である必要があります。
-
コマンドラインから、データベース・インスタンスの初期化パラメータ・ファイルを特定します。
-
UNIXシステム: このファイルは、
ORACLE_HOME/dbsディレクトリにあり、initORACLE_SID.ora(initmydb.oraなど)という名前です。 -
Windowsシステム: このファイルは、
ORACLE_HOME\databaseディレクトリにあり、initORACLE_SID.ora(initmydb.oraなど)という名前です。
-
-
初期化パラメータ・ファイルを新しい
COMPATIBLE設定を使用するよう編集します。たとえば:
compatible=12.2.0.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.4.3.2 ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。
-
次のようにTDEマスター暗号化キーを設定します。
-
ソフトウェアTDEマスター暗号化キーの場合は、ステップ4: ソフトウェアTDEマスター暗号化キーの設定を参照してください。
-
ハードウェアTDEマスター暗号化キーの場合は、ステップ3: 外部キーストアでの最初のTDEマスター暗号化キーの設定を参照してください。
-
親トピック: 暗号化された新しい表領域の作成
3.4.3.3 ステップ3: 暗号化された表領域の作成
COMPATIBLE初期化パラメータを設定したら、暗号化された表領域の作成は完了です。
- 暗号化された表領域の作成について
暗号化された表領域を作成するには、CREATE TABLESPACESQL文を使用します。 - 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING句を含むCREATE TABLESPACE文を使用する必要があります。 - 例: AES192を使用する暗号化された表領域の作成
CREATE TABLESPACESQL文を使用して、暗号化された表領域を作成できます。 - 例: デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACESQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。
親トピック: 暗号化された新しい表領域の作成
3.4.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.4.3.3.2 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING句を含むCREATE TABLESPACE文を使用する必要があります。
-
CREATE TABLESPACEシステム権限が付与されたユーザーとして、データベース・インスタンスにログインします。マルチテナント環境の場合、PDBにログインします。たとえば:
sqlplus sec_admin@hrpdb as syskm Enter password: password Connected.利用可能なPDBを検索するには、
DBA_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.4.3.3.3 例: AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE SQL文を使用して、暗号化された表領域を作成できます。
例3-8では、3DESアルゴリズムを使用して暗号化された、securespace_1という表領域を作成します。キー長は168ビットです。
例3-8 AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE securespace_1 DATAFILE '/home/user/oradata/secure01.dbf' SIZE 150M ENCRYPTION USING 'AES192' ENCRYPT;
親トピック: ステップ3: 暗号化された表領域の作成
3.4.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.4.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.4.5 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。
- 将来の表領域の暗号化について
ENCRYPT_NEW_TABLESPACES動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。 - 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACESデータベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
親トピック: 表領域およびデータベースの暗号化変換
3.4.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を複製またはリストアするオプションがあります。 -
この場合、オンプレミス・スタンバイ・データベースにAdvanced Securityライセンス(透過的データ暗号化およびデータ・リダクションを含む)が必要か、スタンバイ・データベースを使用できません。新しい表領域が透過的に暗号化された場合、このリストの最初の項目に対して同様のシナリオが発生することがあります。たとえば、Advanced Security Option (ASO)ライセンスを持っておらず、自動的に暗号化された表領域がOracle Cloudにあるとします。オンプレミスのスタンバイ・データベースも自動的に暗号化されます。この場合、オンプレミス・スタンバイ・データベースにAdvanced Securityライセンス(透過的データ暗号化およびデータ・リダクションを含む)が必要か、スタンバイ・データベースを使用できません。
親トピック: 将来の表領域の暗号化
3.4.5.2 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACESデータベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
親トピック: 将来の表領域の暗号化
3.4.6 既存のオフライン表領域の暗号化変換
ALTER TABLESPACE SQL文のOFFLINE、ENCRYPTおよびDECRYPT句を使用して、オフライン暗号化変換を実行できます。
- 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。 - オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACESQL文をOFFLINE句およびENCRYPT句とともに使用できます。 - オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACESQL文をOFFLINE句およびDECRYPT句とともに使用できます。
親トピック: 表領域およびデータベースの暗号化変換
3.4.6.1 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。
このオフラインの暗号化方法は、データベースの互換性をOracle Database 11gリリース2 (11.2)またはOracle Database 12cリリース1 (12.1)からリリース12.2に変更することを計画していない場合に使用します(元に戻すことはできません)。オフラインの暗号化方法は、このデータベースをリリース12.2にアップグレードする前に、透過的データ暗号化を簡単に利用する場合にも便利です。オフライン表領域は、暗号化と復号化の両方を行うことができます。
次の点に注意してください。
-
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.4.6.2 オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE SQL文をOFFLINE句およびENCRYPT句とともに使用できます。
SYSTEMおよびUNDOは、オフラインにできません。表領域をオフラインで暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。
関連項目
親トピック: 既存のオフライン表領域の暗号化変換
3.4.6.3 オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE SQL文をOFFLINE句およびDECRYPT句とともに使用できます。
関連項目
親トピック: 既存のオフライン表領域の暗号化変換
3.4.7 既存のオンライン表領域の暗号化変換
ALTER TABLESPACE SQL文をOFFLINEおよびENCRYPTまたはDECRYPT句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。
- 既存のオンライン表領域の暗号化変換について
既存のユーザー表領域、SYSTEM、SYSAUXおよびUNDO表領域がオンラインのとき、これらを暗号化、復号化またはキー更新できます。 - オンライン変換での既存の表領域の暗号化
オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACEをONLINEおよびENCRYPT句とともに使用します。 - オンライン変換での既存の表領域のキー更新
オンラインの既存の表領域をキー更新するには、ALTER TABLESPACESQL文のREKEY句を使用できます。 - オンライン変換での既存の表領域の復号化
既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACESQL文をDECRYPT句とともに使用できます。 - 中断されたオンライン暗号化変換の終了
オンライン暗号化プロセスが中断された場合は、FINISH句を使用してALTER TABLESPACE文を再実行することで、変換を完了できます。
親トピック: 表領域およびデータベースの暗号化変換
3.4.7.1 既存のオンライン表領域の暗号化変換について
既存のユーザー表領域、SYSTEM、SYSAUXおよびUNDO表領域がオンラインのとき、これらを暗号化、復号化またはキー更新できます。
ただし、一時表領域をオンラインで暗号化、復号化またはキー更新することはできません。
オンラインの表領域は、CREATE TABLESPACE SQL文のONLINE句を使用して作成できます。表領域をオンラインで暗号化またはキー更新すると、表領域は固有の暗号化キーおよびアルゴリズムを持つことになります。
次の点に注意してください。
-
オフライン表領域が暗号化されている場合、オンラインでキー更新して別のアルゴリズムを使用できます。
-
異なる表領域を暗号化するために、複数のフォアグラウンド・セッションを使用して、複数の表領域をオンラインで並列して暗号化できます。各表領域内では、データ・ファイルは順に暗号化されます。
-
変換が中断された場合、
ALTER TABLESPACESQL文のFINISH句を発行してプロセスを再開できます。 -
各オンライン表領域変換に対してREDOログが生成されます。
-
表領域
SYSTEMおよびUNDOは、他の表領域と同時に暗号化しないでください。 -
表領域を暗号化している間は、Oracle Data Pumpでトランスポータブル表領域機能を使用できません。
-
ALTER TABLESPACE文は、次の機能と同時に実行することはできません。-
ADMINISTER KEY MANAGEMENT SET KEYSQL文 -
FLASHBACK DATABASESQL文
-
-
データ・ファイルに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.4.7.2 オンライン変換での既存の表領域の暗号化
オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACEをONLINEおよびENCRYPT句とともに使用します。
V$ENCRYPTED_TABLESPACES動的ビューのSTATUS列を問い合せて、暗号化ステータスを確認できます。このビューのENCRYPTIONALG列には、使用されている暗号化アルゴリズムが示されます。変換プロセスが中断された場合、ALTER TABLESPACEをFINISH句とともに実行してプロセスを再開できます。たとえば、プライマリ・データ・ファイルが変換され、スタンバイ・データ・ファイルは変換されなかった場合、スタンバイ・データ・ファイルのスタンバイ・データベースでALTER TABLESPACE ... FINISHを実行できます。
3.4.7.3 オンライン変換での既存の表領域のキー更新
オンラインの既存の表領域をキー更新するには、ALTER TABLESPACE SQL文のREKEY句を使用できます。
-
TEMP表領域をキー更新することはできません。TEMP表領域に異なる暗号化アルゴリズムを割り当てる場合には、TEMPを削除して、正しい暗号化アルゴリズムで再作成します。 -
オンライン表領域のキー更新操作とマスター・キーの操作を同時に実行しないでください。いずれかの表領域が現在キー更新中かどうかを確認するには、次の問合せを発行して、暗号化された表領域のキー更新ステータスを確認します。
SELECT TS#,ENCRYPTIONALG,STATUS FROM V$ENCRYPTED_TABLESPACES;
REKEYINGというステータスは、対応する表領域がまだキー更新中であることを意味します。このステータスが適用される間は、マスター・キーをキー更新しないでください。
オンライン変換を使用して既存の表領域をキー更新するには:
ALTER TABLESPACEをFINISH句とともに実行してプロセスを再開できます。
3.4.7.4 オンライン変換での既存の表領域の復号化
既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACE SQL文をDECRYPT句とともに使用できます。
ALTER TABLESPACEをFINISH句とともに実行してプロセスを再開できます。
親トピック: 既存のオンライン表領域の暗号化変換
3.4.7.5 中断されたオンライン暗号化変換の終了
オンライン暗号化プロセスが中断された場合は、FINISH句を使用してALTER TABLESPACE文を再実行することで、変換を完了できます。
ALTER TABLESPACE SQL文のFILE_NAME_CONVERT句でのORA-28425: missing a valid FILE_NAME_CONVERT clauseエラーなどの可能性があります。中断されたプロセスの他の例としては、変換でデータ・ファイルをスキップした場合(Oracleデータベース・ライター(DBWR)プロセスがデータ・ファイルをオフラインにしたときにエラーがあった場合に発生する可能性がある)や、補助ファイルのための十分な領域がない場合などがあります。ALTER TABLESPACE文をFINISH句を指定して再実行しない場合であっても、表領域は操作可能である必要があります。
親トピック: 既存のオンライン表領域の暗号化変換
3.4.8 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
- 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM、SYSAUX、UNDOおよびTEMP表領域を含むすべての表領域が暗号化されます。 - オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。 - オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
親トピック: 表領域およびデータベースの暗号化変換
3.4.8.1 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM、SYSAUX、UNDOおよび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列を問い合せて、確認できます。
親トピック: 既存のデータベースの暗号化変換
3.4.8.2 オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
表領域の暗号化アルゴリズムを変更する場合には、「表領域のTDEマスター暗号化キーのローテーション」を参照してください。
親トピック: 既存のデータベースの暗号化変換
3.4.8.3 オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
ALTER TABLESPACE ENCRYPTION REKEY SQL文を発行できます。
親トピック: 既存のデータベースの暗号化変換
3.5 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
表3-3に、これらの動的ビューおよびデータ・ディクショナリ・ビューを示します。
表3-3 透過的データ暗号化の関連ビュー
| ビュー | 説明 |
|---|---|
|
|
現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。 |
|
|
データベースにあるすべての暗号化列の暗号化情報が表示されます。 |
|
|
現在のユーザーのスキーマにある暗号化された表の列の暗号化情報が表示されます。 |
|
|
永続、一時、およびUNDO表領域を含むすべてのタイプの表領域についての表領域使用状況メトリックを示します |
|
|
様々な機能(クライアント)用のキーストアに格納された文字列(シークレット)のプロパティが一覧表示されます。 マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
|
現在のデータベースに使用されているデフォルトの暗号化キーについての情報を表示します。デフォルトは |
|
|
暗号化された表領域に関する情報が表示されます。 |
|
|
マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
|
TDEのキーストアのステータスおよびキーストアの場所に関する情報が表示されます。 |
|
|
現在のPDBでサポートされている暗号化アルゴリズムを表示し、Oracle Recovery Manager (Oracle RMAN)によってユーザー要求アルゴリズムを検証するために使用されます |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。
親トピック: 透過的データ暗号化の構成