相关疑难解决方法(0)

使用app.yaml在GAE中安全地存储环境变量

我需要将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)

有任何想法吗?

python google-app-engine environment-variables python-2.7

78
推荐指数
7
解决办法
3万
查看次数

通过使用gsutil构建器在构建期间获取app.yaml来保护GAE env变量?

我有与此处提到的问题相同的问题:使用app.yaml在GAE中安全地存储环境变量 - 即:

"我需要在app.yaml中存储API密钥和其他敏感信息作为环境变量,以便在GAE上进行部署.问题在于,如果我将app.yaml推送到GitHub,这些信息就会公开(不好)."

另外我想查看以下方框:

  • 防止供应商锁定(尽可能多)以及将dockerfile带到别处的能力.
  • 使用GitHub轻松部署.我希望推动一个触发构建的主人.
  • 独立开发人员或小团队的最小设置或适当的工作量和工作流程.

我的研究得出以下结论:

使用app.yaml在GAE中安全地存储环境变量

如何在Google App Engine中设置环境变量/应用程序机密

GAE:如何部署各种秘密环境?

appengine和OS环境变量

如何使用云构建将环境变量传递给app.yaml

来自GAE的很多好消息:如何部署各种秘密环境? 作者列出了三种解决方法及其不使用的原因:

  • 使用Google KMS - 允许我们将加密的秘密直接放入项目中,但它要求我们在我们的应用程序中放置自定义代码来解密它们.它在本地,登台和生产之间创建了不同的环境管理.由于复杂性,它增加了错误的风险.
  • 在Google Datastore中存储机密 - 我试过了,我创建了一个帮助程序,在proccess.ENV中搜索env变量,然后在缓存中搜索,最后在Datastore中搜索.但是像KMS一样,它会增加复杂性.
  • 将秘密存储在JSON文件中并放入Google云端存储:再次,它需要通过检查env变量的帮助程序加载env变量,然后加载文件等...

然而,对我来说最好的解决方案来自如何使用云构建将环境变量传递给app.yaml

它允许我使用GAE灵活环境为nodejs提供以下部署流程:

  1. 合并到我的Github主分支会触发云构建
  2. 我的cloudbuild.yaml中的第一步使用gsutil构建器来源我的app.yaml文件,因为app.yaml不在源代码管理中
  3. 我的app.yaml指向我的运行时的dockerfile并且有我的env变量

这会检查我的所有盒子并且是一个相当简单的解决方案但是,这绝对不是一个流行的解决方案,所以我在这里遗漏了什么?

最重要的是有任何安全问题吗?

google-app-engine gsutil

11
推荐指数
1
解决办法
522
查看次数

如何将系统环境变量传递给 app.yaml?

是否可以?这是我的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)

或者,在我跑完之后

  1. export API_KEY=xdfj212c

  2. gcloud app deploy

我想要同样的行为。

这对谷歌应用引擎部署工作流程有意义吗?

google-app-engine google-cloud-platform

8
推荐指数
1
解决办法
665
查看次数

有没有办法在Google App Engine的app.yaml中导入环境变量?

我知道你可以声明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)

google-app-engine

5
推荐指数
2
解决办法
1483
查看次数