Answers:
听起来好像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
。