【问题标题】:How to handle keys and credentials when deploying to Google Cloud Functions?部署到 Google Cloud Functions 时如何处理密钥和凭据?
【发布时间】:2019-10-28 16:03:23
【问题描述】:

我有几个云函数(在 Python 中)需要一个模块化包 auth,其中有一个带有 credentials 的子文件夹(主要包含 Google 服务帐户文件或 Firebase 配置的 json 文件)。

从安全角度来看,我显然没有通过将文件夹添加到 .gitignore 文件 (auth/credentials) 中来将这些文件包含在 .git 中。

但是,我现在在部署 Google Cloud Function (.gcloudignore) 时遇到了问题。如果我使用凭据部署它,那么我想这些密钥会暴露在服务器上吗?我该如何克服呢?

我听说过一些关于环境变量的说法,但我不确定这是否比仅仅部署它更安全?

Google 的做法是什么?

【问题讨论】:

  • 将您的秘密存储在另一个服务上,并使用 Kolban 对 Per-function Identity 的回答来控制对另一个服务的访问。这消除了代码中对凭据的要求。如果您只需要服务帐户凭据而不需要其他机密,并且您使用的是 Google 客户端库,那么您不需要任何其他凭据即可访问 Google 服务。对于其他类型的机密,将它们存储在 Cloud Storage 上,可选择通过 KMS 加密并使用服务帐户身份进行访问控制。
  • 我为 Cloud Run 写了一篇关于这些技术的文章。完全相同的原则适用:jhanley.com/google-cloud-run-identity
  • 您有 JSON 密钥文件的秘密差异吗?
  • 没有其他与 JSON 密钥文件不同的秘密。我想做最少的工作,但仍然做一些安全的事情。

标签: python security google-cloud-platform google-cloud-functions cloud-security


【解决方案1】:

您可以使用两种主要的解决方案。首先是 Cloud Function 可以使用自定义服务帐户的身份运行。然后,此服务帐户可以与您的逻辑完成其任务所需的所有角色相关联。这样做的价值在于您的逻辑不需要明确知道凭据。 “隐式”拨打电话的环境拥有它所需要的一切。

见:Per-function identity

第二种更符合您当前所做的机制使用Compute Metadata Server 的概念。此元数据可以使用进行病房呼叫所需的令牌进行配置。元数据与您的 Cloud Function 逻辑分开配置,后者仅根据需要检索数据。

请参阅:Fetching identity and access tokens

【讨论】:

  • 现在好像还有安全管理器
猜你喜欢
  • 2018-05-19
  • 2019-10-06
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2018-05-18
  • 2021-03-29
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多