相关文章推荐
爱听歌的刺猬  ·  python module for ...·  1 年前    · 
聪明的红酒  ·  json获取第一个key - ...·  1 年前    · 

随着密码学技术的发展,MD5哈希算法构造的密码越来越不安全,所以,PG顺应发展,从10版本开始支持了SCRAM-SHA-256加密算法,因为使用的新的哈希算法。使得在暴力破解的时候花费的代价更加昂贵。那么,接下来,在PG中看一下如何从MD5切换到SCRAM-SHA-256。
首先,太老的的驱动不支持SCRAM-SHA-256,都会报错,如JDBC,会报The authentication type 10 is not supported。那么就需要升级驱动。

接下来就是数据库服务端修改配置:

#修改postgresql.conf参数文件
password_encryption = scram-sha-256
#重新载入配置文件
pg_ctl reload -D $PGDATA 
SELECT pg_reload_conf();
#查看参数配置是否修改成功
SHOW password_encryption;
#重置用户密码
\password user_name
#修改pg_hba.conf验证方法,然后reload即可
host  all  all  0.0.0.0/0 md5
host  all  all  0.0.0.0/0 scram-sha-256
#通过\password user_name修改了hank用户密码
postgres=# select rolname,rolpassword from pg_authid where rolname in('hank','zabbix');
 rolname |                                                              rolpassword                                                              
---------+---------------------------------------------------------------------------------------------------------------------------------------
 zabbix  | md5435f13d666b53dd9b4b829e237213fd8
 hank    | SCRAM-SHA-256$4096:yqNGsct76W5ZjPvMxxjzRw==$NmR4QIuHRlhu+I/HP1TQ4OC6stmtgN6Oc7oZa76tKxQ=:kNOwGMU+tSbJ2QQiD1Hb/rCKX7/coQEdkeUjD9+pEhE=
#pg_hba.conf没有修改,但是同样可以通过密码登陆,这是pg的一个兼容性特性,即使没写SCRAM-SHA-256,可以自动识别密码为SCRAM-SHA-256加密的,然后验证通过,而且使用老的MD5加密的用户也可以正常登陆
host  all  all  0.0.0.0/0 md5
psql -h ******* -p 1921 -U hank
Password for user hank: 
psql (12.6)
Type "help" for help.
hank=> 
#如果修改pg_hba.conf为scram-sha-256,即使zabbix用户写对密码,也无法正常登陆,如下,只有通过scram-sha-256加密的hank用户可正常登陆,也可以查看视图pg_hba_file_rules
host  all  all  0.0.0.0/0 scram-sha-256
psql -h xxxxx -p 1921 -U zabbix
Password for user zabbix: 
psql: error: FATAL:  password authentication failed for user "zabbix"
 psql -h xxxxxx -p 1921 -U hank
Password for user hank: 
psql (12.6)
Type "help" for help.
hank=> 
#修改密码后,可正常登陆
postgres=# \password zabbix
Enter new password: 
Enter it again: 
postgres=# select rolname,rolpassword from pg_authid where rolname in('hank','zabbix');
 rolname |                                                              rolpassword                                                              
---------+---------------------------------------------------------------------------------------------------------------------------------------
 hank    | SCRAM-SHA-256$4096:yqNGsct76W5ZjPvMxxjzRw==$NmR4QIuHRlhu+I/HP1TQ4OC6stmtgN6Oc7oZa76tKxQ=:kNOwGMU+tSbJ2QQiD1Hb/rCKX7/coQEdkeUjD9+pEhE=
 zabbix  | SCRAM-SHA-256$4096:Q2LODw88k0a3G9cr36Crvw==$EhBkOVbaNIxpqZADeYGCQE6LIam/k+aqmdQqBuxJM28=:Xw+ySsSGidAdvfQ/98LL38NnK1wsT96sivwtJZ144vU=
(2 rows)
psql -h xxxxxxxx -p 1921 -U zabbix
Password for user zabbix: 
psql (12.6)
Type "help" for help.
zabbix=> 
                    随着密码学技术的发展,MD5哈希算法构造的密码越来越不安全,所以,PG顺应发展,从10版本开始支持了SCRAM-SHA-256加密算法,因为使用的新的哈希算法。使得在暴力破解的时候花费的代价更加昂贵。那么,接下来,在PG中看一下如何从MD5切换到SCRAM-SHA-256。首先,太老的的驱动不支持SCRAM-SHA-256,都会报错,如JDBC,会报The authentication type 10 is not supported。那么就需要升级驱动。接下来就是数据库服务端修改配置:#修改post
				
PostgreSQL 14中将默认的密码加密由原先的MD5修改成了scram-sha-256,这个从安全性的角度有了一定的提升。 之前我们也说过,MD5的方式如果别人获取了你密码md5值是会存在安全问题的。因为其存储的方式为md5(‘用户名+密码’)。 PG14之前: bill=# select rolname,rolpassword from pg_authid where rolname = 'bill'; rolname | rolpassword ---------+-
数据库是黑客眼中的“圣杯”,需要我们像对待“花朵”一样精心呵护它。本文主要介绍数据库保护的最佳实践。首先,从最常用的开源数据库PostgreSQL开始,我们将一一介绍诸位需要考虑的几个安全层级: PostgreSQL中网络层的安全 理想情况下,PostgreSQL服务器应当是完全隔离,不允许任何入站申请、SSH或psql的。然而,PostgreSQL没有对这类网闸设置提供开箱即用的支持。 我们最多也只能通过设置防火墙,锁定数据库所在节点的端口级访问来提升数据库服务器的安全性。默认情况下,Post.
在开发中,经常会使用类似MD5/ SHA-1/ SHA-2这样的hash算法来对数据进行处理,以防原始信息泄露,比如密码的存储。 SHA-2中的SHA256,安全性比MD5更高,因此很多数据库增加了对SHA256计算的支持。 比如从oracle12c起,数据库内原生提供了DBMS_CRYPTO包和STANDARD_HASH函数,可以用来进行sha256计算。在postgresql中,可以通过安装pgcrypto扩展来支持,安装命令也很简单。 create extension pgcrypto; 指定当一个连接匹配这个记录时,要使用的认证方法。下面对可能的选择做了概述,详见第 20.3 节。 trust 无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。详见第 20.4 节。 reject 无条件地拒绝连接。这有助于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的 2.scram-sha-256 ##查看加密方式 select name,setting from pg_settings where name =‘password_encryption’; ##查询相关参数 password_encryption= scram-sha-256 ##查看插件 select * from pg_available_extensions; ##密码相关的表信息 select usen PostgreSQL , 认证方法 , SCRAM-SHA-256 , scram , scram-sha-256-plus , SASL , Simple Authentication and Security Layer PostgreSQL的很多设计非常的工业化,比如开放了许多扩展接口(类型、操作符、索引、扫描、采样、数据库编程语言... 更新表数据后会占用更多的存储空间吗? https://doc.rockdata.net/zh-cn/faqs/storage/inplace-update/ 数据膨胀和垃圾清理的终结者 https://doc.rockdata.net/zh-cn/usage/why-redrock/ 举例了解PostgreSQL中表膨胀的原理 不及时回收清理的话,会多占用,也就是就是膨胀了 举例了解PostgreSQL中表膨胀的原理 pger01: 数据膨胀和垃圾清理的终结者 https://doc.rockdata.net/zh-cn/usage/why-redrock/ 举例了解PostgreSQL中表膨胀的原理 pger01: 更新表数据后会占用更多的存储空间吗? https://doc.rockdata.net/zh-cn/faqs/storage/inplace-update/ Postgresql中序列正确使用建议 programmer_ada: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/614064065。