プレーンテキストのパスワードなどの機密情報をログから非表示にするにはどうすればよいですか?


10

Postgresのインストールにアクセスできないため、確認できません。

私はセキュリティ担当者であり、ログにプレーンテキストのパスワードが表示されています。

create user user1 with password 'PLAINTEXT PASSWORD'

DBAは、パスワードをログに記録せずにパスワードを変更または作成するにはどうすればよいですか?

私が見てきた、このパスワードのMD5ハッシュを使用できる状態を、が、その後ハッシュは平文でもあります。もっと良い方法はありますか?


1
DBAを信頼できる場合は(強制できないため)、DBAにの\passwordコマンドを使用するように伝えますpsql
dezso

回答:


11

log_statementがに設定されているようですall

log_statementALTER 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関数はパラメーターとして暗号鍵を受け取ります。


3

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ユーティリティを使用したい場合があります。コマンド。たまたま私は共有システム上にいないので、それは私には関係ありませんでした。)


1
とても良い。私が特に強調しておきたいことの1つは、パスワードを平文で設定してはならないということです。
dezso

2
はい、私はこれを検討し、質問で述べました。それでも私の要件には不十分です。
シュローダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.