首页 > 解决方案 > PostgreSQL - 外部数据包装器用户映射密码

问题描述

我正在使用 PostgreSQL 数据库和postgres_fdw扩展来查询外部数据。

CREATE EXTENSION postgres_fdw;

CREATE SERVER foreign_fake_database
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (host '....', port '5432', dbname 'fake_database');

当我创建用户映射来查询这个外部数据库时,我必须清楚地写下用户名和密码:

CREATE USER MAPPING FOR fake_user SERVER foreign_fake_database
    OPTIONS ("user" 'fake_user', password 'fake_password');

由于明显的安全原因,这种方法对我来说似乎很脆弱,所以我正在寻找用户的反馈。

保持良好安全级别并且不将密码存储在明文中的最佳做法是什么?我可以加密这个密码吗?有多个用户,可以使用同一个用户连接吗?它不会使系统超载或产生冲突吗?

标签: postgresql

解决方案


从性能的角度来看,不同用户映射到远程服务器上的相同或不同用户都没有关系,这纯粹是出于安全考虑。

没有办法隐藏或加密密码,但是您可以使用密码文件将密码存储在服务器上,或者使用根本不需要密码的身份验证方法,例如证书身份验证(然后您可以使用sslkeyand sslcertin用户映射)。

请注意,您必须在用户映射上设置password_requiredfalse以允许非超级用户在用户映射中没有显式密码的情况下进行连接。此选项是在 PostgreSQL v13 中引入的。


推荐阅读