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

磐维数据库安全管理篇(一):访问控制

原创 言笑 2024-08-21
2083

概述

在磐维数据库中,允许哪些IP访问数据库服务器是由pg_hba.conf文件来控制的,该文件名翻译过来叫“基于主机的认证”(hba:host-based authentication),本文将围绕该文件的功能、配置进行介绍。

pg_hba.conf文件

在初始化一个数据目录后,会在数据目录生成一个默认的pg_hba.conf文件,该文件以#开头的属于注释行,无需关注其影响。pg_hba.conf每一行配置一条认证规则,该规则由5个字段组成:

连接类型   数据库名   用户名   ip地址(范围)   认证方法

  1. 连接类型:
  • local:表示允许数据库安装用户在服务器本地通过Unix域套接字(不加-h参数)进行连接
    image.png
  • host:可以通过TCP/IP进行连接,包括ssl和非ssl连接(常用)
  • hostssl:可以通过TCP/IP进行连接,仅包括ssl连接(不常用)
  • hostnossl:可以通过TCP/IP进行连接,仅包括非ssl连接(不常用)

  1. 数据库名:
  • database_name:表示允许连接到指定的单个database
  • all:表示允许连接到所有database,对任意连接的database都不拦截
  • replication:表示允许流复制连接。注意:replication不被上面的all包括,这里仅作为远程流复制必须的设置项

  1. 用户名
  • username:表示允许此user连接到数据库
  • all:表示所有user都可以连接到数据库,对任意发起连接的user都不拦截

  1. ip地址(范围)
  • 完全匹配ip:如192.168.1.10/32,当掩码位数为32时,只放行ip为192.168.1.10的客户端发起的连接
  • 范围匹配ip:当掩码位数小于32时,如192.168.1.0/24,放行同网段的所有ip:192.168.1.1、192.168.1.11、192.168.1.200等

  1. 认证方法
  • trust:免密连接
  • reject:拒绝连接(黑名单)
  • md5:客户端提供一个md5加密的密码口令进行认证
  • password:客户端提供一个不加密的明文密码口令进行认证,由于安全风险,谨慎使用!
  • sha256:客户端提供一个sh256加密的密码口令进行认证,相比于md5,sha256加密后的密码更复杂、更安全
  • ident:服务器会通过ident服务器检查客户端操作系统用户身份,并和数据库同名用户进行匹配,成功匹配后可以免密登录(postgresql数据库可以免密,但是磐维数据库基于安全考虑仍然需要输入密码
  • peer:允许客户端特定的操作系统用户免密连接到数据库同名用户(postgresql数据库可以免密,但是磐维数据库基于安全考虑仍然需要输入密码

trust认证

因为trust认证无需密码,所以可能会导致普通的操作系统用户连接到数据库从而引起安全问题,为了防止trust带来风险,trust认证一般会与local的连接方式进行组合使用,并对Unix域套接字的文件权限进行控制,相关参数有:

  • unix_socket_permissions:Unix域套接字文件权限,一般为0700
  • unix_socket_group:Unix域套接字文件属组,默认为空,即文件属主的默认属组
  • unix_socket_directory:Unix域套接字文件路径,可以设定到其他用户没有权限的路径,从而保证其他用户无法通过免密连接

image.png
image.png
当trust与host认证组合使用时,通过TCP/IP的方式导致客户端用户都可以实现免密,从而带来风险,所以在磐维数据库中无法通过trust来实现远程连接免密(即使配置了也不生效):
image.png
image.png

既然trust认证无法配置远程连接免密,那能否配置服务器本地的其他操作系统用户免密登录呢?不能!
image.png

peer认证

peer认证允许客户端的特定操作系统用户连接到数据库同名用户:
image.png
image.png
image.png

md5、sha256认证

该方式一般用作远程认证使用,常常配合host连接方式,需要输入密码,该密码会通过md5/sha256加密传输到服务端,并与数据库存储的用户密码进行对比,如果匹配说明密码正确。
在数据库中,所有的用户密码都被加密存储,有三种加密模式:md5、sha256、md5和sha256混合加密,具体的加密方式通过参数password_encryption_type控制,测试验证不同加密模式下用户u1的加密密码存储情况:

取值 说明 测试
0 md5加密 image.png
1 混合加密 image.png
2 sha256加密 image.png
  • 当数据库的用户密码是混合加密时,认证方式可以是md5 or sha256
  • 当数据库的用户密码是sha256加密时,认证方式只能是sha256,如果是md5会报错密码错误!
  • 当数据库的用户密码是md5加密时,认证方式可以是md5 or sha256

image.png
image.png
image.png

总结

磐维数据库除了数据库初始用户可以通过本地免密方式连接到数据库,其他用户(无论是本地还是远程)无法实现免密登录。业务通过远程连接时需要配置pg_hba.conf文件,其中连接方式一般使用host,认证方式使用sha256,因为sha256无论是安全性还是通用性都强于md5。

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

评论