Postgresのインストールにアクセスできないため、確認できません。
私はセキュリティ担当者であり、ログにプレーンテキストのパスワードが表示されています。
create user user1 with password 'PLAINTEXT PASSWORD'
DBAは、パスワードをログに記録せずにパスワードを変更または作成するにはどうすればよいですか?
私は this を見てきました。これは、パスワードのmd5ハッシュを使用できることを示していますが、ハッシュも平文です。もっと良い方法はありますか?
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ユーティリティを使用することができますコマンド。私はたまたま共有システム上にいなかったので、それは私には関係ありませんでした。)