※ 本記事は2018年1月17日に公開されたものです。

データベースの暗号化を利用しようとしたとき、新しくシステムを構築する際には新規に暗号化表領域を作成してその表領域に表や索引を作成すればよいのですが、既存のシステムでは既に暗号化されていない表領域に表や索引などのデータが存在しています。この既存のデータを暗号化するEncryption Conversion機能が12cR2から提供されています。

Encryption ConversionにはOnlineとOfflineの2つのモードがあります

Online Encryption Conversionはデータベースを動かしたままで、通常の暗号化されていない表領域を暗号化表領域に変換する機能です。暗号化されていない表領域を暗号化しながら別の領域にコピーを作成し、コピー中の変更をコピーした暗号化したデータにも適用して、最後に暗号化した領域に切り替えるという動作となります。一度データを別の領域にコピーするため、暗号化したい表領域と同じサイズの空き領域が必要となります。また、データファイルがコピーされるため、データファイル名を変更する必要があります。
Online Encryption Conversionのコマンドは以下の通りです。

alter tablespace app1 encryption online using 'AES256' encrypt
file_name_convert=('app1.dbf','app1_enc.dbf');

「’AES256’」には暗号化アルゴリズムを指定します。「file_name_convert=(‘target.dbf’,’target_enc.dbf’)」では新しく作成するデータファイルの命名規則を文字列置換のパターンで指定します。
また、Online Encryption Conversion機能を利用して、格納データを暗号化している表領域暗号鍵や暗号化アルゴリズムを変更(REKEY)したり、表領域全体を復号(DECRYPT)したりすることもできます。

Offline Encryption Conversionは表領域もしくはデータファイルをOfflineにしてデータへの問い合わせができない状態で通常の暗号化されていない表領域を暗号化表領域に変換する機能です。Offlineモードでは表領域のデータを直接暗号化していくため、暗号化中にデータにアクセスはできませんが余分な領域が不要だというメリットがあります。また、利用できる暗号化アルゴリズムはAES128のみとなります。なお、Offline Ecnryption Conversionではデータが格納されているかどうかにかかわらずデータファイルの全体を暗号化します。そのためたとえ格納されているデータ量が少なくても、データファイルのサイズが大きい場合にはコマンドが完了するまでに想定外の時間がかかることがあります。かかる時間は暗号化のためのプロセッサの速度とディスクI/O性能に依存しますので、利用している環境で時間計測用に適当な大きすぎないサイズの表領域を作成し、その表領域に対してOffline Encryption Conversionを実施することでその環境での基準となる時間を計測することができます。基準となるサイズと時間が分かれば実際に暗号化したい表領域のサイズとなるように時間をかければ処理時間を推定できます。
Offline Encryption Conversionのコマンドは以下の通りです。

alter tablespace app1 encryption offline encrypt;
もしくは
alter database datafile '/opt/oracle/oradata/orcl/orclpdb/app1.dbf' encrypt;

Offline Encryption ConversionはALTER TABLESPACEで表領域全体を一度に、もしくはALTER DATABASE DATAFILEでデータファイルごとに実施することができます。なお、11gR2および12cR1へのバックポートはALTER DATABASE DATAFILEを利用したOffline Encryption Conversionのみで、ALTER TABLESPACEを利用したOffline Encryption Conversionは利用できませんのでご注意ください。
Offline Encryption Conversionは11gR2(11.2.0.4)および12cR1(12.1.0.2)に対してバックポートされています。パッチの適用は必要となりますが、既存の表領域を暗号化表領域に移行するコマンドを最新バージョンのデータベースでなくても利用することができます。パッチ番号などの詳細はOracle Supportのドキュメント「Enable Transparent Data Encryption (TDE) Using Fast Offline Conversion in 11.2.0.4  and 12.1.0.2 (ドキュメントID 2148746.1)」をご参照ください。なお、Offline Encryption Conversion機能を利用して暗号化した表領域は、Offline Encryption Conversion機能を利用して表領域全体を復号(DECRYPT)ことができます。さらに、12cR2であればOnline Encryption Conversionを利用することで、Offline Encryption Conversionを利用して暗号化した表領域の格納データを暗号化している表領域暗号化鍵や暗号化アルゴリズムを変更(REKEY)することができます。

Encryption Conversionを利用できないバージョンの場合でも、既存の表や索引などのオブジェクトを暗号化表領域に移動することで既存のアプリケーションの表を暗号化することができます。表の表領域を移動する方法としては、エクスポート/インポート、オフラインでの表の再定義(ALTER TABLE MOVE TABLESPACE)、オンラインでの表の再定義(DBMS_REDEFINITION)などがあります。ただし、やはり簡単なのはEncryption Conversion機能ですし、Encryption Conversionが利用できないバージョンは新規の修正パッチを作成するサポート期間が完了しています。暗号化を機に最新の脆弱性対策ができているサポート期間内であるバージョンにアップグレードすることをお勧めします。

「もくじ」にもどる