以编程方式将机密附加到 credentials.yml.enc
Append secrets to credentials.yml.enc programmatically
有没有办法在 Rails 5.2 中以编程方式将机密添加到 config/credentials.yml.enc?
推送凭据。yml.enc 到存储库供内部使用可能没问题,但一旦其他人使用该应用程序,他们就需要在他们的环境中使用不同的秘密。与 Oauth2 凭据一样,每个实现都会有所不同。
运行 docker 中的应用程序(例如)将需要比平时更多的手动交互和 Docker 技术诀窍。在大多数情况下,只有在不太费力的情况下才会使用更安全的方法。
首先需要 运行 docker exec <app-name> -it /bin/bash
才能 运行 rails credentials:edit
.
能够以编程方式填充凭据文件会更好。
例如,可以提供一个临时凭证文件,如:
production:
postgresql:
username: 'admin'
password: 'very_insecure'
然后可能会有一个脚本将文件的内容添加到凭据文件,然后删除临时文件。
确保必须设置 RAILS_MASTER_KEY
环境变量(可以再次是将 master.key 文件的内容移动到变量中的脚本)以从中获利。
您可以通过 EDITOR
环境变量的一些技巧来做到这一点。
通常,您会使用 EDITOR=nano rails credentials:edit
以便 Rails 将 credentials.yml.enc
的(临时解密副本)传递给 nano
进行修改,结果re-encrypted 当 nano
终止时。
如果我们将 nano
替换为 cat
(EDITOR=cat rails credentials:edit
),Rails 会将(解密的)文件传递给 cat
,从而导致其内容待打印 on-screen。换句话说,Rails 实际上只是 运行 $EDITOR tempfile.name
.
因此,如果我们这样做:
EDITOR='echo "foo: bar" >> ' rails credentials:edit
...那么结果将是这样的:
echo "foo: bar" >> tempfile.name
tl;dr: 你可以滥用 EDITOR
来(间接地)做任何你想为普通 plain-text 文件做的事情。
有没有办法在 Rails 5.2 中以编程方式将机密添加到 config/credentials.yml.enc?
推送凭据。yml.enc 到存储库供内部使用可能没问题,但一旦其他人使用该应用程序,他们就需要在他们的环境中使用不同的秘密。与 Oauth2 凭据一样,每个实现都会有所不同。
运行 docker 中的应用程序(例如)将需要比平时更多的手动交互和 Docker 技术诀窍。在大多数情况下,只有在不太费力的情况下才会使用更安全的方法。
首先需要 运行 docker exec <app-name> -it /bin/bash
才能 运行 rails credentials:edit
.
能够以编程方式填充凭据文件会更好。 例如,可以提供一个临时凭证文件,如:
production:
postgresql:
username: 'admin'
password: 'very_insecure'
然后可能会有一个脚本将文件的内容添加到凭据文件,然后删除临时文件。
确保必须设置 RAILS_MASTER_KEY
环境变量(可以再次是将 master.key 文件的内容移动到变量中的脚本)以从中获利。
您可以通过 EDITOR
环境变量的一些技巧来做到这一点。
通常,您会使用 EDITOR=nano rails credentials:edit
以便 Rails 将 credentials.yml.enc
的(临时解密副本)传递给 nano
进行修改,结果re-encrypted 当 nano
终止时。
如果我们将 nano
替换为 cat
(EDITOR=cat rails credentials:edit
),Rails 会将(解密的)文件传递给 cat
,从而导致其内容待打印 on-screen。换句话说,Rails 实际上只是 运行 $EDITOR tempfile.name
.
因此,如果我们这样做:
EDITOR='echo "foo: bar" >> ' rails credentials:edit
...那么结果将是这样的:
echo "foo: bar" >> tempfile.name
tl;dr: 你可以滥用 EDITOR
来(间接地)做任何你想为普通 plain-text 文件做的事情。