暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AntDB-S用户操作指南(1):客户端认证

关耳 2023-09-27
238


身份验证是数据库服务器建立客户端身份的过程,确定是否允许客户端应用程序(或运行客户端应用程序的用户)与所请求的数据库用户名连接。

可以基于(客户端)主机地址,数据库和用户来选择用于认证特定客户端连接的方法。

客户端身份验证由pg_hba.conf配置文件控制,存储在数据库的数据目录中。

pg_hba.conf文档中的记录格式如下:

连接类型 数据库名称 用户名 客户端IP地址范围 身份验证方法

每条记录指定一种连接类型、一个客户端 IP 地址范围(如果和连接类型相关)、一个数据库名、一个用户名以及对匹配这些参数的连接使用的认证方法。第一条匹配连接类型、客户端地址、连接请求的数据库和用户名的记录将被用于执行认证。如果选择了一条记录而且认证失败,那么将不再考虑后面的记录。如果没有匹配的记录,那么访问将被拒绝。

连接类型:

  • local : 匹配使用Unix域套接字的连接尝试。
  • host : 匹配使用TCP/IP进行的连接尝试,host记录匹配SSL或非SSL连接尝试。
  • hostssl : 匹配使用TCP/IP进行的连接尝试,仅限使用SSL加密进行连接时。
  • hostnossl : 仅匹配通过TCP/IP进行的不使用SSL的连接尝试
  • database : 记录匹配的数据库名称。all指定匹配所有数据库。可以通过用逗号分隔来提供多个数据库名称。
  • user : 匹配的数据库用户名。用逗号分隔来提供多个用户名.
  • address : 匹配的客户端计算机地址。可包括主机名或IP地址范围。 0.0.0.0/0表示所有IPv4地址,::0/0表示所有IPv6地址。

METHOD :记录匹配时要使用的身份验证方法。

  • trust : 允许无条件连接。允许所有连接,无需密码和其他身份验证。
  • reject : 无条件拒绝连接。
  • scram-sha-256 : 执行SCRAM-SHA-256身份验证以验证用户的密码。
  • MD5 : 执行SCRAM-SHA-256或MD5身份验证以验证用户的密码。
  • password : 要求客户端提供未加密的密码以进行身份验证。网络明文传送,不安全。
  • gss : 使用GSSAPI对用户进行身份验证。这仅适用于TCP/IP连接.
  • ident : 与客户端的ident服务器获取客户端主机的用户名。并检查它是否与请求的数据库用户名匹配。Ident身份验证只能用于TCP/IP连接。
  • peer : 从操作系统获取主机名,仅适用于本地连接
  • cert : 使用SSL客户端证书进行身份验证。
  • pam : 使用操作系统提供的可插入身份验证模块(PAM)服务进行身份验证。

举例说明:

  1. 在pg_hba.conf文件中添加如下规则,则只允许来自IP地址为10.20.16.214的应用连接本系统的所有数据库和用户,并且不需要密码:

host all all 10.20.16.214 32 trust

如果是其它IP来连接,就会认证失败,报错如下:

  1. 配置如下,则允许来自10.21.10.145的应用连接到‘abc’用户:

host all abc 10.21.10.145 32 trust

连接成功:

  1. 配置如下,则对于来自10.21.10.145的应用连接到postgres库abc用户,全部拒绝。

host postgres abc 10.21.10.145 32 reject

  1. 连接报错如下:
  2. md5认证
  3. 在pg_hba文件中,配置md5认证如下,method配置md5

host all all 10.20.16.0/24 md5

查询密码加密算法,由password_encryption参数的值指定。当在CREATE ROLE或者ALTER ROLE中指定了口令时,这个参数决定用于加密该口令的算法。默认值是md5,它会将口令存为一个MD5哈希(on也会被接受,它是md5的别名)。将这个参数设置为scram-sha-256将使用SCRAM-SHA-256来加密口令。

postgres=# SELECT name,setting,source,enumvals FROM pg_settings WHERE name = 'password_encryption';

name | setting | source | enumvals

---------------------+---------+---------+---------------------

password_encryption | md5 | default | {md5,scram-sha-256}

(1 row)

  1. 创建用户,设置密码,查询密码,可以看到密码已经加密成了MD5格式。
  2. 图片包含 文本

描述已自动生成
  3. 5、ssl认证
  4. 编译参数需要加—with-openssl。

修改postgresql.conf,把ssl设置为on,默认是off

ssl = on

查看ssl证书文件:

postgres=# show ssl_cert_file ;

ssl_cert_file

---------------

server.crt

(1 row)

postgres=# show ssl_key_file;

ssl_key_file

--------------

server.key

(1 row)

postgres=# show ssl;

ssl

-----

on

(1 row)

  1. 将ssl的认证文件复制到数据目录下。
  2. 修改hba文件

hostssl all all 10.20.16.0/24 md5

重启,使参数生效。

登录

文本

描述已自动生成

关于AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论