db: postgresql 11

auth-method
指定当一个连接匹配这个记录时,要使用的认证方法。下面对可能的选择做了概述,详见第 20.3 节。

trust
无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。详见第 20.4 节。

reject
无条件地拒绝连接。这有助于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。

scram-sha-256
执行SCRAM-SHA-256认证来验证用户的口令。详见第 20.5 节。

md5
执行SCRAM-SHA-256或MD5认证来验证用户的口令。详见第 20.5 节。

password
要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式。详见第 20.5 节。

gss
用 GSSAPI 认证用户。只对 TCP/IP 连接可用。详见第 20.6 节。

sspi
用 SSPI 来认证用户。只在 Windows 上可用。详见第 20.7 节。

ident
通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。详见第 20.8 节。

peer
从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。详见第 20.9 节。

ldap
使用LDAP服务器认证。详见第 20.10 节。

radius
用 RADIUS 服务器认证。详见第 20.11 节。

cert
使用 SSL 客户端证书认证。详见第 20.12 节。

pam
使用操作系统提供的可插入认证模块服务(PAM)认证。详见第 20.13 节。

bsd
使用由操作系统提供的 BSD 认证服务进行认证。详见第 20.14 节。

==================================================================

20.5. 口令认证
有几种基于口令的认证方法。这些方法的过程类似,但是区别在于用户口令如何被存放在服务器上以及客户端提供的口令如何被通过连接发送。

scram-sha-256
方法scram-sha-256按照RFC 7677中的描述执行SCRAM-SHA-256认证。它使用的是一种挑战-响应的方案,可以防止在不可信连接上对口令的嗅探并且支持在服务器上以一种加密哈希的方式存放口令,因此被认为是安全的。

这是当前提供的方法中最安全的一种,但是旧的客户端库不支持这种方法。

md5
方法md5使用一种自定义的安全性较低的挑战-响应机制。它能防止口令嗅探并且防止口令在服务器上以明文存储,但是无法保护攻击者想办法从服务器上窃取了口令哈希的情况。此外,现在认为MD5哈希算法对于确定攻击已经不再安全。

md5方法不能与db_user_namespace特性一起使用。

为了简化从md5方法到较新的SCRAM方法的转变,如果在pg_hba.conf中指定了md5但是用户在服务器上的口令是为SCRAM(见下文)加密的,则将自动选择基于SCRAM的认证。

password
方法password以明文形式发送口令,因此它对于口令“嗅探”攻击很脆弱。如果可能应该尽量避免使用它。不过,如果连接被SSL加密保护着,那么可以安全地使用password(不过如果依靠SSL,SSL证书认证可能是更好的选择)。

PostgreSQL数据库口令独立于操作系统用户口令。每个数据库用户的口令被存储在pg_authid系统目录中。口令可以用 SQL 命令CREATE USER和ALTER ROLE管理,例如CREATE ROLE foo WITH LOGIN PASSWORD 'secret’或者psql的\password命令。如果没有为一个用户设置口令,那么存储的口令为空并且对该用户的口令认证总会失败。

不同的基于口令的认证方法的可用性取决于用户的口令在服务器上是如何被加密(或者更准确地说是哈希)的。这由设置口令时的配置参数password_encryption控制。如果口令使用scram-sha-256设置加密,那么它可以被用于认证方法scram-sha-256和password(但后一种情况中口令将以明文传输)。如上所释,在这种情况下,指定的认证方法md5将自动切换到使用scram-sha-256方法。如果口令使用md5设置加密,那么它仅能用于md5和password认证方法说明(同样,后一种情况中口令以明文传输)。(之前的PostgreSQL发行版支持在服务器上存储明文口令。现在已经不可能了)。要检查当前存储的口令哈希,可以参考系统目录pg_authid。

要把现有的安装从md5升级到scram-sha-256,可以在确保所有在用的客户端已经足以支持SCRAM之后,在postgresql.conf中设置password_encryption = ‘scram-sha-256’,然后让所有用户设置新口令并且在pg_hba.conf中将认证方法说明改为scram-sha-256.

参考:
http://postgres.cn/docs/11/auth-pg-hba-conf.html
http://postgres.cn/docs/11/auth-password.html

