2015年6月6日

PostgreSQLの透過的暗号化(TDE)モジュールを使ってみる

先日、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では、ユーザ定義のデータ型を作成することができますが、アプリケーションからそのデータ型に対して入出力する処理も自由に実装することができます。今回のモジュールは、その入出力の処理に暗号化機能を追加したものだと考えればよいでしょう。そのため、暗号化に対応したデータ型を使っている特定のカラムに対して、透過的に暗号化処理を行うことができます。

オリジナルのソースコードは以下から参照することができます。

2015年6月4日

PostgreSQLでFizzBuzzを書く

先日、久しぶりにネットでFizzBuzzネタを目にしたので、PostgreSQLでFizzBuzzする方法をご紹介しようと思います。

今回は小ネタエントリです。

■FizzBuzzとは


詳細はWikipediaを参照してください。 要は、1から100まで表示して、3で割り切れる時にFizz、5で割り切れる時にBuzz、3でも5でも割り切れる時にFizzBuzzと表示する、というプログラムを書くことです。

■1から100まで数字を表示する


まず、PostgreSQLで1から100までの数字を表示してみます。

PostgreSQLで連番を表示するには、generate_series()関数を使います。
snaga=> select * from generate_series(1,100);
 generate_series
-----------------
               1
               2
               3
               4
               5
               6
               7
(snip)
              95
              96
              97
              98
              99
             100
(100 rows)

snaga=>

2015年6月2日

Postgres Toolkit 0.2.1をリリースしました

Postgres Toolkit 0.2.1をリリースしました。

このリリースは0.2のマイナーバージョンアップ版です。

0.2.1での変更点は、
  • Python 2.7がデフォルトのRed Hat Enterprise Linux 7、CentOS 7およびUbuntu 14.04 LTSをサポート対象として追加。
  • ヘルプメッセージの修正。 (pt-index-usage, pt-set-tablespace, pt-table-usage)
になります。

詳細は以下のドキュメントとソースコードを参照してください。
マニュアルに記載されているネット経由のインストール方法でインストールすると、0.2.1がインストールされます。