随着密码学技术的发展,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
postgres=
rolname | rolpassword
zabbix | md5435f13d666b53dd9b4b829e237213fd8
hank | SCRAM-SHA-256$4096:yqNGsct76W5ZjPvMxxjzRw==$NmR4QIuHRlhu+I/HP1TQ4OC6stmtgN6Oc7oZa76tKxQ=:kNOwGMU+tSbJ2QQiD1Hb/rCKX7/coQEdkeUjD9+pEhE=
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=>
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=
Enter new password:
Enter it again:
postgres=
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的很多设计非常的工业化,比如开放了许多扩展接口(类型、操作符、索引、扫描、采样、数据库编程语言...
举例了解PostgreSQL中表膨胀的原理
举例了解PostgreSQL中表膨胀的原理
pger01:
举例了解PostgreSQL中表膨胀的原理
pger01:
Postgresql中序列正确使用建议
programmer_ada: