PostgreSQL -pgpool 2客户端身份验证

2vuwiymt  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

工作环境: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。
有什么想法或经验吗?

qc6wkl3g

qc6wkl3g1#

据我所知,动态管理用户身份验证并不是Pgpool-II的内置功能,就像pgBouncer的数据库功能一样。当用户凭据更改时,传统方法需要手动更改pool_passwd文件,这可能非常耗时。您可以通过编写一个脚本来自动执行此过程,该脚本定期检查PostgreSQL pg_shadow表中的用户更改并相应地修改pool_passwd。为了保持Pgpool-II中的用户凭证和数据库同步,可以将此脚本作为cron作业执行。为了直接在PostgreSQL数据库中处理用户及其凭证,并利用其内置的身份验证功能,作为替代方案,您可以考虑使用LDAP或LDAP等外部身份验证系统。这将使用户管理和身份验证更简单、更动态。
希望这对你有帮助,让我知道如果有什么

相关问题