PostgreSQLでは、認証とアクセス制御によって、データベース内のデータは認可されていないデータベースユーザーによるアクセスから保護されます。しかし、データベースサーバの認証とアクセス制御を迂回する攻撃者に対しては、OSファイルは保護されません。
FUJITSU Enterprise PostgresではOSのファイル内のデータが暗号化されているため、たとえそのファイルやディスクが盗まれても、貴重な情報は保護されます。
データベースに格納するデータは、データファイルに書き出されるときに暗号化され、読み出されるときに復号されます。これはインスタンスによって自動的に行われるため、ユーザーやアプリケーションが意識することなく、キーの管理や暗号化/復号の処理を実行できます。これを透過的データ暗号化(TDE: Transparent Data Encryption)と呼びます。
TDEには次の特長があります。
各テーブル空間には、その中のすべてのデータを暗号化/復号するテーブル空間暗号化キーがあります。テーブル空間暗号化キーは、マスタ暗号化キーで暗号化されて保存されます。
マスタ暗号化キーは、データベースクラスタに1つだけ存在します。利用者が指定するパスフレーズに基づいて暗号化され、キーストアに保存されます。FUJITSU Enterprise Postgresは、ファイルベースのキーストアを提供します。パスフレーズを知らない攻撃者は、キーストアからマスタ暗号化キーを読み出すことはできません。
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を使用します。AESは2002年に米国連邦政府の標準として採用され、世界中で広く使われています。
Intel Xeonプロセッサの5600番台以降に搭載されたAES-NI(Advanced Encryption Standard New Instructions)を活用し、暗号化と復号のオーバヘッドを極小化します。これにより、従来は性能とセキュリティとのトレードオフのために最少限の暗号化対象を選別していた場面でも、アプリケーション全体のデータを暗号化できるようになります。
Intel社Webサイトの次のページで、AES-NIを備えたプロセッサの一覧を参照できます。
http://ark.intel.com/search/advanced/?s=t&AESTech=true
暗号化を指定する単位はテーブル空間です。暗号化テーブル空間内に作成されるテーブルとインデックス、一時テーブルと一時インデックスの全体が暗号化されます。利用者はどのテーブルや列を暗号化するかを考える必要はありません。
pgx_dmpallコマンド、およびpg_basebackupコマンドは、OSファイルをコピーすることによりバックアップデータを作成します。そのため、暗号化されたデータのバックアップは暗号化されたままです。バックアップ・メディアが盗まれても、情報は漏えいから保護されます。
暗号化されたテーブルとインデックスの更新で生成されるWALは、更新対象と同じセキュリティ強度で暗号化されます。大きな結合やソートを実行するときには、暗号化データは一時ファイルにも暗号化された形で書き出されます。
ストリーミングレプリケーションと透過的データ暗号化を組み合わせて使うことができます。プライマリサーバで暗号化されたデータとWALは、暗号化されたままスタンバイサーバに転送され、格納されます。
注意
以下については暗号化されません。
pg_dumpおよびpg_dumpallコマンドの出力ファイル
COPYコマンドの出力ファイル
LISTEN/NOTIFYコマンドでやりとりする通知イベントのペイロード