※ 本記事は2017年12月20日に公開されたものです。

暗号化を実施しようとしたときのの最もよく聞かれるのが性能への影響です。

透過的データ暗号化の表領域暗号化の性能への影響の指標は数%です。「Advanced Securityガイド」マニュアルにも以下の記載があります。

透過的データ暗号化の正確なパフォーマンス・テストの作成には、様々な変動要素が関係します。テスト環境、テスト・ケースまたはワークロード、計測メトリックまたは方法などにより、結果は変わります。オラクル社は、考えられるすべてのシナリオに当てはまる、パフォーマンス・オーバーヘッドの具体的なパーセンテージを保証することはできません。実際に、透過的データ暗号化の多くのお客様のパフォーマンス・テストでは1桁台前半のパーセンテージが示されますが、必ずそうなるわけではありません。オーバーヘッドがそれぞれ1パーセントおよび2パーセントである顧客事例が、Oracle Technology Networkの次のURLで公開されています。

http://streaming.oracle.com/ebn/podcasts/media/12740910_ColumbiaU_120312.mp3

ちなみに、最後のURLは残念ながら英語音声です。

まず、近年(と言っても5年以上経っています)のハードウェアの進化により暗号化処理をハードウェアのチップセット内で実施できるようになりました。たとえば、IntelのCPUにはAES-NIという命令セットがあり、この命令セットを利用することでデータベースの暗号化・復号の性能は7倍から10倍に向上しているという、Intelのホワイトペーパーがあります。

さらに、表領域暗号化ではディスクI/O時に暗号化・復号処理が実施されます。つまり、ディスクI/Oを伴わない処理では性能への影響はありません。つまりディスクI/Oを少なうするようにSQLがきちんとチューニングできている環境では表領域暗号化の性能への影響を少なくすることができます。ディスクI/Oを少なくするための一般的なチューニング方法には索引の利用があります。アプリケーションで暗号化すると索引が利用できなくなるケースもありますが、表領域暗号化では、表領域上のすべてのデータを暗号化できますので、暗号化していないときと変わらず索引を利用することができます。

表領域暗号化利用時のそのほかのチューニング方法も暗号化していないときと同様です。ディスクI/Oを減らすためにデータの圧縮機能(Advanced Compression)機能を利用できます。表領域暗号化とAdvanced Compressionを同時に利用している場合、データは圧縮後に暗号化されます。データを圧縮することでディスクI/Oを少なくすることができますが、ディスクI/Oが少なくなるため、結果的に暗号化・復号するデータ量も減り、性能への影響を小さくすることができます。

同様にバッファキャッシュを大きくして、ディスクI/Oを減らすことでも暗号化の性能への影響を小さくできます。

もちろん、実際のプロジェクトごとに見ていくと暗号化の導入により特定の処理が遅くなったという問題は発生することがあります。私自身も性能が劣化したというトラブル対応に立ち会ったことが昔ありますが、どのケースでも結果としては遅くなった処理のSTATSPACKやAWRによる性能レポート(SQL実行計画)をみると、索引は作成していたが利用せず毎回ディスクに読み込みをおこなっていたなど想定外のディスクI/Oが発生していまいた。統計情報やパラメータなどで索引をきちんと利用できるように通常のSQLチューニングするだけで暗号化をおこなっていても、チューニングをおこなう前よりも処理が速くなることも多いです。体感的にディスクI/Oは発生していないだろうという時間で終わっている処理でも、実際にはストレージサーバーのキャッシュを利用していたために実際のディスクI/Oは発生していないだけで、Oracle Databaseから見るとディスク読み込みをおこなう実行計画が選択されていたケースもあります。

暗号化・復号処理がディスクI/O時に発生することが分かってれば、暗号化をおこなう前にどのような処理で影響が出そうか確認することも容易です。大量のデータの読み込み、書き込みをおこなう特にバッチ処理を中心に影響を確認し、必要に応じてディスクI/Oが最小化できるようにSQLチューニングをおこなえばよいわけです。現行システムですべての処理が想定時間内で完了している場合でも、実際には想定外のディスクI/Oが発生している処理があるかもしれません。暗号化導入時には事前にディスクI/Oが発生している処理を性能レポートから割り出しておくことが重要です。

透過的データ暗号化機能の表領域暗号化は、2007年に出荷されたOracle Database 11gR1から提供され、セキュリティ向上、コンプライアンス要件適合のために国内外含めさまざまな業種で多数利用されています。また、Oracle Cloud上のOracle Databaseでは、SEを含めすべてのパッケージ(エディション)でこの暗号化機能が有効化されています。このように広く使われている理由として、アプリケーションを書き換えなくてよいという利便性のほかに、オンライン処理・バッチ処理ともに業務への影響がでるほどの性能劣化がないこともあげられます。

「暗号化すれば性能への影響がでる」ことは事実です。しかし、ハードウェアやソフトウェアの仕組みにより、性能への影響は最小限に抑えられています。「性能をとるか安全性をとるか」ではなく、「性能を担保したうえで安全性も確保する」ことが現在ではできます。

「もくじ」にもどる