最高 クライアントまたはアプリケーションサーバーで暗号化を行う方法であるため、データベースはキーが何であるかを認識せず、データを復号化できません。クライアント/アプリサーバーが別のホスト上にある場合は、なおさらです。
データベースがデータを暗号化および復号化している場合、データベースと一緒にキーが盗まれる可能性があります。
pgcryptoのデータベース内暗号化機能を使用する場合は、アプリケーションにデータと一緒にキーを送信させることができます。これは、少なくともある程度役立ちます。ただし、役立つシステム管理者が積極的なステートメントロギングまたは自動プランダンプをオンにすると、キーがログに公開されるリスクがあります。最終的に、キーがデータベースマシンに送信される場合は、そうでない場合よりも脆弱になります。 。データベースマシンを制御する攻撃者は、ログ設定を変更したり、postgresqlバイナリを置き換えたり、トラフィックをスニッフィングしてキーとデータをこの方法でキャプチャしたりすることもできます。
appserverとdbが同じマシン上にあり、同じ役割によって管理されている場合、それらを分離することを心配する必要は少なく、pgcryptoを使用するのが賢明かもしれません。
いずれにせよ、塩漬けにすることを忘れないでください!