回答:
log_statement
がに設定されているようですall
。
log_statement
がALTER USER
/ をキャプチャする値に設定されている間、パスワードがログに表示されないようにしたい場合は、パスワードをALTER ROLE
変更するときにそれを上書きする必要があります。例えば
BEGIN;
SET LOCAL log_statement = 'none';
ALTER USER ... SET PASSWORD ...;
COMMIT;
これを行うには、スーパーユーザーである必要があります。通常のユーザーはロギングルールを上書きできません。
PostgreSQLがステートメント(または関数)への一部のパラメータのフラグ付けをセキュリティの影響を受けやすいものとしてサポートし、ユーザーがそれらをログなどpg_stat_statements
でマスクすることを要求できるようにすると便利ですpg_stat_activity
。現在、そのような機能はありませんが、パッチはようこそ。本当に興味がある場合は、実際のコードを書く前にpgsql-hackersに投稿して、アドバイスやコメントを得ることができます。代わりに、契約開発を行う人に話します。
一般に、PostgreSQLはログを機密情報として扱うことを想定しています。
ロギングが重大なセキュリティ問題である他の領域があります。たとえば、一部のpgcrypto
関数はパラメーターとして暗号鍵を受け取ります。
Postgres 9.4では、プレーンテキストのパスワードがログに表示されないようにするため、現在受け入れられている回答が機能しませんでした。
代わりに私のために働いたのは、ローカルでパスワードハッシュを生成することでした:
$ username='some_user'; dbpass='some_pass'; echo -n "${dbpass}${username}" | md5sum | awk '{print "md5" $1}'
md5dcca63c0632e24746a19448231cac29c
次にそれを挿入します:
ALTER USER some_user WITH UNENCRYPTED PASSWORD 'md5dcca63c0632e24746a19448231cac29c';
(セキュリティ上の注意:上記を生成する場所によっては、シェルがその履歴にログを記録しないようにしたい場合や、共有システムでパスワードを要求するのではなく、実際にパスワードをに含める* nixユーティリティを使用したい場合があります。コマンド。たまたま私は共有システム上にいないので、それは私には関係ありませんでした。)
\password
コマンドを使用するように伝えますpsql
。