web-dev-qa-db-ja.com

保存時のPostgreSQLデータベースの暗号化

保存中のPostgreSQLデータベースを暗号化するにはどうすればよいですか。

どうすればこれを達成できるかについての適切なドキュメントが見つかりませんでしたか?

12
K.Pil

データベース全体を暗号化する場合は、ファイルシステム暗号化を使用してください。おそらくトランザクションログとデータベースログも暗号化する必要があるため、これらが常駐するファイルシステムを暗号化するだけです。

いくつかのカラムを暗号化したいだけなら pgcrypto モジュールがこれを行う標準的な方法です。

9
Richard Huxton

また、Postgres用のEncryptionAtRestに関するドキュメントも見つかりませんでした。 EncrAtRestの詳細を学ぶためにここに到着した人は、この機能を提供するAWS RDSまたはMongoDB Enterpriseをチェックしてください。

私の返信は、「承認された」回答をフォローしている人への警告です。 「ファイルシステムの暗号化だけを使用する」と言っても、保存されているデータベースを暗号化する目的は無視されます。ファイルシステムを暗号化すると、ドライブのバックアップをコピーしたり、物理ドライブを盗んだりするのを防ぐことができます。他には何もありません。

ネットワーク上の攻撃者がマウントされたファイルシステムにアクセスしたため、OS、アプリケーションなどからアクセスできるようにすでに復号化されています。

4
Falieson

この場合、データベースを効率的に暗号化することは簡単な作業ではないため、脅威モデルは非常に重要です。これは、3つの異なるレイヤー(client-application、storage-device、data-base-itself)すべてのケースで、クライアントアプリケーションが侵害された場合、暗号化は役に立たない、自己データベース暗号化ソリューションであることに注意してください以下にリストされているように、最小の脅威モデルをカバーします。

  • 悪意のあるユーザーがストレージデバイスを盗み、データベースファイルを直接読み取ります。
  • 悪意のあるバックアップオペレーターがバックアップを取得します。
  • 保存データ(永続データ)の保護

データベース暗号化ソリューション1:

システムディスクの暗号化( cryptsetup / luks )...この場合、Postgresの設定を変更する必要はありません。これにより、clogとテキストログも暗号化されます(保存時)。 Googleクラウドを使用している場合VM このガイド が役立つ場合があります。

データベース暗号化ソリューション2:

PostgreSQL TDE (透過的データ暗号化)このpostgres機能は、データベース全体の保存時に透過的データ暗号化を実装します。例を示します ここ

データベース暗号化ソリューション3:

Pgcrypto は、すべてを暗号化するソリューションの代わりに、データベースの一部を暗号化するために使用できます。例を示します ここ

0
intika