PostgreSQL - pgpool2 客户端身份验证

问题描述 投票:0回答:1

环境:Ubuntu 20.04.6 LTS、PostgreSQL 15、pgpool-II 版本 4.3.5

当前正在配置 pgpool2 以进行客户端身份验证。我发现可以在 /etc/pgpool/pool_passwd 文件中添加加密的 AES256 密码和用户,并且工作正常。这种设置的缺点是,每次在数据库中创建新用户或有人更新用户密码时(这不能长期持续),您都必须手动生成或更新 pool_passwd 文件,并且可能导致错误/或用户投诉.

我想知道是否有像 pgBouncer 技术那样的可能性:

将 auth_user 设置为 pgbouncer 并在数据库函数中创建这样的用户:

创建函数 public.lookup ( INOUT p_用户名, OUT p_密码文本 ) 退货记录 语言 sql 安全定义器设置 search_path = pg_catalog AS $$SELECT 用户名,密码 FROM pg_shadow WHERE 用户名 = p_user$$;

根据我在文档中找到的内容,可以仅在 pool_hba.conf 中设置身份验证。 我认为可行的另一种方法是设置 cron 来解析操作系统上的用户名、密码到临时文件,并将 scram-sha-256 重新加密为 pool_passwd 支持的 AES256。

请问有什么想法或经验吗?

postgresql password-encryption pgpool
1个回答
0
投票

据我所知,动态管理用户身份验证不是Pgpool-II的内置功能,就像pgBouncer的数据库功能一样。当用户凭据更改时,传统方法需要手动更改

pool_passwd
文件,这可能非常耗时。您可以通过编写一个脚本来自动执行此过程,该脚本定期检查 PostgreSQL
pg_shadow
表中的用户更改并相应地修改
pool_passwd
。为了保持 Pgpool-II 中的用户凭据和数据库同步,此脚本可以作为 cron 作业执行。要直接在 PostgreSQL 数据库中处理用户及其凭据并利用其内置身份验证功能,作为替代方案,您可能会考虑 LDAP 或 Kerberos 等外部身份验证系统。这将使用户管理和身份验证更简单、更动态。

希望这有帮助,如果有什么请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.