我需要将API密钥和其他敏感信息存储app.yaml为环境变量,以便在GAE上进行部署.这个问题是,如果我推app.yaml送到GitHub,这些信息将变为公开(不好).我不想将信息存储在数据存储区中,因为它不适合项目.相反,我想换掉.gitignore应用程序每个部署中列出的文件中的值.
这是我的app.yaml文件:
application: myapp
version: 3
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
handlers:
- url: /static
static_dir: static
- url: /.*
script: main.application
login: required
secure: always
# auth_fail_action: unauthorized
env_variables:
CLIENT_ID: ${CLIENT_ID}
CLIENT_SECRET: ${CLIENT_SECRET}
ORG: ${ORG}
ACCESS_TOKEN: ${ACCESS_TOKEN}
SESSION_SECRET: ${SESSION_SECRET}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有与此处提到的问题相同的问题:使用app.yaml在GAE中安全地存储环境变量 - 即:
"我需要在app.yaml中存储API密钥和其他敏感信息作为环境变量,以便在GAE上进行部署.问题在于,如果我将app.yaml推送到GitHub,这些信息就会公开(不好)."
另外我想查看以下方框:
我的研究得出以下结论:
如何在Google App Engine中设置环境变量/应用程序机密
来自GAE的很多好消息:如何部署各种秘密环境? 作者列出了三种解决方法及其不使用的原因:
然而,对我来说最好的解决方案来自如何使用云构建将环境变量传递给app.yaml
它允许我使用GAE灵活环境为nodejs提供以下部署流程:
这会检查我的所有盒子并且是一个相当简单的解决方案但是,这绝对不是一个流行的解决方案,所以我在这里遗漏了什么?
最重要的是有任何安全问题吗?
是否可以?这是我的app.yaml:
runtime: nodejs8
env_variables:
NODE_ENV: production
PORT: 8080
API_KEY: ${API_KEY}
Run Code Online (Sandbox Code Playgroud)
${API_KEY} 就像一个占位符。
当我运行API_KEY=xdfj212c gcloud app deploy app.yaml命令时,我想传递API_KEY=xdfj212c给app.yaml占位符并将其替换为
xdfj212c.
期待结果:
runtime: nodejs8
env_variables:
NODE_ENV: production
PORT: 8080
API_KEY: xdfj212c
Run Code Online (Sandbox Code Playgroud)
或者,在我跑完之后
export API_KEY=xdfj212c
gcloud app deploy
我想要同样的行为。
这对谷歌应用引擎部署工作流程有意义吗?
我知道你可以声明env_variables在app.yaml中所描述的app.yaml文件。但是,app.yaml在部署时是否可以将本地环境中的环境变量包括在内。
作为我要完成的事情的一个例子
# in app.yaml
runtime: python27
api_version:1
threadsafe: true
service: {{ $AN_ENVIRONMENT_VARIABLE }}
Run Code Online (Sandbox Code Playgroud)