先日、NECさんからPostgreSQLの暗号化モジュール「Transparent Data Encryption for PostgreSQL Free Edition」がGPLv3ライセンスのOSSとしてリリースされました。
多くの方がご存じの通り、データベースのセキュリティは、近年非常に重要なトピックの一つになっています。
PostgreSQLには、以前からpgcryptoと呼ばれるモジュールが提供されていましたが、これはあくまでも暗号化を実現するSQL関数を提供するレベルで、実際に使おうとするとアプリケーションから明示的に呼び出す必要があるなど、使いこなすには煩雑なモジュールでした。(私も昔のプロジェクトで使っていたことがあります)
今回NECさんからリリースされた暗号化モジュールは、この(主にアプリケーションから見た)煩雑さを解消する「透過的暗号化(TDE)」と呼ばれるテクノロジー領域です。
私自身も以前から非常に興味を持っていた領域ですので、公開されたOSS版のコードを試しに使ってみました。
■「Transparent Data Encryption for PostgreSQL Free Edition」とは何か?
「今回リリースされたモジュールはつまり何なのか?」という質問に対してダイレクトかつシンプルに答えると、「暗号化をサポートしたPostgreSQLのユーザ定義のデータ型、ユーザ定義関数、およびサポートスクリプト」となるかと思います。
PostgreSQLでは、ユーザ定義のデータ型を作成することができますが、アプリケーションからそのデータ型に対して入出力する処理も自由に実装することができます。今回のモジュールは、その入出力の処理に暗号化機能を追加したものだと考えればよいでしょう。そのため、暗号化に対応したデータ型を使っている特定のカラムに対して、透過的に暗号化処理を行うことができます。
オリジナルのソースコードは以下から参照することができます。