使用GCP AppEngine的app.yml从CI注入秘密

时间:2019-12-23 19:16:41

标签: google-app-engine google-cloud-platform continuous-integration

谢谢您的帮助!

我正在尝试创建一种简单但安全的方法来从命令行调用gcloud app deploy app.yml注入秘密。

我依靠应用程序运行时环境变量中存储的秘密信息,可以使用以下app.yml进行设置:

runtime: nodejs
env: flex

env_variables:
  SECRET_KEY: "passed-in-value"

例如,我希望能够做

SECRETKEY=${LOCAL_SECRET_VALUE} gcloud app deploy app.yml

或使用cli参数(如果有),但是看不到任何here

最终,我只需要一种简单的方法来注入机密,以便可以从本地计算机部署到测试环境,或者从github操作部署到生产环境。我可以从ci脚本中动态编写app.yml并注入局部环境变量,但是似乎必须有一种更规范的方法。

我可以使用以下语法在app.yml中设置环境变量。

如果可能的话,我想要一个可以与标准和Flex应用程序引擎一起使用的解决方案。

1 个答案:

答案 0 :(得分:2)

Google Cloud已在Beta Secret Manager中静默发布。这些API可用,但客户端库尚未提供。该服务将很快宣布,它将帮助您管理秘密。

原理很简单:在yaml文件和GIT中,您只需保存对机密的引用,例如mySecret#2,其中2是版本号,而mySecret是您的机密名称。

然后,对API进行简单的调用以获取对机密的访问权限

https://secretmanager.googleapis.com/v1beta1/projects/<myProject>/secrets/<MySecret>/versions/<Version>:access

必须用标头中的Bearer访问令牌来保护该呼叫。确保App Engine服务帐户具有required roles(默认服务帐户:YOUR_PROJECT_ID@appspot.gserviceaccount.com),至少为roles/ secretmanager.secretAccessor

注意:如果您在不提供显式版本的情况下请求密码,我不知道该库将如何实现。是会采用的第一个版本吗?最后一次?

目前,有很多手动开销(获取令牌,构建URL,管理错误等)。如果您可以等待几周,那么使用客户端库将使生活变得更加轻松!

相关问题