在Postgres中使用SQL脚本和环境变量安全地创建角色



如何安全地将密码传递到Postgres SQL脚本中以创建DB ROLE?

在自动化Postgres模式部署的开发过程中,我试图找到安全创建用户密码的方法,将其传递给部署脚本并将其存储在秘密管理器中,无论如何。

最难的部分是在SQL脚本中传递和使用环境变量。我找到的方法似乎很好,很安全。

使用openssl生成的密码:

export ROLE_PASSWORD=$(openssl rand -base64 12)

psql命令:

psql -v password_to_save=$ROLE_PASSWORD -a -h localhost -d postgres -U postgres -f test.sql
SQL脚本:
set ON_ERROR_STOP on
-- echo :password_to_save
CREATE ROLE dbuser WITH
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOINHERIT
NOREPLICATION
CONNECTION LIMIT -1
PASSWORD :'password_to_save';

结果密码一直安全到实现。