使用postgres 14或15作为docker容器,将宿主机的一个端口绑定到容器的5432端口,在pg_hba.conf文件中进行如下配置
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
# host all all all scram-sha-256
host all test,prod samenet scram-sha-256
host all read_bi all scram-sha-256
将 postgres 容器与其他两个容器放在同一个 docker 网络中,这三个容器都有自己的静态 ip
我理解,通过这样的配置,我可以完成以下操作:我在此行中添加了一条注释,以禁用常规远程连接。
#托管所有所有所有 scram-sha-256
我允许测试和生产用户从同一台服务器(托管容器的主机)内部建立连接,以连接到 postgres,这些用户被使用 postgres 托管其数据库的其他容器使用,这些用户无法从服务器外部进行连接,例如,我无法使用此类用户从远程计算机使用 psql 进行连接
托管所有测试,产品相同网络 scram-sha-256
我允许 read_bi 用户从远程服务器连接到任何数据库,此类用户仅对特定数据库的表具有选择权限
主机全部 read_bi 全部 scram-sha-256
简而言之,通过这种配置,只有 read_bi 能够从外部机器连接,test 和 prod 能够从主机服务器中各自的容器内连接,但不能从远程机器连接,并且其他用户都无法从远程机器连接,对吗?
我在 pg_hba 中提出了以前的配置,但我不是专家,希望得到专家的意见