举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > PostgreSQL 口令认证

PostgreSQL 口令认证

2023-04-28 17:20

 PostgreSQL 口令认证

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

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 USERALTER ROLE管理,例如CREATE ROLE foo WITH LOGIN PASSWORD "secret"或者psqlpassword命令。如果没有为一个用户设置口令,那么存储的口令为空并且对该用户的口令认证总会失败。

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

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


阅读全文
以上是名动网为你收集整理的 PostgreSQL 口令认证全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL 文件位置

    PostgreSQL 文件位置

    2023-06-13

    除了已经提到过的postgresql.conf文件之外,PostgreSQL还使用另外两个手工编辑的配置文件,它们控制客户端认证(其使用在第20章...

  •  PostgreSQL 日志传送后备服务器

    PostgreSQL 日志传送后备服务器

    2023-06-22

    26.2.1. 规划26.2.2. 后备服务器操作26.2.3. 为后备服务器准备主控机26.2.4. 建立一个后备服务器26.2.5. 流复制26.2.6. 复制槽26...

  •  PostgreSQL 可靠性和预写式日志

    PostgreSQL 可靠性和预写式日志

    2023-05-12

    目录29.1. 可靠性29.2. 预写式日志(WAL)29.3. 异步提交29.4. WAL配置29.5. WAL内部本章解释预写式日志如何用于获得有效的、可...

  •  PostgreSQL 什么时候会用JIT

    PostgreSQL 什么时候会用JIT

    2023-03-31

    JIT编译主要可以让长时间运行的CPU密集型的查询受益。对于短查询,执行JIT编译增加的开销常常比它节省的时间还要多。为了判断是...

  •  PostgreSQL 测试覆盖检查

    PostgreSQL 测试覆盖检查

    2023-06-03

    PostgreSQL 源代码可以使用覆盖测试指令编译,因此可以检查哪些部分的代码被回归测试或任何其他测试套件所覆盖。当前使用 GCC 编...

© 2024 名动网 mdwl.vip 版权所有 联系我们