【问题标题】:is it safe to store third party api keys in google cloud environment variables? Or Not?将第三方 api 密钥存储在谷歌云环境变量中是否安全?或不?
【发布时间】:2021-07-24 04:59:03
【问题描述】:

我不确定我是否误解了某些内容,或者 Firebase 文档是否自相矛盾。

这里似乎建议将 api 密钥存储在 env 变量中: https://firebase.google.com/docs/functions/config-env 例如,要存储“某些服务”的客户端 ID 和 API 密钥,您可以运行: firebase 函数:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

但这里似乎说永远不要这样做: https://firebase.google.com/support/guides/security-checklist#cloud_function_safety 云功能安全 切勿将敏感信息放入 Cloud Function 的环境变量中 通常在自托管 Node.js 应用程序中,您使用环境变量来包含敏感信息,例如私钥。不要在 Cloud Functions 中执行此操作。

【问题讨论】:

  • 在谷歌云环境变量中存储第三方 api 密钥是安全的。
  • 但 firebase 文档似乎说不是? firebase.google.com/support/guides/…
  • 我认为两个链接是不同的(我认为不确定),但我刚刚发现“当您在 Google Cloud Platform (GCP) 应用程序中使用 API 密钥时,请注意确保它们的安全。.. . 与其将 API 密钥嵌入到应用程序中,不如将它们存储在环境变量中或应用程序源代码树之外的文件中。”复制自此线程support.google.com/googleapi/answer/…
  • 感谢您。我认为链接也不同,但很难确定。我认为会使用秘密管理器以防万一。它似乎比在 env 变量中以纯文本形式存储更安全。
  • 很高兴为您提供帮助 :)

标签: firebase google-cloud-functions


【解决方案1】:

正确答案不止一个。通常,以纯文本形式存储关键/机密数据是一个坏主意。最好使用专门的服务来存储秘密,例如secret manager

但是,您可以想象这些用例:

  • 您的部署是自动的,没有人可以访问您的 Cloud Functions 参数(和 env var) -> 即使在 Cloud Functions env var 中以纯文本形式保存您的秘密
  • 您的机密存储在机密管理器中,但所有团队成员(以及更多)都具有机密管理器访问者角色,每个人都可以以纯文本形式浏览和查看机密。 -> 即使您使用秘密管理器,您的 IAM 角色策略也会破坏秘密的安全性和机密性,它对所有人都是公开的!

从全局考虑安全性。有最佳实践,但如果您只关注一个主题,您可能会在旁边制造更大的漏洞!

【讨论】:

  • "您的部署是自动的,没有人可以访问您的 Cloud Functions 参数(和 env vars)-> 即使在 Cloud Functions env vars 中以纯文本形式保存您的秘密也是如此”
  • 这就是我想知道的。我从 firebase 文档中给出的第一个链接似乎表明情况就是如此。然而,第二个链接似乎不建议。 “通常在自托管的 Node.js 应用程序中,您使用环境变量来包含私钥等敏感信息。不要在 Cloud Functions 中这样做。因为 Cloud Functions 在函数调用之间重用环境,所以不应将敏感信息存储在环境。” firebase.google.com/support/guides/…
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多