我目前正在向目前仅支持 MySQL 的部署工具添加 Postgres 支持。该工具动态提供和配置数据库等。
在 MySQL 中,我们可以使用 SQL 将用户限制为一组特定的 IP 地址,作为授权命令的一部分,如下所示:
GRANT ALL PRIVILEGES ON my_database_name.* TO 'my_user_name'@'192.168.101.%' IDENTIFIED BY 'my_secret_password'
GRANT ALL PRIVILEGES ON my_database_name.* TO 'my_user_name'@'internal.example.com' IDENTIFIED BY 'my_secret_password'
Run Code Online (Sandbox Code Playgroud)
在 Postgres 中,似乎设置类似安排的唯一方法是首先无限制地创建用户:
CREATE USER "my_user_name" WITH PASSWORD 'my_secret_password'
Run Code Online (Sandbox Code Playgroud)
我已经整理出如何以编程方式将此角色限制到特定数据库,但似乎通过主机限制 Postgres 用户的唯一方法是在 pg_hba.conf 文件中创建条目。
这是有问题的,因为没有文件系统访问权限的代理以编程方式创建了许多用户/主机。
看起来我们围绕这个的唯一三个选择是:
这似乎不太理想,让我怀疑我是否忽略了一个明显的解决方案。是否可以仅使用 SQL 命令通过 IP 地址限制 Postgres 角色?