工作环境:Ubuntu 20.04.6 LTS,PostgreSQL 15,pgpool-II版本4.3.5
当前正在为客户端身份验证配置pgpool 2。我发现可以在/etc/pgpool/pool_passwd文件中添加加密的AES 256密码和用户,并且工作正常。这种设置的缺点是,每次在数据库中创建新用户或有人更新用户密码时,您都必须手动生成或更新pool_passwd文件(这不是长期可持续的),并可能导致错误/或用户投诉。
我想知道是否有任何可能性,就像它在pgBouncer技术:
将auth_user设置为pgbouncer,并在数据库函数中为以下用户创建:
CREATE FUNCTION public.lookup (
INOUT p_user name,
OUT p_password text
) RETURNS record
LANGUAGE sql SECURITY DEFINER SET search_path = pg_catalog AS
$$SELECT usename, passwd FROM pg_shadow WHERE usename = p_user$$;
根据我在文档中找到的信息,可以只在pool_hba.conf中设置身份验证。另一种我认为可以工作的方法是设置cron来解析操作系统上的临时文件的用户名和密码,并将scram-sha-256重新加密为pool_passwd中支持的AES 256。
有什么想法或经验吗?
1条答案
按热度按时间qc6wkl3g1#
据我所知,动态管理用户身份验证并不是Pgpool-II的内置功能,就像pgBouncer的数据库功能一样。当用户凭据更改时,传统方法需要手动更改
pool_passwd
文件,这可能非常耗时。您可以通过编写一个脚本来自动执行此过程,该脚本定期检查PostgreSQLpg_shadow
表中的用户更改并相应地修改pool_passwd
。为了保持Pgpool-II中的用户凭证和数据库同步,可以将此脚本作为cron作业执行。为了直接在PostgreSQL数据库中处理用户及其凭证,并利用其内置的身份验证功能,作为替代方案,您可以考虑使用LDAP或LDAP等外部身份验证系统。这将使用户管理和身份验证更简单、更动态。希望这对你有帮助,让我知道如果有什么