シークレットストレージは、暗号メカニズムを使用する場合の一般的な問題です。
pgcryptoはキーストレージを提供しません。必要な場所にキーを自由に保存し、可能な限り保護することができます。
同じDBAによって管理されている場合、キーを別のデータベースに保存しても、DBAが同じ方法でアクセスする可能性があるため、セキュリティはそれほど高くありません。
理想的には、クエリを作成するために、キーを安全なボールトに保存し、アプリケーションに要求します。リクエストがselect * from pg_stat_activity
を介して実行されている間も、DBAからは表示されます。 。
set session my.vars.cryptokey = 'secret';
を使用して、SQLセッション全体で使用するためのキーを設定できます。 次に、次の構文でクエリに使用します:current_setting('my.vars.cryptokey')::text
アプリケーションの観点から(ほぼ)透過的であるために、PostgreSQLルールはsecure_column
の翻訳に役立つ場合があります セッションに保存されたキーを使用して関数を復号化するための呼び出し。挿入するには、事前挿入トリガーが必要です。