【问题标题】:How to deal with secrets in app.yaml and not putting it in GIT?如何处理 app.yaml 中的秘密而不是将其放入 GIT?
【发布时间】:2019-12-18 09:19:19
【问题描述】:

Google Cloud Platform 并未在您的app.yaml 中描述如何处理环境变量。

从 GCP 和 Google App Engine 开始,我阅读了有关在 app.yaml 中设置我的配置变量的信息,这在某种程度上是有意义的,但我不想将我的密码/秘密/密钥/等放在我的 GIT 存储库中.

假设@Google 的工程师足够聪明,也不想这样,我猜最好的做法是将app.yaml 放入.gitignore

执行gcloud app deploy 会产生一个完美运行的应用程序。但这对我来说仍然是一个未完成的问题,我坚信应该有一篇文章描述最佳实践是什么。

有人可以确认一下吗:

  1. app.yaml 放入.gitignore,然后,
  2. app.yaml 中设置我的秘密,然后,
  3. 执行gcloud app deploy

要走的路吗?

【问题讨论】:

  • 嘿@PawelCzuczwara,你是对的。我发布了一个详细的答案。
  • 嗨@PawelCzuczwara 和@demir,感谢您的回答,但这正是让我陷入困境的文档以及提出这个问题的原因。它详细解释了如何设置app.yaml,但没有解释如何处理与版本管理相关的秘密

标签: ruby-on-rails environment-variables gcloud


【解决方案1】:

您应该使用 rails 环境变量。

Rails 5.2 之前

您可以使用dotenv

使用 Rails 5.2

您可以同时使用 dotenvrails 凭据

使用 rails 凭据:

  1. secret_key_base 变量添加到凭据文件。
  2. app.yaml 文件中使用 secret_key_base 变量:

    env_variables:
    
      SECRET_KEY_BASE: <% = Rails.application.credentials[:secret_key_base] %>
    

Google's configuration document

Rails credentials

编辑

Adding and updating environment variables 用于谷歌云平台

【讨论】:

  • 这确实是一个有效的解决方案。然而,这篇文章没有提到任何关于安全性的内容(例如,将 app.yaml 放入 .gitignore 以防止机密被推入版本控制),这让我感到困惑。执行gcloud app deploy 在部署日志中逐字发布ENV 变量。很难相信这是一个最佳实践,因为所有密码和秘密都是在那个时候公布的。在 Heroku 等其他 PAAS 服务中,有机会手动输入 ENV 变量,因此可以防止将您的秘密传播到互联网上。
  • Google Cloud Platform 是 secured on many layers,所以我不明白在什么情况下您可能会担心?
  • 如果您将app.yaml 推送到您的版本控制中,那么您的秘密就会公开。有人可能会说:那就不要发布它们(例如,将app.yaml 放入.gitignore),但部署应用程序时创建的日志仍然会发布这些秘密。
  • @double_u1 我添加了指向相关文档的链接。你能检查答案吗?
【解决方案2】:

我建议您不要将配置放到app.yaml 文件中,而是使用配置服务器spring boot example 之类的东西,这样您就可以轻松设置以从git、数据库或保险库中获取配置参数(用于敏感数据) .您也可以考虑将您的参数存储在appengine memcache 中的某个存储中,例如datastore

目前在我们的项目中,我们只是在部署之前的管道步骤之一中附加app.yamlenv_variables 部分。使用Teamcity 构建,Vault 用于存储秘密。 Teamcity 已内置 Vault 集成。但我想在不久的将来将其更改为使用配置服务器。

【讨论】:

  • 谢谢,这是一个非常好的解决方案!我仍然对 Google 似乎没有解决方案感到惊讶。
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2020-02-10
  • 2017-09-10
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
相关资源
最近更新 更多