谢谢您的帮助!
我正在尝试创建一种简单但安全的方法来从命令行调用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应用程序引擎一起使用的解决方案。
答案 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,管理错误等)。如果您可以等待几周,那么使用客户端库将使生活变得更加轻松!