Transparent Data Encryption for PostgreSQL Free Edition (TDE)をインストールしてみた!!

土曜日 , 6, 6月 2015 Leave a comment

『NEC、DB暗号化ソフトをOSS化』( http://www.itmedia.co.jp/enterprise/articles/1506/05/news074.html )という記事で紹介されていた、Transparent Data Encryption for PostgreSQL Free Edition (TDE)をインストールしてみました。

PostgreSQL環境を構築するのに、今回はソースからインストールしましたが、いくつかのライブラリをシンボリックリンクを貼ったりしているだけのようなので、たぶんパッケージからインストールした環境でも大丈夫なのではないかと思います。

PostgreSQLは、必要な環境が整っていれば、お約束のconfigure、make、make installと唱えるだけですんなりと完了します。TDEの環境も、GitHubのwikiで紹介されていた手順( https://github.com/nec-postgres/tdeforpg/wiki/Manual(JP) )を踏むだけで完了します。

ここから先、TDEのセットアップを行い、暗号鍵を設定するに少しハマりました。

wikiではpgcrypt Extensionが必要であることは記載されており事前に導入済みですが、postgresqlデータベースでTDEを使おうとすると問題が起きないのに、任意のデータベースで使おうとするとTDE側から見てどうもExtensionが存在していないように見えるらしくエラーが発生しました。(※2015/06/06 追記 Extensionの設定方法が間違っていただけでした。orz)

具体的には、TDEの暗号鍵を設定するところで下記のメッセージが表示されてコケてしまいます。

ERROR:  function pgp_sym_encrypt(text, text, unknown) does not exist

pgAdminなどのツールを使いながら調べれば、原因がすぐにわかるのかも知れませんが、急ごしらえのLinux環境でSELinuxのまま動かしてしまったので、外部からの接続がうまくいかないという…orz

データベースの作成、テーブルの作成、TDEのセットアップ、TDEの暗号鍵設定あたりには、順番などのコツがあるのかもしれません。

とりあえず、1時間程度で、環境を整え、postgresデータベースにプレーンテキストフィールドと拡張した暗号化フィールドだけの簡単なテーブルを定義し、そこにデータを流し込み、セッションが有効なうちは両方とも見えるけれど、セッションを終了するとプレーンテキスト側しか見えなくなる、というところまで確認できました。

TDE環境をmakeするあたりで気づいたのですが、これは件の記事で書かれているように「データベースをまるっと暗号化するもの」ではなく、「フィールドの暗号化を透過的に行えるもの」と捉えた方が良さそうです。(暗号化については、こちらの記事が詳しいです。 https://www.postgresql.jp/document/9.4/html/encryption-options.html )

アプリケーションから見たときTDEのセッションがどのように作用するのか、またパフォーマンスにどのような影響を与えるのか、引き続き試してみたいと思います。

スクリーンショット 2015 06 06 1 56 52

Please give us your valuable comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください