第3章 透過的データ暗号化の構成
ソフトウェア・キーストアおよび外部キーストアを、個々の表列や表領域全体での使用のために構成できます。
- 透過的データ暗号化の構成について
透過的データ暗号化を構成するには、キーストアを作成しデータを暗号化する前に、設定を1回のみ実行する必要があります。 - 透過的データ暗号化のキーストア検索順序
TDEキーストアの検索順序は、インスタンスの初期化パラメータ、sqlnet.ora
のパラメータまたは環境変数の設定によって異なります。 - TDEウォレットの構成
TDEウォレットとは、ソフトウェア・ファイル・システム内にあるマスター暗号化キーのコンテナのことです。 - 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。 - 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。 - 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。 - 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
親トピック: 透過的データ暗号化の使用
3.1 透過的データ暗号化の構成について
透過的データ暗号化を構成するには、キーストアを作成しデータを暗号化する前に、1回かぎりの設定を実行する必要があります。
データの暗号化を開始する前に、使用する予定のキーストアの場所とタイプを指定するために、静的なWALLET_ROOT
パラメータと動的なTDE_CONFIGURATION
パラメータを使用して1回かぎりの構成を実行する必要があります。
WALLET_ROOT
パラメータは、多数の異なるソフトウェア・キーストア(TDE、Oracle Enterprise User Security (EUS)、TLSなど)の最上位ディレクトリを指定します。TDEの場合、自動検出のディレクトリはWALLET_ROOT/tde
です。
TDE_CONFIGURATION
パラメータは、キーストアのタイプ(ソフトウェア・キーストアまたはOracle Key Vault)を指定します。TDE_CONFIGURATION
を使用してキーストアのタイプを設定した後で、キーストアを作成すると、Oracle Databaseはキーストア・タイプのWALLET_ROOT
の場所内にディレクトリを作成します。たとえば、TDE_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
列は、統一モードまたは分離モードが構成されているかどうかを示します。データベースのデフォルト暗号化アルゴリズムをAES128から変更する場合、パッチ30398099を適用した後、次の文を実行して動的初期化パラメータを設定できます。
ALTER SYSTEM SET "_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM" = 'AES256' SCOPE = BOTH SID = '*';
ノート:
以前のリリースでは、キーストア・ディレクトリの場所を定義するためにSQLNET.ENCRYPTION_WALLET_LOCATION
パラメータが使用されていました。このパラメータは現在非推奨になっています。かわりに、WALLET_ROOT
静的初期化パラメータおよびTDE_CONFIGURATION
動的初期化パラメータを使用することをお薦めします。
関連項目
親トピック: 透過的データ暗号化の構成
3.2 透過的データ暗号化のキーストア検索順序
TDEキーストアの検索順序は、インスタンスの初期化パラメータ、sqlnet.ora
のパラメータまたは環境変数の設定によって異なります。
Oracle Databaseは、次の場所を次の順序で検索して、キーストアを取得します。
-
TDE_CONFIGURATION
初期化パラメータのKEYSTORE_CONFIGURATION
属性がFILE
に設定されている場合、インスタンスのWALLET_ROOT
初期化パラメータによって設定される場所。このパラメータを使用してキーストアの場所を構成することをお薦めします。 -
TDE_CONFIGURATION
初期化パラメータのKEYSTORE_CONFIGURATION
属性がFILE
に設定されていないか、WALLET_ROOT
が設定されていない場合は、sqlnet.ora
ファイルのWALLET_LOCATION
設定で指定された場所。(このファイルには複数のWALLET_LOCATION
設定を指定できません。) -
WALLET_ROOT
およびWALLET_LOCATION
が設定されていない場合は、sqlnet.ora
ファイルのENCRYPTION_WALLET_LOCATION
パラメータ(WALLET_ROOT
が優先されて非推奨になりました)で指定された場所。 -
これらのパラメータが設定されておらず、
ORACLE_BASE
環境変数が設定されている場合は、$ORACLE_BASE/admin/db_unique_name/wallet
ディレクトリ。ORACLE_BASE
が設定されていない場合は、$ORACLE_HOME/admin/db_unique_name/wallet
。
親トピック: 透過的データ暗号化の構成
3.3 TDEウォレットの構成
TDEウォレットとは、ソフトウェア・ファイル・システム内にあるマスター暗号化キーのコンテナのことです。
- TDEウォレットの構成について
ソフトウェア・キーストアとは、TDEマスター暗号化キーを格納するコンテナのことです。 - ステップ1: TDEウォレットの場所とタイプの構成
TDEウォレットの場所とタイプを構成するには、init.ora
でWALLET_ROOT
を設定し、データベース・インスタンスでTDE_CONFIGURATION
を設定する必要があります。 - ステップ2: TDEウォレットの作成
TDEウォレットは、ソフトウェア・キーストアにディレクトリの場所を指定した後で作成できます。 - ステップ3: TDEウォレットのオープン
作成したキーストアのタイプによっては、使用前にTDEウォレットを手動で開くことが必要になります。 - ステップ4: TDEウォレットでのTDEマスター暗号化キーの設定
TDEウォレットが開かれると、それに対するTDEマスター暗号化キーを設定できます。 - ステップ5: データの暗号化
構成が完了した時点で、PDB内のデータの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.3.1 TDEウォレットの構成について
ソフトウェア・キーストアとは、TDEマスター暗号化キーを格納するコンテナです。
TDEウォレットの構成前に、まず、静的初期化パラメータWALLET_ROOT
を設定して、そのウォレットの場所を定義する必要があります。その後でデータベースを再起動して、データベースにマスター暗号化キーの取得元を指示する動的初期化パラメータTDE_CONFIGURATION
を設定する必要があります。この設定は、キーの取得元になるTDEウォレット、Oracle Key VaultまたはOracle Cloud Interface (OCI)キー管理サービス(KMS)のドキュメントに従います。データベースは、最初にWALLET_ROOT
設定をチェックして、このTDEウォレットを探します。この設定が作成されていない場合、データベースは、sqlnet.ora
ファイルをチェックします。別のTDEウォレット(そのウォレットのコピーなど)を作成して、キーが含まれているファイルを必要に応じてエクスポートすることもできます。WALLET_ROOT
の場所に構成したTDEウォレットの削除が必要な場合は、すべてのTDEウォレット(バックアップと自動ログイン・ウォレットを含む)を古い場所から新しい場所にコピーした後でのみ削除してください。その後で、新しいTDEウォレットの場所を指すようにWALLET_ROOT
を再設定する必要があります。
WALLET_ROOT
パラメータとTDE_CONFIGURATION
パラメータを使用してTDEウォレットの場所を構成すると、CDBにログインしてキーストアを作成して開き、TDEマスター暗号化キーを設定できるようになります。これらのステップを完了したら、データの暗号化を開始できます。
親トピック: TDEウォレットの構成
3.3.2 ステップ1: TDEウォレットの場所とタイプの構成
TDEウォレットの場所とタイプを構成するには、init.ora
でWALLET_ROOT
を設定し、データベース・インスタンスでTDE_CONFIGURATION
を設定する必要があります。
親トピック: TDEウォレットの構成
3.3.3 ステップ2: TDEウォレットの作成
ソフトウェア・キーストアのディレクトリの場所を指定すると、TDEウォレットを作成できるようになります。
- TDEウォレットの作成について
TDEウォレットには異なる3つのタイプがあります。 - パスワード保護されたソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。 - 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
親トピック: TDEウォレットの構成
3.3.3.1 TDEウォレットの作成について
TDEウォレットには異なる3つのタイプがあります。
パスワードで保護されたTDEウォレット、自動ログインTDEウォレットおよびローカル自動ログインTDEウォレットを作成できます。
問合せSELECT * FROM V$ENCRYPTION_WALLET
を実行すると、自動ログインTDEウォレットが自動的に開かれることに注意してください。たとえば、パスワードで保護されたTDEウォレットと、自動ログインTDEウォレットがあるとします。パスワードで保護されたTDEウォレットが開いているときに、そのパスワードで保護されたTDEウォレットを閉じてからV$ENCRYPTION_WALLET
ビューを問い合せると、TDEウォレットは開いていると出力に示されます。ただし、これはV$ENCRYPTION_WALLET
が自動ログインTDEウォレットを開いて、その自動ログイン・ウォレットのステータスを表示したためです。
関連項目
親トピック: ステップ2: TDEウォレットの作成
3.3.3.2 パスワード保護されたソフトウェア・キーストアの作成
パスワード保護されたソフトウェア・キーストアには、TDEマスター・キーを保護するために使用するパスワードが必要です。
ADMINISTER KEY MANAGEMENT
文を使用します。
親トピック: ステップ2: TDEウォレットの作成
3.3.3.3 自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアの作成
パスワード保護されたキーストアに代わる方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワード保護されたソフトウェア・キーストアから作成されます。これらのいずれを作成しても、データベースの停止時間は不要です。
-
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。WALLET_ROOT
が設定され、TDE_CONFIGURATION
がKEYSTORE_CONFIGURATION=FILE
に設定されていることを確認します。 -
次の構文を使用して、自動ログイン・キーストアまたはローカル自動ログイン・キーストアを作成します。
ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY software_keystore_password;
ここでは次のように指定します。
-
LOCAL
では、ローカル自動ログイン・ソフトウェア・キーストアを作成できます。そうでない場合、キーストアに他のコンピュータからアクセスできるようにするときは、この句を省略します。LOCAL
を指定すると、ローカル自動ログイン・ウォレット・ファイルcwallet.sso
が作成され、このウォレットはそれが作成されたホストに関連付けられます。Oracle Real Application Clusters (Oracle RAC)環境の場合は、Oracle RACノードごとにホスト名が異なるため、LOCAL
キーワードを省略します。Oracle RACインスタンスのローカル自動ログイン・ウォレットを構成した場合は、cwallet.sso
ファイルが作成された最初のOracle RACノードのみ、ソフトウェア・キーストアにアクセス可能になります。最初のノードからではなく別のノードからキーストアを開こうとすると、cwallet.sso
が自動的に開かれるという問題が発生するため、ソフトウェア・キーストアを自動で開くことができなくなります。この制限事項が当てはまるのは、Oracle RACクラスタのcwallet.sso
ファイルの保持に共有の場所を使用している場合です。これは、LOCAL
の使用が有効なのは、Oracle RAC環境の各ノードに別個のcwallet.sso
ファイル(同じ資格証明を含む)がある場合のみであるためです。 -
software_keystore_password
は、作成元のキーストアのパスワードです。
たとえば、パスワード保護されたキーストアの自動ログイン・ソフトウェア・キーストアを
/etc/ORACLE/WALLETS/tde
ディレクトリに作成するには、次のようにします。ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY password; keystore altered.
この文を実行した後、
cwallet.sso
ファイルがキーストアの場所に表示されます。ewallet.p12
ファイルがパスワード保護されたウォレットです。 -
次のガイドラインに従ってください。
- 自動ログイン・キーストア(
.sso
ファイル)の作成後は、PKCS#12
ウォレット(ewallet.p12
ファイル)は削除しないでください。将来、TDEマスター暗号化キーを再生成またはキー更新するには、PKCS#12
ウォレットが必要です。 - 透過的データ暗号化は、自動ログイン・キーストアが正しい場所(
WALLET_ROOT/tde
)、ENCRYPTION_WALLET_LOCATION
またはデフォルトのキーストアの場所)にあり、暗号化されたキーストアを開くSQL文がまだ実行されていない場合にのみ、自動ログイン・キーストアを使用する点に注意してください。ENCRYPTION_WALLET_LOCATION
パラメータが設定されている場合、このパラメータは非推奨となったことに注意してください。かわりに、WALLET_ROOT
静的初期化パラメータおよびTDE_CONFIGURATION
動的初期化パラメータを使用することをお薦めします。
親トピック: ステップ2: TDEウォレットの作成
3.3.4 ステップ3: TDEウォレットのオープン
作成したキーストアのタイプによっては、使用前にTDEウォレットを手動で開くことが必要になります。
- TDEウォレットのオープンについて
パスワードで保護されたTDEウォレットは、そのTDEウォレット内でのTDEマスター暗号化キーの作成やアクセスが可能になるように開いておく必要があります。 - TDEウォレットのオープン
TDEウォレットを開くには、ADMINISTER KEY MANAGEMENT
文をSET KEYSTORE OPEN
句とともに使用する必要があります。
親トピック: TDEウォレットの構成
3.3.4.1 TDEウォレットのオープンについて
パスワードで保護されたTDEウォレットは、そのTDEウォレット内でのTDEマスター暗号化キーの作成やアクセスが可能になるように開いておく必要があります。
透過的データ暗号化の多くの操作は、TDEウォレットが開いていることを必要とします。TDEウォレットは、次の2つの方法で開くことができます:
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、TDEウォレットを手動で開きます。その後、操作を実行できます。 -
操作を実行するために使用される
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は、操作の間にTDEウォレットを一時的に開きます。その操作が完了すると、TDEウォレットは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログインTDEウォレットは閉じられた直後に、ユーザーがパスワードベースのTDEウォレットを開く機会を得る前に続けて開かれます。
TDEウォレットのステータスには、開いている、閉じている、開いていてもマスター暗号化キーがない、開いていても不明なマスター暗号化キーがある、定義されていない、または使用できない(つまりWALLET_ROOT/tde
の場所にない)というものがあります。
手動でTDEウォレットを開くと、そのウォレットは手動で閉じるまで開いたままになります。データベース・インスタンスを再起動するたびに、暗号化と復号化の操作を再有効化するために手動でパスワードTDEウォレットを開く必要があります。
TDEウォレットが開いているかどうかのステータスは、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せると確認できます。
3.3.4.2 TDEウォレットのオープン
TDEウォレットを開くには、ADMINISTER KEY MANAGEMENT
文をSET KEYSTORE OPEN
句とともに使用する必要があります。
TDEウォレットが開いていても、まだTDEマスター暗号化キーを作成していない場合は、V$ENCRYPTION_WALLET
ビューのSTATUS
列のステータスがOPEN_NO_MASTER_KEY
になっていることでわかります。
親トピック: ステップ3: TDEウォレットのオープン
3.3.5 ステップ4: TDEウォレットでのTDEマスター暗号化キーの設定
TDEウォレットを開くと、そのウォレットに対するTDEマスター暗号化キーを設定できるようになります。
- TDEウォレットTDEマスター暗号化キーの設定について
TDEマスター暗号化キーは、TDEウォレットに格納されます。 - TDEウォレット内のTDEマスター暗号化キーの設定
TDEウォレット内にTDEマスター暗号化キーを設定するには、ADMINISTER KEY MANAGEMENT
文とともにSET KEY
句を使用する必要があります。
親トピック: TDEウォレットの構成
3.3.5.1 TDEウォレットTDEマスター暗号化キーの設定について
TDEマスター暗号化キーはTDEウォレットに格納されます。
TDEマスター暗号化キーでは、TDE表キーと表領域暗号化キーを保護します。デフォルトでは、TDEマスター暗号化キーは、TDEによって生成されるキーです。V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、TDEウォレットにTDEマスター暗号化キーが設定されていないかどうか、または不明なTDEマスター暗号化キーがあるかどうかを確認できます。
データベースの外部で作成されたマスター暗号化キーをTDEウォレットにインポートできます(独自のキー持込み(BYOK))。すぐに使用するためのキーを設定することも(ADMINISTER KEY MANAGEMENT SET
を使用)、後で使用する(ADMINISTER KEY MANAGEMENT USE KEY
文でアクティブ化する)キーを作成することもできます。
3.3.5.2 TDEウォレットでのTDEマスター暗号化キーの設定
TDEウォレット内にTDEマスター暗号化キーを設定するには、ADMINISTER KEY MANAGEMENT
文をSET KEY
句とともに使用する必要があります。
-
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。 -
データベースが
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 | software_keystore_password WITH BACKUP [USING 'backup_identifier'];
ここでは次のように指定します。
-
tag
は、定義する関連の属性および情報です。この設定は、一重引用符(' '
)で囲みます。 -
FORCE KEYSTORE
は、この操作のためにパスワードで保護されたTDEウォレットを一時的に開きます。この操作のためには、TDEウォレットを開く必要があります。 -
キーストアが閉じている場合は、
FORCE KEYSTORE
を含める必要があります。これにより、TDEマスター暗号化キーを設定する前に、キーストアが自動的に開きます。また、FORCE KEYSTORE
句は、自動ログインTDEウォレットが構成されていて現時点で開いているときには、パスワードで保護されたTDEウォレットを開くように切り替えます。 -
IDENTIFIED BY
では、TDEウォレットのパスワードを指定します。また、TDEウォレットのパスワードが外部ストアにある場合は、IDENTIFIED BY EXTERNAL STORE
句を使用できます。 -
WITH BACKUP
では、TDEウォレットのバックアップを作成します。このオプションは、パスワードで保護されたTDEウォレットに対して使用する必要があります。オプションでUSING
句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' '
)で囲みます。この識別子は名前付きのTDEウォレット・ファイルに付加されます(たとえば、ewallet_
time_stamp
_emp_key_backup.p12
では、emp_key_backup
がバックアップ識別子になっています)。オペレーティング・システムで使用されているファイル命名規則に従ってください。
たとえば:
ADMINISTER KEY MANAGEMENT SET KEY FORCE KEYSTORE IDENTIFIED BY EXTERNAL STORE | TDE_wallet_password WITH BACKUP USING 'emp_key_backup';
-
3.3.6 ステップ5: データの暗号化
この時点で構成が完了しているため、PDB内のデータの暗号化を開始できます。
個別の表の列、あるいは表領域またはデータベース全体のデータを暗号化できます。
親トピック: TDEウォレットの構成
3.4 外部キーストアの構成
Oracle Databaseがサポートする外部キーストアには、Oracle Key VaultキーストアとOCI Vault - Key Managementキーストアの2つのタイプがあります。
- 外部キーストアの構成について
外部キーストアは、暗号化キー用の安全な保管場所を提供する独立したサーバーまたはデバイスです。 - ステップ1: 外部キーストアの構成
TDE_CONFIGURATION
パラメータを設定して、外部キーストアを構成できます。 - ステップ2: Oracle Key Vaultへの接続のオープン
TDEキー管理にOracle Key Vaultを使用するようにデータベースを構成したら、使用前にOracle Key Vaultへの接続を開く必要があります。 - ステップ3: Oracle Key VaultでのTDEマスター暗号化キーの設定
Oracle Key Vaultへの接続を開くと、TDEマスター暗号化キーを設定するための準備が整います。 - ステップ4: 統一モードでのデータの暗号化
外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。
親トピック: 透過的データ暗号化の構成
3.4.1 外部キーストアの構成について
外部キーストアは、暗号化キーのために安全な記憶域を提供する独立したサーバーまたはデバイスです。
外部キーストアはOracleデータベースの外部にあります。Oracleデータベースは外部キーストアとのインタフェースをとることができますが、Oracleインタフェースの外部でそれらを操作することはできません。Oracleデータベースは外部キーストアにキーの作成をリクエストできますが、このキーが外部データベースに格納される方法を定義することはできません。(反対に、TDEを使用して作成されるソフトウェア・キーストアの場合は、Oracleデータベースが完全な制御権限を持ちます。つまり、SQL文を使用してこのタイプのキーストアを操作できます。)外部キーストアの例は、Oracle Key Vaultキーストアです。サポートされている外部キーストアは、Oracle Key VaultおよびOracle Cloud Infrastructure Vaultです。
外部キーストアを構成するには、まずsqlnet.ora
ファイルにキーストア・タイプを含め、外部キーストアを開き、外部キーストアTDEマスター暗号化キーを設定します。
Oracle Key Vaultの場合:
IDENTIFIED BY "Oracle_Key_Vault_password"
外部キーストアを構成すると、データの暗号化を開始する準備ができます。
親トピック: 外部キーストアの構成
3.4.3 ステップ2: Oracle Key Vaultへの接続のオープン
TDEキー管理にOracle Key Vaultを使用するようにデータベースを構成したら、使用前にOracle Key Vaultへの接続を開く必要があります。
- Oracle Key Vaultへの接続のオープンについて
暗号化または復号化を実行する前に、Oracle Key Vaultへの接続を開いてデータベースがアクセスできるようにしておく必要があります。 - 外部キーストアを開く
外部キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用します。
親トピック: 外部キーストアの構成
3.4.3.1 Oracle Key Vaultへの接続のオープンについて
暗号化または復号化を実行する前に、Oracle Key Vaultへの接続を開いてデータベースがアクセスできるようにしておく必要があります。
データベースにリカバリ操作が必要な場合(たとえば、正常に停止しなかったデータベースにリカバリが必要な暗号化された表領域がある場合)、データベース自体を開く前にOracle Key Vaultへの接続を開いておく必要があります。
Oracle Key Vaultの接続を開くには、次の2つの方法があります:
-
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
文を発行して、キーストアを手動で開きます。その後、操作を実行できます。 -
ADMINISTER KEY MANAGEMENT
文にFORCE KEYSTORE
句を含めます。FORCE KEYSTORE
は操作中にキーストアを一時的に開き、操作が完了すると、キーストアは再度閉じられます。FORCE KEYSTORE
は、データベースの負荷が高い場合に役に立ちます。このシナリオでは、データベース内の暗号化されたオブジェクトへの同時アクセスにより、自動ログイン・キーストアは、閉じられた直後でユーザーがパスワードベースのキーストアを開く機会を持つ前に開かれ続けます。
キーストアのステータスを確認するには、V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せます。キーストアには、CLOSED
、NOT_AVAILABLE
(つまりWALLET_ROOT
の場所にない)、OPEN
、OPEN_NO_MASTER_KEY
、OPEN_UNKNOWN_MASTER_KEY_STATUS
というステータスがあります。
外部キーストアの場合は、データベースがマウント状態だと、データ・ディクショナリを使用できないため、マスター・キーが設定されているかどうかを確認できないということに注意してください。この場合、ステータスはOPEN_UNKNOWN_MASTER_KEY_STATUS
になります。
関連項目
3.4.4 ステップ3: Oracle Key VaultでのTDEマスター暗号化キーの設定
Oracle Key Vaultへの接続を開くと、TDEマスター暗号化キーを設定する準備が整います。
- 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。 - 新しいTDEマスター暗号化キーの設定
透過的データ暗号化用に外部キーストアをまだ構成していない場合は、この手順を完了する必要があります。 - 暗号化されたデータベースのTDEウォレットからOracle Key VaultまたはOCI KMSへの移行
TDEウォレットからOracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)による集中型キー管理に切り替えるには、現行およびリタイア済のすべてのTDEマスター・キーをアップロードした後で、TDEウォレットからOracle Key VaultまたはOCI KMSにデータベースを移行する必要があります。
親トピック: 外部キーストアの構成
3.4.4.1 外部キーストアのTDEマスター暗号化キーの設定について
外部キーストア内に格納されたTDEマスター暗号化キーを作成する必要があります。
Oracle Databaseは、Oracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)のマスター暗号化キーを使用して、データベース内部のTDE表キーまたは表領域暗号化キー(データ暗号化キー)を暗号化または復号化します。
これまでにウォレットによるTDEを構成したことがない場合は、Oracle Key VaultまたはOCI KMSでマスター暗号化キーを設定する必要があります。すでにウォレットによるTDEを構成していた場合は、データベースをOracle Key VaultまたはOCI KMSに移行する必要があります。
現行のマスター暗号化キーとともに、すべてのTDEキーストア(TDEウォレット、Oracle Key VaultおよびOCI KMS)は、マスター暗号化キーをキー更新するキー更新操作のたびに生成される履歴マスター暗号化キーを保持します。こうした履歴マスター・キーにより、以前にいずれかの履歴マスター暗号化キーを使用して作成されたOracle Databaseのバックアップをリストアできます。Oracle Key Vaultを使用するようにデータベースを移行する前に、TDEウォレットからすべての履歴キーをアップロードできるのはOracle Key Vaultのみです。Oracle Key Vaultへの移行後には、TDEウォレットを削除できます。これにより、暗号化サーバーに暗号化キーが存在することを許可しないというセキュリティ規則を満たします。
3.4.4.3 暗号化されたデータベースのTDEウォレットからOracle Key VaultまたはOCI KMSへの移行
TDEウォレットからOracle Key VaultまたはOracle Cloud Infrastructure (OCI)キー管理サービス(KMS)による集中型キー管理に切り替えるには、現行およびリタイア済のすべてのTDEマスター・キーをアップロードした後で、TDEウォレットからOracle Key VaultまたはOCI KMSにデータベースを移行する必要があります。
Oracle Data PumpやOracle Recovery Managerなどのツールは、TDEウォレットを使用してエクスポートまたはバックアップしたデータに復号化と暗号化の操作を実行するために、古いTDEウォレットにアクセスする必要があります。現在のマスター暗号化キーともに、Oracleキーストアでは、マスター暗号化キーをローテーションするキーの更新操作のたびに生成される履歴マスター暗号化キーを保持します。これらの履歴マスター暗号化キーにより、履歴マスター暗号化キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアできます。
3.4.5 ステップ4: 統一モードでのデータの暗号化
外部キーストアまたはOracle Key Vaultキーストアの構成が完了したので、データの暗号化を開始できます。
親トピック: 外部キーストアの構成
3.5 表の列の暗号化
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。
- 表の列の暗号化について
表の個々の列を暗号化できます。 - TDE列暗号化で暗号化できるデータ型
Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。 - TDE列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。 - 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。 - 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。 - 暗号化列に対する索引の作成
暗号化された列に対して索引を作成できます。 - 暗号化列へのSaltの追加
Saltは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。 - 暗号化列からのSaltの削除
ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。 - 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更
ALTER TABLE
SQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。
親トピック: 透過的データ暗号化の構成
3.5.1 表の列の暗号化について
表の個々の列を暗号化できます。
個々の列または表領域全体のどちらを暗号化するかは、表のデータ型によって決まります。また、TDE列暗号化をサポートしていない機能もいくつかあります。
親トピック: 表の列の暗号化
3.5.2 TDE列暗号化で暗号化できるデータ型
Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。
様々なデータ型が使用されるデータ列を暗号化することができます。
サポートされるデータ型は次のとおりです。
-
BINARY_DOUBLE
-
BINARY_FLOAT
-
CHAR
-
DATE
-
INTERVALDAYTOSECOND
-
INTERVALYEARTOMONTH
-
NCHAR
-
NUMBER
-
NVARCHAR2
-
RAW
(レガシーまたは拡張) -
TIMESTAMP
(TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
を含む) -
VARCHAR2
(レガシーまたは拡張)
ラージ・バイナリ・オブジェクト(LOB)を暗号化する必要がある場合は、Oracle SecureFilesを使用できます。Oracle SecureFilesを使用すると、LOBデータを安全に格納できます。SecureFilesを使用してLOBを暗号化するには、CREATE TABLE
文またはALTER TABLE
文を使用します。
暗号化列のサイズが列のデータ型で許容されるサイズより大きい場合は、列を暗号化できません。
表3-1に、各種データ型の最大許容サイズを示します。
表3-1 各データ型の最大許容サイズ
データ型 | 最大サイズ |
---|---|
|
1932バイト |
|
3932バイト |
|
32,699バイト |
|
1966バイト |
|
16,315バイト |
|
966バイト |
|
32,699バイト |
ノート:
TDE表領域暗号化には、これらのデータ型制限はありません。
3.5.3 TDE列暗号化の使用に関する制限
TDE列暗号化は、SQLレイヤーで実行されます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。
TDE列暗号化は、次のデータベース機能と併用しないでください。
-
Bツリー以外の索引タイプ
-
索引内のレンジ・スキャン検索
-
同期チェンジ・データ・キャプチャ
-
トランスポータブル表領域
-
ID列として作成された列
また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。
サポートされていないこれらの機能を使用する必要があるアプリケーションは、DBMS_CRYPTO
PL/SQLパッケージを使用して暗号化を実行できます。
透過的データ暗号化は、ディスクまたは他のメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、Oracle Databaseセキュリティ・ガイドに記載されているネットワーク暗号化ソリューションを使用します。
親トピック: 表の列の暗号化
3.5.4 暗号化列を含む表の作成
Oracle Databaseには、暗号化列に使用される暗号化を定義するために使用できる様々なアルゴリズムが用意されています。
- 暗号化列を含む表の作成について
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成できます。 - デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
TDEでは、192ビットのキーの長さを使用するAES
暗号化アルゴリズム(AES192
)がデフォルトで使用されます。 - アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成します。 - NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。 - 例: CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。 - 例: 表の整合性アルゴリズムの変更
異なるオフライン表領域を並列で変換するには、異なるフォアグラウンドでALTER TABLE SQL文を使用できます。 - 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
親トピック: 表の列の暗号化
3.5.4.1 暗号化列を含む表の作成について
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成できます。
暗号化列を含むリレーショナル表を作成するには、CREATE TABLE
SQL文でデータベース列を定義するときにSQL ENCRYPT
句を指定します。
親トピック: 暗号化列を含む表の作成
3.5.4.2 デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
TDEでは、192ビット長のキーを使用するAES
暗号化アルゴリズム(AES192
)がデフォルトで使用されます。
アルゴリズムを指定しないで表の列を暗号化すると、その列はAES192
アルゴリズムを使用して暗号化されます。
暗号化の前にTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。また、TDEにより整合性をチェックするために、データにメッセージ認証コード(MAC)が追加されます。デフォルトでは、SHA-1
整合性アルゴリズムが使用されます。
-
列を暗号化する表を作成するには、
ENCRYPT
句を含むCREATE TABLE
SQL文を使用します。たとえば、デフォルト・アルゴリズムを使用して表の列を暗号化するには、次のようにします。
CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER, salary NUMBER(6) ENCRYPT);
この例では、暗号化列を含む新しい表を作成しています(
salary
)。この列は、デフォルトの暗号化アルゴリズム(AES192
)を使用して暗号化されます。saltおよびMACはデフォルトで追加されます。この例は、キーストアが開かれていて、マスター暗号化キーが設定されていることを前提としています。
ノート:
1つの表に複数の暗号化列がある場合、これらのすべての列で暗号化アルゴリズムと整合性アルゴリズムの同じペアが使用される必要があります。
saltは列レベルで指定されます。つまり、表の暗号化列には、saltが使用される暗号化列とsaltが使用されない暗号化列が混在していてもかまいません。
親トピック: 暗号化列を含む表の作成
3.5.4.3 アルゴリズムを使用しないまたは非デフォルト・アルゴリズムを使用する暗号化列を含む表の作成
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成します。
暗号化の前に、デフォルトでTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。ただし、暗号化列を索引付けする場合、NO SALT
パラメータを使用する必要があります。
-
デフォルト以外のアルゴリズムの暗号化列、またはアルゴリズムなしの暗号化列を使用する表を作成するには、次のように
CREATE TABLE
SQL文を実行します。-
アルゴリズムを使用しない場合は、
ENCRYPT NO SALT
句を含めます。 -
デフォルト以外のアルゴリズムを使用する場合は、
ENCRYPT USING
句を使用し、その後に一重引用符で囲んだ次のいずれかのアルゴリズムを続けます。-
3DES168
-
AES128
-
AES192
(デフォルト) -
AES256
-
-
次の例では、empID
列およびsalary
列の暗号化設定の指定方法を示します。
CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168');
この例では、次のようになります。
-
empID
列は暗号化されますが、saltを使用しません。表のすべての暗号化列は、同じ暗号化アルゴリズムを使用する必要があるため、empID
列とsalary
列の両方は、3DES168
暗号化アルゴリズムを使用します。 -
salary
列は、3DES168
暗号化アルゴリズムを使用して暗号化されます。アルゴリズムを指定する文字列は、一重引用符(' ')で囲む必要があることに注意してください。salary
列では、デフォルトでsaltが使用されます。
親トピック: 暗号化列を含む表の作成
3.5.4.4 NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。
表の行および暗号化列の数が多い場合、TDEチェックをバイパスすることで、かなりの量のディスク領域になることがあります。さらに、処理サイクルが節約され、TDEに関連するパフォーマンス・オーバーヘッドが減少します。
TDEでは、デフォルトでSHA-1
整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1
アルゴリズムを使用している場合は、NOMAC
パラメータによって同じ表の別の列を暗号化することはできません。
-
暗号化および復号化操作での整合性チェックをバイパスするには、
CREATE TABLE
文およびALTER TABLE
文でNOMAC
パラメータを使用します。
親トピック: 暗号化列を含む表の作成
3.5.4.5 例: CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。
例3-1では、暗号化列を含む表を作成しています。empID
列は、NOMAC
パラメータを使用して暗号化されます。
例3-1 CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT 'NOMAC' ,
salary NUMBER(6));
親トピック: 暗号化列を含む表の作成
3.5.4.6 例: 表の整合性アルゴリズムの変更
異なるオフライン表領域を並列で変換するには、異なるフォアグラウンドでALTER TABLE SQL文を使用できます。
例3-2に、表内の暗号化列の整合性アルゴリズムを変更する方法を示します。暗号化アルゴリズムを3DES168
に、整合性アルゴリズムをSHA-1
に設定しています。2番目のALTER TABLE
文では、整合性アルゴリズムをNOMAC
に設定しています。
例3-2 表の整合性アルゴリズムの変更
ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'SHA-1'; ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'NOMAC';
親トピック: 暗号化列を含む表の作成
3.5.4.7 外部表への暗号化列の作成
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
外部表は、ORACLE_DATAPUMP
アクセス・ドライバを使用して更新できます。
-
外部表の特定の列を暗号化するには、列を定義するときに
ENCRYPT
句を使用します。列は、システム生成キーによって暗号化されます。たとえば、次の
CREATE TABLE
SQL文は、3DES168
アルゴリズムを使用してssn
列を暗号化します。CREATE TABLE emp_ext ( first_name, .... ssn ENCRYPT USING '3DES168', ....
外部表を新しい場所に移動することを予定している場合、列の暗号化にランダム生成のキーは使用できません。これは、新しい場所ではランダム生成のキーが使用できないためです。
このような場合は、列を暗号化する際にパスワードを指定する必要があります。データを移動した後で、同じパスワードを使用して、新しい場所の暗号化列データへのアクセスに必要なキーを再生成できます。
表パーティション交換でもパスワード保護されたTDE表キーが必要になります。
例3-3 パスワード生成TDE表キーを使用した新しい外部表の作成
CREATE TABLE emp_ext ( first_name, last_name, empID, salary, ssn ENCRYPT IDENTIFIED BY password ) ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY "D_DIR" LOCATION('emp_ext.dat') ) REJECT LIMIT UNLIMITED AS SELECT * FROM EMPLOYEE;
親トピック: 暗号化列を含む表の作成
3.5.5 既存の表にある列の暗号化
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。
- 既存の表にある列の暗号化について
ALTER TABLE
SQL文では、既存の表にある列を暗号化できます。 - 既存の表への暗号化列の追加
既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALT
を使用して列を索引付けすることができます。 - 暗号化されていない列の暗号化
ALTER TABLE MODIFY
文を使用して、既存の暗号化されていない列を暗号化できます。 - 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
親トピック: 表の列の暗号化
3.5.5.1 既存の表にある列の暗号化について
ALTER TABLE
SQL文では、既存の表にある列を暗号化できます。
既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ADD
句またはMODIFY
句を含むALTER TABLE
SQL文を使用します。
親トピック: 既存の表にある列の暗号化
3.5.5.2 既存の表への暗号化列の追加
既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALT
を使用して列を索引付けすることができます。
-
既存の表に暗号化列を追加するには、
ALTER TABLE ADD
文を使用して、ENCRYPT
句で新しい列を指定します。
例3-4では、employee
という既存の表に暗号化列ssn
を追加しています。ssn
列は、デフォルトのAES192
アルゴリズムを使用して暗号化されます。saltおよびMACはデフォルトで追加されます。
例3-4 既存の表への暗号化列の追加
ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);
親トピック: 既存の表にある列の暗号化
3.5.5.3 暗号化されていない列の暗号化
ALTER TABLE MODIFY
文を使用して、既存の暗号化されていない列を暗号化できます。
-
暗号化されていない既存の列を暗号化するには、
ALTER TABLE MODIFY
文を使用して、ENCRYPT
句で、暗号化されてない列を指定します。
次の例では、employee
表のfirst_name
列を暗号化しています。first_name
列は、デフォルトのAES192
アルゴリズムを使用して暗号化されます。saltはデフォルトでデータに追加されます。別のアルゴリズムを使用して列を暗号化できます。列を索引付けする場合、NO SALT
を指定する必要があります。NOMAC
パラメータを使用して、整合性チェックをバイパスすることもできます。
ALTER TABLE employee MODIFY (first_name ENCRYPT);
次の例では、NOMAC
パラメータを使用してemployee表のfirst_name
列を暗号化しています。
ALTER TABLE employee MODIFY (first_name ENCRYPT 'NOMAC');
親トピック: 既存の表にある列の暗号化
3.5.5.4 列の暗号化の無効化
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
-
列の暗号化を無効にするには、
ALTER TABLE MODIFY
コマンドを使用し、DECRYPT
句を指定します。
例3-5では、employee
表のfirst_name
列を復号化しています。
例3-5 列の暗号化の無効化
ALTER TABLE employee MODIFY (first_name DECRYPT);
親トピック: 既存の表にある列の暗号化
3.5.6 暗号化列に対する索引の作成
暗号化された列に対して索引を作成できます。
索引付け対象の列は、saltなしで暗号化されている必要があります。saltを使用して列が暗号化されている場合、ORA-28338: 索引付けされた列は、saltを使用して暗号化できません
エラーが発生します。
-
暗号化列に索引を作成する場合は、
ENCRYPT NO SALT
句を含むCREATE INDEX
文を使用します。
例3-6に、saltなしで暗号化された列に対して索引を作成する方法を示します。
例3-6 saltなしで暗号化された列に対する索引の作成
CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT NO SALT,
salary NUMBER(6) ENCRYPT USING '3DES168');
CREATE INDEX employee_idx on employee (empID);
親トピック: 表の列の暗号化
3.5.7 暗号化列へのSaltの追加
ソルトは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。
Saltにより、同じ平文データが常に同じ暗号化テキストに変換されることがなくなります。saltを追加すると、侵入者がデータを盗むために使用する一般的な方法の1つである暗号化テキストのパターン一致を排除できます。saltを追加するには、暗号化されたデータ値ごとに16バイトの追加記憶域が必要です。
-
暗号化列に対してsaltを追加または削除するには、
ALTER TABLE MODIFY
SQL文を使用します。
たとえば、saltを使用してfirst_name
列を暗号化するとします。first_name
列が以前にsaltなしで暗号化されていた場合は、ALTER TABLE MODIFY
文によって、saltを使用して列が再暗号化されます。
ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);
親トピック: 表の列の暗号化
3.5.8 暗号化列からのSaltの削除
ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。
-
暗号化列からsaltを削除するには、ALTER TABLE SQL文で
ENCRYPT NO SALT
句を使用します。
たとえば、first_name
列からsaltを削除するとします。saltを使用して暗号化された列に索引を付ける必要がある場合は、索引を付ける前に、この文を使用してsaltを削除します。
ALTER TABLE employee MODIFY (first_name ENCRYPT NO SALT);
親トピック: 表の列の暗号化
3.5.9 暗号化列を含む表に対する暗号化キーまたはアルゴリズムの変更
ALTER TABLE
SQL文を使用して、暗号化列で使用される暗号化キーまたはアルゴリズムを変更できます。
各表では、その列に1つのTDE表キーのみ指定できます。TDE表キーはALTER TABLE
文を使用して再生成できます。このプロセスでは、新しいキーを生成し、以前のキーを使用して表のデータを復号化し、新しいキーを使用してデータを再暗号化し、表のメタデータを新しいキー情報で更新します。新しいTDE表キーに対して別の暗号化アルゴリズムを使用することもできます。
-
暗号化列を含む表の暗号化キーまたはアルゴリズムを変更するには、
ALTER TABLE
SQL文でREKEY
またはREKEY USING
句を使用します。
たとえば:
ALTER TABLE employee REKEY;
例3-7では、3DES168
アルゴリズムを使用してemployee
表に対するTDE表キーを再生成しています。
例3-7 暗号化された表の列の暗号化キーおよびアルゴリズムの変更
ALTER TABLE employee REKEY USING '3DES168';
親トピック: 表の列の暗号化
3.6 表領域およびデータベースの暗号化変換
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。
- 表領域およびデータベースの暗号化変換について
CREATE TABLESPACE
SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACE
によって、既存の表領域を暗号化できます。 - 暗号化された表領域に対する閉じられたTDEキーストアの影響
Oracle管理の表領域が暗号化されている場合は、TDEキーストアを閉じたり、移行したりできますが、Oracle管理の表領域に対する操作を禁止するにはデータベース・システム自体を停止する必要があります。 - 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。 - 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。 - 表領域暗号化のデフォルト・アルゴリズムの設定
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
は、特定の暗号化シナリオに適用されます。 - 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。 - データ・ディクショナリ内の機密資格証明データの暗号化
SYS.LINK$
システム表内およびSYS.SCHEDULER$_CREDENTIAL
システム表内の機密資格証明データを暗号化できます。 - 既存のオフライン表領域の暗号化変換
ALTER TABLESPACE
SQL文のOFFLINE
、ENCRYPT
およびDECRYPT
句を使用して、オフライン暗号化変換を実行できます。 - 既存のオンライン表領域の暗号化変換
ALTER TABLESPACE
SQL文をONLINE
およびENCRYPT
またはDECRYPT
句とともに使用することによって、オンラインの既存の表領域を暗号化および復号化できます。 - 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
親トピック: 透過的データ暗号化の構成
3.6.1 表領域およびデータベースの暗号化変換について
CREATE TABLESPACE
SQL文を使用して、新しい表領域を暗号化できます。ALTER TABLESPACE
によって、既存の表領域を暗号化できます。
新規または既存の表領域の暗号化に加えて、全データベースを暗号化できます。その場合、Oracle管理の表領域(このリリースではSYSTEM
、SYSAUX
、TEMP
およびUNDO
表領域)も暗号化されます。全データベースを暗号化するには、ALTER DATABASE
ではなく、ALTER TABLESPACE
を使用してOracle管理の表領域を暗号化します。
次の表で、表領域およびデータベースのオフラインとオンラインの暗号化変換の違いを比較します。
表3-2 オフラインとオンラインの表領域およびデータベースの暗号化変換
機能 | オフライン変換 | オンライン変換 |
---|---|---|
最小の変換機能があるリリース |
Oracleデータベース11gリリース2 (11.2) |
Oracle Database 12cリリース2 (12.2)以降 |
バックポートできるもの |
|
なし |
サポートされるアルゴリズム |
TDEがサポートするすべての対称型暗号化アルゴリズム。サポートされる暗号化と整合性のアルゴリズムを参照してください。「既存のオフライン表領域の暗号化変換について」を参照してください。 |
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.6.2 暗号化された表領域に対する閉じられたTDEキーストアの影響
Oracle管理の表領域が暗号化されている場合は、TDEキーストアを閉じたり、移行したりできますが、Oracle管理の表領域に対する操作を禁止するにはデータベース・システム自体を停止する必要があります。
閉じられたTDEキーストアは、暗号化されたOracle管理の表領域(このリリースでは、SYSTEM
、SYSAUX
、TEMP
およびUNDO
表領域)に関係する操作に影響しません。これにより、TDEキーストアが閉じられているときにも、バックグラウンド・プロセス(ログ・ライターなど)によって実行される操作をこれらの表領域に対して引き続き実行できます。暗号化されたOracle管理の表領域に対する操作を禁止する場合は、データベースを停止する必要があります。
ユーザー作成の表領域に関しては、TDEキーストアが閉じられていることによって、キーのローテーション、表領域の復号化などの操作が、以前のリリースと同様にORA-28365 ウォレットがオープンしていません
というエラーで失敗します。ユーザー作成の表領域に対する操作を禁止する場合は、TDEキーストアを閉じます(または、データベースを停止します)。
ユーザー作成のデータは、TDEキーストアが開いている間にユーザー作成の表領域から暗号化されたOracle管理の表領域にコピーできます(たとえば、DBMS_STATS
統計収集などの内部プロセスによって)。キーストアを閉じた場合、ユーザーがV$ENCRYPTION_WALLET
ビューを問い合せたときにTDEキーストアがCLOSED
状態であっても、後でこのデータを表示することは妨げられません。暗号化されたユーザー作成の表領域を問い合せることによって元のデータにアクセスしようとすると失敗し、ORA-28365 ウォレットがオープンしていません
というエラーが返されます。
表3-3に、ユーザー作成の表領域およびOracle管理の表領域の暗号化されたデータに対する操作を禁止または許可するために必要な操作を示します。たとえば、最初のシナリオでは、ユーザー作成の表領域とOracle管理の表領域の両方が暗号化されています。この場合、暗号化されたユーザー作成の表領域の暗号化データに関しては、管理者はキーストアを開閉し、暗号化されたユーザー作成の表領域を持つデータベースを停止およびオープンできます。暗号化されたOracle管理の表領域が構成されている場合、管理者はデータベースを停止することで操作を禁止できます。また、マウント・モードで起動してTDEキーストアを開き、データベースをオープンすることで操作を許可できます。(暗号化されたOracle管理の表領域にあるブートストラップ・ディクショナリ表を復号化するためにTDEマスター暗号化キーが必要になる可能性があるため、データベースをオープンする前にTDEキーストアを開く必要があります。)この表の該当なしフラグは暗号化されていないデータを示しており、インスタンスが停止されないかぎり、常に操作できます。
表3-3 暗号化データの操作を禁止または許可するために必要なコマンド
表領域の暗号化のシナリオ | 暗号化されたユーザー作成の表領域のデータの操作を禁止するコマンド | 暗号化されたOracle管理の表領域のデータの操作を禁止するコマンド | 暗号化されたユーザー作成の表領域のデータの操作を許可するコマンド | 暗号化されたOracle管理の表領域のデータの操作を許可するコマンド |
---|---|---|---|---|
ユーザー作成の表領域およびOracle管理の表領域の両方が暗号化されている |
|
SHUTDOWN |
|
|
ユーザー表領域は暗号化されていて、Oracle管理の表領域は暗号化されていない |
|
該当なし |
|
該当なし |
ユーザー表領域は暗号化されておらず、Oracle管理の表領域は暗号化されている | 該当なし | SHUTDOWN |
該当なし |
|
ユーザー表領域もOracle管理の表領域も暗号化されていない | 該当なし | 該当なし | 該当なし | 該当なし |
親トピック: 表領域およびデータベースの暗号化変換
3.6.3 透過的データ暗号化表領域暗号化の使用に関する制限
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。
次の制約に注意してください:
-
透過的データ暗号化(TDE)表領域暗号化では、SQLレイヤーでデータを暗号化および復号化するTDE列暗号化とは対照的に、読取りおよび書込み操作時にデータを暗号化または復号化します。このことは、データ型制限や索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。
-
インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。
3.6.4 暗号化された新しい表領域の作成
新しい表領域を作成する際、作成のプロセス中に暗号化設定を構成できます。
- ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE
初期化パラメータを設定する必要があります。 - ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。 - ステップ3: 暗号化された表領域の作成
COMPATIBLE
初期化パラメータを設定したら、暗号化された表領域の作成の準備は完了です。
親トピック: 表領域およびデータベースの暗号化変換
3.6.4.1 ステップ1: 表領域暗号化のCOMPATIBLE初期化パラメータの設定
暗号化された表領域を作成する前に、COMPATIBLE
初期化パラメータを設定する必要があります。
- 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
最小のCOMPATIBLE
初期化パラメータ設定である11.2.0.0
では、表領域暗号化機能の完全なセットが有効になります。 - 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定について
COMPATIBLE
初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
親トピック: 暗号化された新しい表領域の作成
3.6.4.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ウォレットから外部キーストアにキーを移行できます(TDEマスター暗号化キーが外部キーストア用に構成されていることを確認してください)。 -
11.2.0.0
に設定することにより、TDEマスター暗号化キーをキー更新できます。
COMPATIBLE
パラメータを11.2.0.0
に設定すると、変更を元に戻せないことに注意してください。表領域暗号化を使用するには、互換性設定が最低でも11.2.0.0
であることを確認します。
3.6.4.1.2 表領域暗号化のためのCOMPATIBLE初期化パラメータの設定
COMPATIBLE
初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
-
データベース・インスタンスにログインします。
-
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.6.4.2 ステップ2: 表領域TDEマスター暗号化キーの設定
TDEマスター暗号化キーが構成されていることを確認する必要があります。
-
次のようにTDEマスター暗号化キーを設定します。
-
ソフトウェアTDEマスター暗号化キーについては、「ステップ4: TDEウォレットでのTDEマスター暗号化キーの設定」を参照してください。
-
ハードウェアTDEマスター暗号化キーについては、「ステップ3: Oracle Key VaultでのTDEマスター暗号化キーの設定」を参照してください。
-
親トピック: 暗号化された新しい表領域の作成
3.6.4.3 ステップ3: 暗号化された表領域の作成
COMPATIBLE
初期化パラメータを設定したら、暗号化された表領域の作成は完了です。
- 暗号化された表領域の作成について
暗号化された表領域を作成するには、CREATE TABLESPACE
SQL文を使用します。 - 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING
句を含むCREATE TABLESPACE
文を使用する必要があります。 - 例: AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、暗号化された表領域を作成できます。 - 例: デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。
親トピック: 暗号化された新しい表領域の作成
3.6.4.3.1 暗号化された表領域の作成について
暗号化された表領域を作成するには、CREATE TABLESPACE
SQL文を使用します。
暗号化された表領域を作成するには、CREATE TABLESPACE
システム権限が必要です。
Oracle Data Pumpを使用して、暗号化された表領域にデータをインポートできます。CREATE TABLE...AS SELECT...
やALTER TABLE...MOVE...
などのSQL文を使用して、暗号化された表領域にデータを移動することもできます。CREATE TABLE...AS SELECT...
文は、既存の表から表を作成します。ALTER TABLE...MOVE...
文は、暗号化された表領域に表を移動します。
セキュリティ上の理由から、NO SALT
オプションを使用して表領域を暗号化することはできません。
表領域が暗号化されたかどうかを確認するために、DBA_TABLESPACES
データ・ディクショナリ・ビューおよびUSER_TABLESPACES
データ・ディクショナリ・ビューのENCRYPTED
列を問い合せることができます。
関連項目:
DBA_TABLESPACES
およびUSER_TABLESPACES
データ・ディクショナリ・ビューの詳細は、Oracle Databaseリファレンスを参照してください。
親トピック: ステップ3: 暗号化された表領域の作成
3.6.4.3.2 暗号化された表領域の作成
暗号化された表領域を作成するには、ENCRYPTION USING
句を含むCREATE TABLESPACE
文を使用する必要があります。
親トピック: ステップ3: 暗号化された表領域の作成
3.6.4.3.3 例: AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、暗号化された表領域を作成できます。
例3-8では、AES192
アルゴリズムを使用して暗号化された、securespace_1
という表領域を作成します。
例3-8 AES192を使用する暗号化された表領域の作成
CREATE TABLESPACE securespace_1 DATAFILE '/home/user/oradata/secure01.dbf' SIZE 150M ENCRYPTION USING 'AES192' ENCRYPT;
親トピック: ステップ3: 暗号化された表領域の作成
3.6.4.3.4 例: デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACE
SQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。
例3-9では、securespace_2
という表領域を作成します。暗号化アルゴリズムが指定されていないため、デフォルトの暗号化アルゴリズム(AES128
)が使用されます。キー長は128ビットです。
例3-9 デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACE securespace_2 DATAFILE '/home/user/oradata/secure01.dbf' SIZE 150M ENCRYPTION ENCRYPT;
親トピック: ステップ3: 暗号化された表領域の作成
3.6.5 表領域暗号化のデフォルト・アルゴリズムの設定
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
は、特定の暗号化シナリオに適用されます。
- 暗号化アルゴリズムを指定できない暗号化コマンド
- 暗号化構文なしで作成された新しい表領域
SYSTEM
表領域の暗号化アルゴリズム
_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
は、Oracle Key Vaultでの最初のSET KEY
操作またはソフトウェア・キーストアベースのTDE構成のCREATE KEYSTORE
コマンドの前に設定されている場合にのみ有効になります。
_TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
は、オフライン表領域暗号化操作とオンライン表領域暗号化操作の両方に適用されます。TABLESPACE_ENCRYPTION
が適切に設定されている場合、将来の暗号化表領域にも適用されます。マルチテナント環境では、CDBルートまたは個々のPDBでTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
を設定できます。
親トピック: 表領域およびデータベースの暗号化変換
3.6.6 将来の表領域の暗号化
将来作成する表領域を自動的に暗号化するようOracle Databaseを構成できます。
- 将来の表領域の暗号化について
ENCRYPT_NEW_TABLESPACES
動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。 - 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACES
データベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
親トピック: 表領域およびデータベースの暗号化変換
3.6.6.1 将来の表領域の暗号化について
ENCRYPT_NEW_TABLESPACES
動的データベース初期化パラメータは、将来の表領域が暗号化されるかどうかを制御します。
デフォルトでは、すべてのOracle Cloudデータベースは暗号化されます。そのようなデータベースに既製のアプリケーションをインストールすると、そのインストール・スクリプトには暗号化構文がない可能性があります。この場合、ENCRYPT_NEW_TABLESPACES
がCLOUD_ONLY
に設定されているため、これらの表領域は暗号化されて作成されます。
Oracle Cloud環境では、Oracle Cloud環境およびオンプレミスの環境に暗号化された表領域を作成するときに、次のシナリオが発生する場合があります。
-
Oracle Cloud内にデータベースを作成している場合、
TABLESPACE_ENCRYPTION
パラメータがAUTO_ENABLE
に設定されているため、表領域は暗号化されます。ところが、そういった意図がないか、暗号化されたデータベースをオンプレミスに戻すAdvanced Security Optionライセンスさえも持っていない場合があります。この場合、Oracle Recovery Manager (Oracle RMAN)には、AS DECRYPTED
を複製またはリストアするオプションがあります。 -
プライマリ・データベースがオンプレミスで、スタンバイ・データベースがOracle Cloudにある、ハイブリッド環境を作成します。切り替え操作が行われた場合、新しいプライマリはOracle Cloud上になります。たとえば、Advanced Security Option (ASO)ライセンスを持っておらず、自動的に暗号化された表領域がOracle Cloudにあるとします。オンプレミスのスタンバイ・データベースも自動的に暗号化されます。この場合、オンプレミス・スタンバイ・データベースにAdvanced Securityライセンス(透過的データ暗号化およびデータ・リダクションを含む)が必要か、スタンバイ・データベースを使用できません。
親トピック: 将来の表領域の暗号化
3.6.6.2 将来の表領域の暗号化設定
ENCRYPT_NEW_TABLESPACES
データベース初期化パラメータを設定して、将来作成する表領域を自動的に暗号化できます。
ノート:
Oracle Database 19.16以降、ENCRYPT_NEW_TABLESPACES
は非推奨になっています。
親トピック: 将来の表領域の暗号化
3.6.7 データ・ディクショナリ内の機密資格証明データの暗号化
SYS.LINK$
システム表およびSYS.SCHEDULER$_CREDENTIAL
システム表内の機密資格証明データを暗号化できます。
デフォルトでは、SYS.LINK$
システム表内およびSYS.SCHEDULER$_CREDENTIAL
システム表内の資格証明データは、不明瞭化されています。ただし、多くのタイプの不明瞭化解除アルゴリズムが使用可能であるため、Oracleでは、この機密資格証明データを暗号化することをお薦めします。データ・ディクショナリ資格証明のステータスを確認するために、DICTIONARY_CREDENTIALS_ENCRYPT
データ・ディクショナリ・ビューを問い合せることができます。
これらの2つのシステム表内の機密資格証明データの暗号化には、透過的データ暗号化を使用します。資格証明データの暗号化には、AES256アルゴリズムを使用します。資格証明データを暗号化するには、Oracle Advanced Security Optionライセンスを所有している必要はありませんが、SYSKM
管理権限が付与されている必要があります。また、データベースには、開いているキーストアがある必要があります。
親トピック: 表領域およびデータベースの暗号化変換
3.6.8 既存のオフライン表領域の暗号化変換
ALTER TABLESPACE
SQL文のOFFLINE
、ENCRYPT
およびDECRYPT
句を使用して、オフライン暗号化変換を実行できます。
- 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。 - オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびENCRYPT
句とともに使用できます。 - オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびDECRYPT
句とともに使用できます。
親トピック: 表領域およびデータベースの暗号化変換
3.6.8.1 既存のオフライン表領域の暗号化変換について
表領域がオフラインのとき、またはデータベースが開いていないときに、ユーザー表領域の既存のデータ・ファイルを暗号化または復号化できます。
このオフラインの暗号化方法は、データベースの互換性をOracle Database 11cリリース2 (11.2)またはOracle Database 12cリリース1 (12.1)からリリース19cに変更する(元に戻すことはできません)ことを計画していない場合に使用します。オフラインの暗号化方法は、このデータベースをリリース18cにアップグレードする前に、透過的データ暗号化を簡単に利用する場合にも便利です。オフライン表領域は、暗号化と復号化の両方を行うことができます。
次の点に注意してください。
-
Oracle Database提供の表領域(
SYSTEM
、SYSAUX
およびUNDO
)をオフライン変換方法を使用して暗号化する場合には、オフライン変換で既存のデータベースを暗号化する場合に推奨される方法を使用する必要があります。 -
オンラインの方法を使用して、キー更新、暗号化アルゴリズムの変更またはオフラインの方法で以前に暗号化した表領域を復号化できます。
-
Oracle Data Guardを構成している場合には、先にスタンバイの表領域を暗号化し、プライマリに切り替えてから、新しいスタンバイ・データベースの表領域をオフライン暗号化することによって、停止時間を最小限に抑えることができます。オフライン暗号化(データファイルおよび表領域レベルの両方)は、最初にスタンバイで実行されます。オンライン暗号化はOracle Data Guardトランザクションであるため、スタンバイ・データベースでリプレイされます。
-
USING ... ENCRYPT
句を使用して、暗号化アルゴリズムを指定できます。サポートされているアルゴリズムは、AES128
、AES192
、AES256
およびその他(ARIA
、GOST
など)です。暗号化キーを確認するには、V$DATABASE_KEY_INFO
ビューのENCRYPTIONALG
列を問い合せます。 -
今後のオフライン表領域暗号化操作のためにデフォルトの暗号化アルゴリズムを設定するには、
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
動的パラメータを設定します。 -
ALTER TABLESPACE
文を使用すると、各種のデータ・ファイルを暗号化するために、オフライン表領域を複数のフォアグラウンド・セッションを使用して並列で変換できます。 -
Oracle Data Guardを使用する場合には、先にスタンバイの表領域を暗号化し、切り替えてから、次に元のプライマリの表領域を暗号化することによって、停止時間を最小限に抑えることができます。
-
Oracle Database 11gリリース2 (11.2.0.4)およびOracle Database 12cリリース1 (12.1.0.2)では、表領域
SYSTEM
およびSYSAUX
のオフライン暗号化は実行できません。また、これらのリリースでUNDO
表領域をオフラインで暗号化することはお薦めしません。これを行うとキーストアを閉じられなくなり、データベースが機能しなくなります。また、暗号化された表領域に関連付けられたすべてのUNDOレコードは、すでに自動的にUNDO
表領域に暗号化されているため、データベースがオフラインの間にUNDO
表領域を暗号化する必要はありません。TEMP
表領域を暗号化するには、削除してから、暗号化済として再作成する必要があります。
3.6.8.2 オフライン変換での既存のユーザー定義表領域の暗号化
既存の表領域をオフライン変換で暗号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびENCRYPT
句とともに使用できます。
SYSTEM
およびUNDO
は、オフラインにできません。表領域をオフラインで暗号化する場合には、オフライン変換での既存のデータベースの暗号化に記載された方法を使用する必要があります。
親トピック: 既存のオフライン表領域の暗号化変換
3.6.8.3 オフライン変換での既存の表領域の復号化
既存の表領域をオフライン変換で復号化するには、ALTER TABLESPACE
SQL文をOFFLINE
句およびDECRYPT
句とともに使用できます。
関連項目
親トピック: 既存のオフライン表領域の暗号化変換
3.6.9 既存のオンライン表領域の暗号化変換
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.6.9.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.6.9.2 オンライン変換での既存の表領域の暗号化
オンライン変換で既存の表領域を暗号化するには、ALTER TABLESPACE
をONLINE
およびENCRYPT
句とともに使用します。
V$ENCRYPTED_TABLESPACES
動的ビューのSTATUS
列を問い合せて、暗号化ステータスを確認できます。このビューのENCRYPTIONALG
列には、使用されている暗号化アルゴリズムが示されます。変換プロセスが中断された場合、ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。たとえば、プライマリ・データ・ファイルが変換され、スタンバイ・データ・ファイルは変換されなかった場合、スタンバイ・データ・ファイルのスタンバイ・データベースでALTER TABLESPACE ... FINISH
を実行できます。
3.6.9.3 オンライン変換での既存の表領域のキー更新
オンラインの既存の表領域をキー更新するには、ALTER TABLESPACE
SQL文のREKEY
句を使用できます。
-
TEMP
表領域をキー更新することはできません。TEMP
表領域に異なる暗号化アルゴリズムを割り当てる場合には、TEMP
を削除して、正しい暗号化アルゴリズムで再作成します。 -
オンライン表領域のキー更新操作とマスター・キーの操作を同時に実行しないでください。いずれかの表領域が現在キー更新中かどうかを確認するには、次の問合せを発行して、暗号化された表領域のキー更新ステータスを確認します。
SELECT TS#,ENCRYPTIONALG,STATUS FROM V$ENCRYPTED_TABLESPACES;
REKEYING
というステータスは、対応する表領域がまだキー更新中であることを意味します。このステータスが適用される間は、マスター・キーをキー更新しないでください。
オンライン変換を使用して既存の表領域をキー更新するには:
ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。
3.6.9.4 オンライン変換での既存の表領域の復号化
既存の表領域をオンライン変換で復号化するには、ALTER TABLESPACE
SQL文をDECRYPT
句とともに使用できます。
ALTER TABLESPACE
をFINISH
句とともに実行してプロセスを再開できます。
親トピック: 既存のオンライン表領域の暗号化変換
3.6.9.5 中断されたオンライン暗号化変換の終了
オンライン暗号化プロセスが中断された場合は、FINISH
句を使用してALTER TABLESPACE
文を再実行することで、変換を完了できます。
ALTER TABLESPACE
SQL文のFILE_NAME_CONVERT
句でのORA-28425: missing a valid FILE_NAME_CONVERT clause
エラーなどの可能性があります。中断されたプロセスの他の例としては、変換でデータ・ファイルをスキップした場合(Oracleデータベース・ライター(DBWR)プロセスがデータ・ファイルをオフラインにしたときにエラーがあった場合に発生する可能性がある)や、補助ファイルのための十分な領域がない場合などがあります。ALTER TABLESPACE
文をFINISH
句を指定して再実行しない場合であっても、表領域は操作可能である必要があります。
中断された暗号化プロセスに加えて、ステータスがENCRYPTING
の期間中に表領域の暗号化プロセスが失敗することがあります。この場合、表領域を復号化して元の状態に戻すか、ALTER TABLEPSPACE
のENCRYPTION ONLINE FINISH ENCRYPT
句を使用して暗号化を再開できます。
親トピック: 既存のオンライン表領域の暗号化変換
3.6.10 既存のデータベースの暗号化変換
オフラインおよびオンライン両方のデータベースを暗号化できます。
- 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM
、SYSAUX
、UNDO
およびTEMP
表領域を含むすべての表領域が暗号化されます。 - オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化する場合、Oracle管理の表領域には暗号化アルゴリズムを指定しません。 - オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
親トピック: 表領域およびデータベースの暗号化変換
3.6.10.1 既存のデータベースの暗号化変換について
データベース全体の暗号化変換では、Oracle提供のSYSTEM
、SYSAUX
、UNDO
およびTEMP
表領域を含むすべての表領域が暗号化されます。
次の点に注意してください。
-
Database Configuration Assistant (DBCA)を使用してデータベースを作成または構成する場合は、作成または構成プロセスの一部としてTDEウォレットをデータベースに作成できます。DBCAを使用してデータベースを削除すると、このデータベースにあるTDEウォレットも削除されます。重要: DBCAを使用してデータベースを削除する前に、ローカルTDEウォレットがある場合は、これらのウォレットを安全な場所にバックアップします。データベースがOracle Key Vaultを使用するように移行されている場合は、そのTDE暗号化キーはOracle Key Vaultサーバーに存在することに注意してください。Oracle Key Vaultをバックアップするのは、Oracle Key Vault管理者の責任です。
-
暗号化を実行するには、表領域暗号化変換のオフラインおよびオンライン機能を使用できます。
-
Oracle提供の表領域のどれかまたはすべてを、任意の順に暗号化できます。Oracle提供の表領域の暗号化は、ユーザー作成の表領域の暗号化に影響が及ぶことはありません。
-
Oracle提供の表領域を暗号化する際、Oracle Databaseはキーストアが閉じないようにします。
-
既存の一時表領域は暗号化できませんが、暗号化された一時表領域を作成し、その新しい暗号化された一時表領域をデフォルト一時表領域として使用するようデータベースを構成してから、古いクリアテキストの一時表領域を削除できます。
-
暗号化された表領域の機密データから生成されたメタデータ
UNDO
およびTEMP
は、すでに自動的に暗号化されています。そのため、UNDO
およびTEMP
の暗号化はオプションです。 -
データベース内のすべての表領域を暗号化するパフォーマンスの影響は、ワークロードおよびプラットフォームにより異なります。近年のCPUの多くには、内蔵のハードウェア・アクセラレーションが搭載されているため、パフォーマンスへの影響は最小限になります。
-
マルチテナント環境では、Oracle提供の表領域を含めた、プラガブル・データベース(PDB)内の表領域を暗号化できます。ただし、CDBルート内のキーストアは、PDBがキーストアを開けるように、常に開いている必要があります。キーストアが開いているかどうかのステータスは、
V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せて、確認できます。
親トピック: 既存のデータベースの暗号化変換
3.6.10.2 オフライン変換での既存のデータベースの暗号化
既存のデータベースをオフライン変換で暗号化する場合、Oracle管理の表領域には暗号化アルゴリズムを指定しません。
SYSTEM
、SYSAUX
およびUNDO
表領域に異なる暗号化アルゴリズムを使用(TDEマスター暗号化キーを変更)する場合は、オンライン変換を使用する必要があります。サポートされている暗号化アルゴリズムは、AES128
に加えて、AES192
とAES256
、およびARIA
、GOST
などのその他のアルゴリズムです。
親トピック: 既存のデータベースの暗号化変換
3.6.10.3 オンライン変換での既存のデータベースの暗号化
既存のデータベースをオンライン変換で暗号化するときには、暗号化アルゴリズムを指定しません。
ALTER TABLESPACE ENCRYPTION REKEY
SQL文を発行できます。
関連項目
親トピック: 既存のデータベースの暗号化変換
3.7 透過的データ暗号化のデータの動的ビューおよびデータ・ディクショナリ・ビュー
透過的データ暗号化(TDE)データに関する詳細情報を検索するために、一連の動的ビューおよびデータ・ディクショナリ・ビューを問い合せることができます。
表3-4に、これらの動的ビューおよびデータ・ディクショナリ・ビューを示します。
表3-4 透過的データ暗号化の関連ビュー
ビュー | 説明 |
---|---|
|
現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。 |
|
|
|
データベースにあるすべての暗号化列の暗号化情報が表示されます。 |
|
現在のユーザーのスキーマにある暗号化された表の列の暗号化情報が表示されます。 |
|
永続、一時、およびUNDO表領域を含むすべてのタイプの表領域についての表領域使用状況メトリックを示します |
|
様々な機能(クライアント)用のキーストアに格納された文字列(シークレット)のプロパティが一覧表示されます。 マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
現在のデータベースに使用されているデフォルトの暗号化キーについての情報を表示します。デフォルトは |
|
暗号化された表領域に関する情報が表示されます。 |
|
マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化されたキーに関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBのキーに関するこの情報が表示されます。 |
|
TDEのキーストアのステータスおよびキーストアの場所に関する情報が表示されます。 |
|
現在のPDBでサポートされている暗号化アルゴリズムを表示し、Oracle Recovery Manager (Oracle RMAN)によってユーザー要求アルゴリズムを検証するために使用されます |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。
親トピック: 透過的データ暗号化の構成