pgBouncer是否支持客户端与服务端不同认证机制及特定场景可行性?
关于pgBouncer跨端认证机制的问题解答
1. pgBouncer是否支持客户端与服务端采用不同的认证机制?
是的,pgBouncer完全支持客户端到自身的认证,与自身到PostgreSQL服务端的认证采用不同机制。它的认证逻辑分层独立:客户端连接pgBouncer时遵循pgBouncer的客户端认证规则,pgBouncer作为客户端连接PostgreSQL时,则遵循PostgreSQL服务端的认证规则,两者互不干扰。
2. 客户端到pgBouncer(1.17.0)采用trust认证,pgBouncer到PostgreSQL(14)采用证书认证是否可行?
完全可行,以下是关键配置要点:
pgBouncer配置(pgbouncer.ini)
客户端认证设置:将
auth_type设为trust,允许客户端无需密码连接,同时配置监听地址确保目标客户端能访问:auth_type = trust listen_addr = 0.0.0.0 listen_port = 6432若需针对特定用户细化规则,可通过
auth_file(如userlist.txt)配置,格式为:"target_user" ""空密码配合
trust认证即可放行指定用户。后端PostgreSQL连接设置:在
[databases]段指定使用证书认证的连接字符串,包含SSL相关参数:[databases] target_db = host=pg_server_ip port=5432 dbname=target_db user=pg_service_user sslmode=verify-full sslrootcert=/etc/pgbouncer/root.crt sslcert=/etc/pgbouncer/pgbouncer_client.crt sslkey=/etc/pgbouncer/pgbouncer_client.key需替换为实际的数据库地址、证书路径及用户信息,
sslmode=verify-full确保严格验证证书有效性。
PostgreSQL服务端配置
- 在
postgresql.conf中开启SSL并指定根证书:ssl = on ssl_ca_file = '/etc/postgresql/14/main/root.crt' - 在
pg_hba.conf中添加允许pgBouncer通过证书认证的规则:
这条规则限制仅来自pgBouncer IP的连接,通过证书认证访问指定数据库和用户。hostssl target_db pg_service_user pgbouncer_ip/32 cert
内容的提问来源于stack exchange,提问作者Aaak
相关产品推荐
相关产品推荐

