当前位置: 首页 > 知识库问答 >
问题:

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

刘运浩
2023-03-14

问题是如何设置应用程序机密,使其在应用程序中可用。yml

在heroku上,我只是简单地为dyno设置了环境变量,并将其访问为:

server:
  port: ${PORT}
security:
  user:
    password: ${USERPASSWORD}

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  instance:
    hostname: localhost
    securePortEnabled: true
  password: ${EUREKAPASSWORD}

不幸的是,我不知道如何将这些值注入我的*. yml文件。

编辑:

还有一件更重要的事情需要补充。我正在使用maven appengineplugin通过CI管道部署我的应用程序,所以我不可能推送app。yaml文件到应用程序引擎

共有3个答案

糜俊彦
2023-03-14

最好和安全的方法是使用GCP KMS或一些第三方机密管理器产品,如vault。

GCP KMS

  1. 我们需要使用具有加密和解密权限(角色)的服务帐户来加密凭据(机密)文件
  2. 将加密的凭证文件上载到GCS
  3. 从GCS获取加密凭证,并在运行时在应用程序代码中对其进行解密和html" target="_blank">解析(例如解析为普通java对象)

数据存储

是的。我们可以将凭据/机密环境变量存储到数据存储中,并在应用程序代码中的运行时获取它们。

赞成的意见:

  1. 简单

欺骗:

  1. 安全性不如KMS好

GCE元数据

我曾经使用GCE元数据服务器来存储我的秘密环境变量。

赞成的意见:

>

  • 它支持GAE、GCE、GKE。

    非常简单。我们只需要发送HTTP请求到http://metadata.google.internal/computeMetadata/v1/endpoint来获取我们的自定义元数据(秘密环境变量)。

    欺骗:

    >

  • 去年,GCE元数据不支持云功能。(运行时:nodejs10)。我无法从云函数中的GCE元数据获取我的自定义环境变量。但是可以获取内置的元数据,比如projectId

    安全性不如KMS好。

    configmap和secrets(仅适用于GKE)

    可以进行简单的base64加密。使用难度中等。安全性不如KMS。

    另一种黑客方式

    我还在这里为这个问题创建了一个帖子:如何将系统环境变量传递给app.yaml?

    是的,Linux脚本方式可以做任何事情。但我不喜欢这种黑客方式。

  • 酆英达
    2023-03-14

    谷歌也有一个关于如何存储加密机密的教程。https://cloud.google.com/kms/docs/store-secrets

    TLDR:一个单独的存储桶来存储加密的秘密,实例在需要时下载它,使用Google KMS(https://cloud.google.com/kms/)解密并在之后删除。

    黄宏旷
    2023-03-14

    如果你想存储应用程序在运行时可用的秘密,将它们保存在数据存储中不是个坏主意。我知道很多应用程序都能做到这一点。

    这是Khan Academy使用的一个应用程序,它是在数据存储中存储秘密凭据的一个很好的例子。它是Python格式的,但您可以了解大致情况。请注意,在第一次管理员登录时,它会提示存储机密。

     类似资料:
    • 问题内容: 我需要在python脚本中设置一些环境变量,并且我希望从python调用的所有其他脚本(shell脚本)(将是子进程)来查看设置的环境变量。该值为数字。 如果这样做,它会抱怨说1必须是字符串。我也想知道一旦设置它,如何在python(在脚本的后半部分)中读取环境变量。 问题答案: 你可能需要考虑其他方面的代码健壮性; 当你将整数值的变量存储为环境变量时,请尝试 然后为了进行检索,请考虑

    • 问题内容: 如何从内部设置一些环境变量以与类似命令一起使用? 这是我目前所拥有的: 我想在启动脚本中设置环境变量(例如),同时仍然能够仅通过一个命令来启动应用程序。 问题答案: 在脚本命令中设置环境变量: 然后在您的应用中使用。 注意:确保它可以跨平台工作。如果只关心Mac / Linux,则可以忽略它。

    • 问题内容: 我已经开始在Django项目中工作,我想设置一些环境变量,而不必手动设置它们或将bash文件作为源。 我想设置以下变量: 我已经读过这篇文章,但这并不能解决我想要的问题。另外,我尝试在Preferences- > Build,Execution,Deployment- > Console- > Python Console / Django Console中设置环境变量,但是它设置了解

    • 问题内容: 我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或向其中添加自定义变量? 问题答案: 要在jupyter笔记本中设置env变量,只需使用魔术命令或,例如或。(单独使用以打印当前的环境变量。) 请参阅:http : //ipython.readthedocs.io/en/stable/interactive/magics.html

    • 问题内容: 我想在Glassfish 2.1版中部署当前已在Tomcat中部署的应用程序。 在Tomcat server.xml中,我在应用程序使用的server.xml中定义了一个env变量 如何在Glassfish 2.1中设置此变量。我知道版本3中有一个 asenv.conf 文件,但是在2.1中找不到类似的东西。 问题答案: 启动服务器,登录管理控制台,导航到JVM选项,并添加-D参数,然

    • 我在使用appium运行java mobile automation测试用例时遇到了这个错误 处理命令时发生未知的服务器端错误。原始错误:packageAndLaunchActivityFromManifest失败。原始错误:找不到aapt请用Android SDK根目录路径设置ANDROID_HOME环境变量。(警告:服务器未提供任何stacktrace信息) 配置: IntelliJ IDE-