git - 在用于实时部署的公共(public)仓库中 stash 凭据

标签 git github heroku netlify

在 GitHub 等公共(public)存储库中 stash 凭据(例如 API key 或数据库凭据)的最佳做法是什么?我的首选解决方案是拥有一个存储凭据的配置文件,然后添加一个 gitignore 文件以在推送期间不包含该配置文件。

需要注意的是,每次推送都会使用此存储库进行部署,例如Netlify 或 Heroku。所以 Netlify/Heroku 网站从 repo 推送中在线。在这种情况下,如果有 API 调用或数据库请求,则凭证需要位于公共(public)存储库中,因为这是“生产文件夹”。

我听说过 Travis CI,它可以在 GitHub 推送后构建,但我没有深入研究它。从公共(public)存储库部署时,其他项目如何使用其凭据?

最佳答案

通常,人们将 secret 传递给他们的代码的方式是通过环境,这被认为是最佳实践。原因如下:

  • 环境中的 secret 永远不会写入磁盘,因此意外发现或泄露的风险要小得多。
  • 环境中的 secret 仅对具有相同用户 ID 的其他进程可见,这在部署到硬件时很有用。

如果您的凭据足够小,您可以使用您正在使用的任何提供商的 secret 存储或环境存储。所有主要的 CI 提供商都有这个,我希望大多数主要的托管站点也有;我知道 Heroku 有。诸如 必须 为文件的 SSH key 之类的东西可以从环境写入磁盘,最好是写入清理过的临时目录。

如果您要部署到自己的基础架构,通常您会为此目的使用一些加密的 secret 存储。保险柜是一种常见的。

如果您需要用于开发的凭据,您可以构建您的代码,以便在没有设置变量的情况下有一个安全的默认值(如硬编码短语 secret)供开发使用,或者您可以在开发和测试代码中提供一组回退。一些项目也使用 .env 文件,尽管这需要一些人不想安装的额外代码。

如果您有无法存储在 secret 存储中的大量凭据,您可以 encrypt them and store the passphrase in the secret store .

关于git - 在用于实时部署的公共(public)仓库中 stash 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64519443/

相关文章:

git - 需要帮助来理解 merge 冲突示例

GIt - 当我已经修改代码时如何创建和切换到分支?

visual-studio-2010 - 如何将本地存储库推送到远程存储库?

java - Heroku 上的 JSP - "Unable to compile class for JSP"

尝试在heroku上运行时出现Python错误

git - 如何仅从 git 子模块克隆一个文件夹?

github - 在 GitHub 自述文件中将副本添加到剪贴板按钮

python - 当项目中任何位置的 python 文件(.py)发生更改时,如何运行 github 操作测试?

macos - 在 Heroku 中设置 Symfony 开发环境

node.js - 如何使用 Jenkinsfile 执行 Node.JS API 测试用例