Oracle SecureFiles は Oracle 11g で導入され、従来のラージオブジェクトにはない多くの利点を備えています。Oracle SecureFile LOB は、同じデータのコピーを複数回保存する必要性をなくす重複排除手法であるインテリジェントデータ圧縮をサポートするほか、ラージオブジェクトを使用してパフォーマンスを向上させる他の多くの機能を備えています。これらの新機能の中で最も有用なものの 1 つが、オラクルの透過的データ暗号化であり、このたび拡張されて Oracle SecureFiles に追加されました。
Transparent Data Encryption が 1 つまたは複数の LOB フィールドで有効になっている場合、Oracle はデータ ファイル、バックアップ ファイル、および REDO ログ ファイルのブロック レベルで、フィールドの暗号化および復号化処理を自動的に実行します。有効にすると、LOB はフィールド単位でのみ暗号化を実行でき、このフィールド内のすべての LOB (利用可能なすべてのパーティションにわたって) が暗号化されます。アプリケーションやデータ・テーブルにアクセスするユーザは、透過的なデータ暗号化処理が行われていることに全く気付きません。ただし、従来のインポート/エクスポートツールや転送可能なテーブルスペースベースのエクスポート操作はTDEをサポートしていないため、暗号化されたフィールドを含むデータを移動する場合は、Data Pumpインポート/エクスポートツールを使用する必要があります。
TDEは以下の暗号化アルゴリズムをサポートしています:
3DES16 - 168ビットのキーを使用したトリプルデータ暗号化規格。
AES128 - 128ビットのキーを使用するAdvanced Encryption Standard。
AES192 - 192ビットのキーを使用するAdvanced Encryption Standard。これはデフォルトのアルゴリズムです。
AES256 - 256ビットのキーを使用するAdvanced Encryption Standard。
Transparent Data Encryption の使用を開始するには、まずセキュリティ管理者がウォレットを作成し、マスター・キーを設定する必要があります。他の Oracle デー タ ベース コ ン ポーネ ン ト と 共 有 さ れ る デ フ ォ ル ト デー タ ベース ウォ レ ッ ト を使用す る こ と も で き ますが、 TDE 専用の ス タ ン ド ア ロ ン ウォ レ ッ ト を作成す る こ と も で き ます。sqlnet.ora ファイルで ENCRYPTION_WALLET_LOCATION パラメータが設定されていない場合は、WALLET_LOCATION の値が使用されます。デフォルトのデータベース・ウォレットはORACLE_BASE/admin/DB_UNIQUE_NAME/walletにあります。
TDE 固有のウォレットを使用する場合は、ENCRYPTION_WALLET_LOCATION パラメータを使用して sqlnet.ora ファイルでウォレットの場所を指定する必要があります。マスター・パスワードはデータシート・パスワードとテーブルスペース暗号化キーの保護に使用され、外部セキュリティ・モジュールに格納されます。デフォルトでは、TDE はランダムなキーを生成します。また、暗号化専用の PKI 証明書から既存のキー・ペアを使用することもできます。
マスター暗号化キーを設定するには、以下のコマンドを使用します:
ALTER SYSTEM SET ENCRYPTION KEY ["certificate_ID"] IDENTIFIED BY "password";
certificate_ID - これは、Oracle ウォレットが保存している証明書の一意な識別子を含むオプションの文字列です。このパラメータは、PKI 秘密鍵をプライマリ暗号化鍵として使用する場合に使用できます。
password - セキュリティモジュールで使用しなければならないウォレットパスワードです。大文字と小文字は区別されます。
このデータベースは、文字/表領域を暗号化または復号化する前に、マスター暗号化キーをメモリにロードする必要があります。以下のALTER SYSTEMコマンドは明示的にウォレットを開きます:
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password"
password "値は、暗号化キーを作成するために使用されるパスワードです。このパスワード文字列は double に追加する必要があります。ウォレットが開かれた後、データベースインスタンスがシャットダウンされるか、ウォレットが明示的に閉じられるまで、ウォレットは開かれたままです:
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "password"
ウォレットを閉じると、すべての暗号化および復号化操作が無効になります。データベースインスタンスが再起動されるたびに、暗号化および復号化操作を再び有効にするためにウォレットを開く必要があります。ウォレットが作成されオープンされると、CREATE TABLE および ALTER TABLE コマンドを ENCRYPT 節で使用することができます。
非 LOB フィールドを暗号化するための透過的データ暗号化の構文は、Oracle SecureFiles で暗号化を有効にするための構文と同じです。Oracle SecureFile の LOB フィールドは NO SALT オプションをサポートしていません。Oracle SecureFile LOB フィールドは NO SALT オプションをサポートしていません。データ辞書ビュー USER_ENCRYPTED_COLUMNS を使用して、暗号化するフィールドとそのフィールドのステータスを決定できます。以下に ENCRYPT 節の例をいくつか示します:
CREATE TABLE tab_3DES
LOB(col1) STORE AS SECUREFILE(
CACHE
ノロギング
);
デフォルトの暗号化アルゴリズムとパスワードを使用して、Oracle SecureFile LOB フィールドを作成します:
CREATE TABLE tab_enc_pw
LOB(col1) STORE AS SECUREFILE(
CACHE
);
AES256を使用したLOB暗号化を有効にします:
ALTER TABLE tab_nocrypt MODIFY
;
暗号化キーを再生成して Oracle SecureFiles フィールドを変更します:
ALTER TABLE tab_3DES REKEY USING 'AES256';
LOB暗号化を無効にします。
LOB暗号化を無効にします:
ALTER TABLE tab_enc_pw MODIFY
;
オラクル・データベースに保存される大容量のオブジェクト・データは今後も増え続けますが、ストレージのコストは低下しています。医療記録、従業員データ、知的財産など、機密性の高いデータも多くあります。このような情報を暗号化できることは非常に貴重であり、将来的にセキュリティの実装に多くの費用と労力を投資する必要がなくなります。





