本連載では、データベースセキュリティの「考え方」と「必要な対策」をおさらいし、Oracle Databaseを軸にした「具体的な実装方法」や「Tips」を紹介していきます。今回は透過的データ暗号化で既存のアプリケーションのデータを暗号化する方法と、データベース外部に保存したデータを保護する方法、通信暗号化機能について紹介します。
新規システム構築時には新しい表領域を作成して、そこに新しい表を作成しデータを投入する方法で問題ありませんが、既存のデータベースを暗号化したいこともあります。そこで今回はまず、既存のデータベースを暗号化する方法を説明します。
既存のデータベースのデータを暗号化する方法は大きく分けて以下の2つです。なお、マスター鍵が構成できていることが前提となりますので、手元の環境で試す場合には前回のマスター鍵作成の手順までを完了させておいてください。
Encryption Conversionは、Oracle Database 12cR2で追加された機能で、コマンド1つで既存の表領域を暗号化表領域に移行できます。Encryption Conversion機能には、データにアクセスできる状態を維持し、業務を継続しつつ、表領域の暗号化を行う「Online Encryption Conversion」と、データには一時的にアクセスできなくなるものの、高速に暗号化できる「Offline Encryption Conversion」の2つがあります。
Online Encryption Conversion
既存の表領域をオンラインで暗号化表領域に移行する機能です。一時的に既存表領域の暗号化されたコピーが作成されるため、既存表領域と同じ空き領域が必要になります。ですが、移行処理の最後に短時間、ロックのタイミングでデータアクセスが待機するだけで、アプリケーションを停止することなく暗号化できます。また、Online Encryption Conversionを実施する際にはデータファイルの名前を変更する必要がありますので、バックアップやサイズ監視など一部の運用管理に影響する可能性があります。Online Encryption Conversionのコマンドは以下の通りです。
alter tablespace targettbs encryption online using 'AES256' encrypt file_name_convert=('target.dbf','target_enc.dbf');
「'AES256'」には暗号化アルゴリズムを指定します。「file_name_convert=('target.dbf','target_enc.dbf')」では、新しく作成するデータファイルの命名規則を文字列置換のパターンで指定します。ここでは、「target1.dbf」というファイルに含まれる文字列を「target1_enc.dbf」に変換して、新しいファイル名として利用します。なお、複数のデータファイルが存在する場合には「ファイル名パターン1, 置換する値1, ファイル名パターン2, 置換する値2, ……」というように複数の置換のパターンを指定することもできます。
また、Online Encryption Conversion機能を利用して、格納データを暗号化している表領域暗号鍵や暗号化アルゴリズムを変更(REKEY)したり、表領域全体を復号(DECRYPT)したりすることもできます。
Offline Encryption Conversion
既存の表領域をオフラインで暗号化表領域に移行する機能です。コマンド実行時には表領域をオフラインにする必要があるため、移行時は表領域内のデータへのアクセスはできなくなりますが、データファイルを直接更新するため、追加の空き領域は不要です。また、利用できる暗号化アルゴリズムもAES128固定となりますが、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のコマンドは以下の通りです。
alter tablespace targettbs encryption offline encrypt;
もしくは
alter database datafile '/opt/oracle/oradata/orcl/orclpdb/target1.dbf' encrypt;
Offline Encryption Conversionは、「ALTER TABLESPACE」で表領域全体を一度に、もしくは「ALTER DATABASE DATAFILE」でデータファイルことに個別、もしくは並列処理で実施することができます。なお、11gR2および12cR1へのバックポートは「ALTER DATABASE DATAFILE」を利用したOffline Encryption Conversionのみで、「ALTER TABLESPACE」を利用した場合は利用できませんのでご注意ください。
また、Offline Encryption Conversion機能を利用して暗号化した表領域は、この機能を利用して表領域全体を復号(DECRYPT)することができます。さらに、12cR2であれば、この機能を利用して暗号化した表領域の格納データを暗号化している表領域暗号化鍵や、暗号化アルゴリズムを変更(REKEY)することができます。
Online Encryption ConversionとOffline Encryption Conversionの機能比較は以下の通りです。
Encryption Conversionを利用できないバージョンの場合でも、既存の表や索引などのオブジェクトを暗号化表領域に移動することで、既存のアプリケーションの表を暗号化できます。表の表領域を移動する方法としては、エクスポート/インポート、オフラインでの表の再定義(「ALTER TABLE MOVE TABLESPACE」)、オンラインでの表の再定義(「DBMS_REDEFINITION」)などがあります。ただし、やはり簡単なのはEncryption Conversion機能ですし、この機能が利用できないバージョンは、新規の修正パッチを作成するサポート期間が完了しています。暗号化を機に、最新の脆弱(ぜいじゃく)性対策ができているサポート期間内であるバージョンにアップグレードすることをお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.