0
点赞
收藏
分享

微信扫一扫

PG运维篇--访问控制配置文件

pg_hba.conf

作用

哪些主机可以连接数据库实例

哪个数据库用户可以使用它

允许这个用户使用哪些数据库

客户端使用什么连接方式和认证方式


格式类型

​# TYPE DATABASE USER ADDRESS METHOD​


TYPE

local   
local匹配使用Unix域套接字的连接

host
匹配使用 TCP/IP建立的连接,同时匹配SSL和非SSL连接
启用远程连接需要修改postgresql.conf中的listen_addresses参数

hostssl
匹配使用 TCP/IP建立的连接,必须是使用SSL加密的链接

hostnossl
与hostssl相反,只匹配不使用SSL的连接请求。

DATABASE

all
表示所有库

replication
表示允许流复制连接,并不是表示可以连接一个叫replication的库

USER

all
表示可以匹配所有用户


ADDRESS

允许哪个IP连接
***.***.1.10/32 表示只允许***.***.1.10这台主机连接,因为掩码是32表示
完全匹配此IP

***.***.1.0/24 表示只允许***.***.1.*的主机都能连接


METHOD

trust
无条件地允许连接。
允许任何可以与PostgreSQL数据库服务器连接的用户身份登入
不需要口令或者其他任何认证。

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

md5和password口令认证

ident
通常与UNIX域套接字的连接认证方式组合使用,
这样就可以以操作系统用户认证的方式连接到数据库中。
例如,在操作系统下创建了一个用户“postgres”,数据库中也有一个用户“postgres”,
设定ident认证方式后,在操作系统用户“postgres”下,可以直接连接到数据库中,
而不需要密码。

访问控制举例

如果一台机器只给数据库使用,而没有其他用途,则可以在pg_hba.conf中进行如下配置

local  all    all      trust

该命令行表示在这台机器上,任何操作系统的用户都可以以任何数据库用户身份(包括数据库超级用户)连接到数据库上而不需要密码。因为这台主机只供数据库使用,可以把不用的操作系统用户都禁止,以保证安全性。


如果想在数据库主机上使用密码验证,可以使用如下配置

local  all    all                      md5


如果想让其他主机的连接都使用md5密码验证,则使用如下配置

host   all    all      0.0.0.0/0       md5


如果数据库中有一个用户“osdba”,操作系统中也有一个用户“osdba”,在操作系统“osdba”用户下连接数据库不需要密码验证的设置方法如下

local  all    osdba                    ident


postgresql.conf

指定地址和端口

listen_addresses = '*'  #(关联配置文件pg_hba.conf)
#指定服务器在哪些 TCP/IP 地址上监听客户端连接。
值的形式是一个逗号分隔的主机名和/或数字 IP 地址列表。
特殊项*对应监听所有可用 IP 接口
0.0.0.0允许监听所有 IPv4 地址
并且::允许监听所有 IPv6 地址
如果列表为空,服务器将根本不会监听任何 IP 接口,在这种情况中只能使用 Unix 域套接字来连接它。
默认值是localhost,它只允许建立本地 TCP/IP "环回"连接。
这能帮助在不安全网络接口上阻止重复的恶意连接请求。
这个参数只能在服务器启动时设置。

port = 5866
#服务器监听的 TCP 端口;默认是 5866 。




举报

相关推荐

0 条评论