pg_hba.conf 中 md5 和 scram-sha-256 的区别相关推荐

  1. Postgres pg_hba.conf文件

    什么是pg_hba文件? HBA全称是host-based authentication(基于主机的认证).在initdb初始化数据目录时,它会在PG数据目录下安装一个默认的pg_hba.conf文件 ...

  2. PostgreSQL远程数据库连接 PostgreSQL pg_hba.conf 文件简析

    原文连接1:http://blog.csdn.net/zhouxuguang236/article/details/8217487 原文连接2:http://www.cnblogs.com/hilov ...

  3. 连接docker中postgresql数据库出现Connection matched pg_hba.conf line 99: “host all all all md5“

    最近跑在docker里的go服务总是莫名其妙的突然连不上postgres数据库,postgres数据库也是跑在docker里,看了下日志 Connection matched pg_hba.conf ...

  4. PostgreSQL中的pg_hba.conf

    PostgreSQL中的pg_hba.conf 环境:PG 13 -bash-4.2$ pwd /var/lib/pgsql/13/data -bash-4.2$ more pg_hba.conf # ...

  5. 关于postgre中的pg_hba.conf 文件

    关于postgre中的pg_hba.conf 文件 客户端认证是由一个配置文件控制的,通常其文件名是 pg_hba.conf,存放在数据库集群的数据目录里. (HBA 的意思是 host-based ...

  6. postgresql的配置文件中找不到postgresql.conf和pg_hba.conf

    前言:这两天给我们的服务器上面装了一个postgresql10.3-2,配置远程连接的时候发现找不到postgresql.conf和pg_hba.conf两个文件,反而有postgresql.conf ...

  7. 从pg_hba.conf文件谈谈postgresql的连接认证

    最近一直在弄postgresql的东西,搭建postgresql数据库集群环境什么的.操作数据库少不得要从远程主机访问数据库环境,例如数据库管理员的远程管理数据库,远程的客户存取数据库文件. 而在po ...

  8. PostgreSQL pg_hba.conf 文件简析

    点击上方"蓝字" 关注我们,享更多干货! pg_hba.conf文件存放在数据库集群的数据目录里. HBA 的意思是 host-based authentication:基于主机的 ...

  9. PostgreSQL的pg_hba.conf文件讲解

    pg_hba.conf为PostgreSQL的访问策略配置文件,默认位于/var/lib/pgsql/10/data/目录(PostgreSQL10). 该配置文件有5个参数,分别为:TYPE(主机类 ...

最新文章

  1. ADO.NET知识学习总结
  2. 在Unix/Linux上令(java)JVM支持中文输出
  3. Left join与简单多表查询
  4. CDH Hadoop 基于CM方式半在线安装步骤详解
  5. 分布式事务最终一致看这篇“大白话”的实践
  6. wine最小化游戏后无法恢复的问题
  7. 十字链表计算矩阵乘积 c语言,求用十字链表实现矩阵相加算法(C语言)急!!!...
  8. 第51课 拍手游戏--2021.09.19
  9. python svm 决策方程_python – 使用scikit-learn线性SVM提取决策边界
  10. hdu1290献给杭电五十周年校庆的礼物
  11. 互联网分层架构的本质
  12. 2017 年,最热开源静态网站生成器 TOP 20 揭晓!
  13. 基于Netty的RPC架构学习笔记(五):netty线程模型源码分析(二)
  14. groovy语法基础
  15. go日志库log/zap/logrus
  16. Python 四大主流 Web 编程框架
  17. thirteen day(冒泡排序')
  18. 原创:oracle PL/SQL编程基础 下lt;十二gt;
  19. 人工智能免遥控 暴风65英寸人工智能电视X5 ECHO评测
  20. excel 批量替换换行符

热门文章

  1. 【推荐系统论文精读系列】(二)--Factorization Machines
  2. 字体设计:拉丁字母字体书写方法分类
  3. 《UniDAC 基础》 【菜头】 翻译 (全)
  4. LGBM函数及参数详解
  5. 协议基础:SMTP:使用Telnet学习SMTP协议
  6. 防骗指南-披着交友恋爱的外衣,诱骗受害者赌博转钱
  7. 虚拟机能ping通宿主机但是ping不通百度
  8. 【记一次】电脑可以ping通百度,但是浏览器无法访问
  9. 「C++简单实现斗地主」机关算尽的地主,却低估了我的实力
  10. 【题目解析】2019年第十六届中国研究生数学建模竞赛B题 --天文导航中的星图识别+