2017-06-12 183 views
2

我正在使用带有Pubsub触发器的Google Cloud Function(GCF),该触发器向第三方API发送HTTP请求。Google Cloud功能:支持Google Cloud KMS

GCF接收来自Pubsub主题的通知,该主题由不应该意识到第三方API的服务使用。

第三方API需要使用基本HTTP身份验证进行身份验证。

为了不必在源代码中对密码进行硬编码,我每次部署函数时都使用Google KMS生成新的加密密钥。每次实例化函数时,我都使用Google Cloud KMS来解密秘密。

对于使用KMS进行解密,我必须为NodeJS Google API提供服务帐户的私钥。

我今天的主要问题是,如果我希望GCF正常工作,我必须将我的私钥推送到GCloud Bucket。

可以通过使用Runtime Configurator或Deployment Manager来配置Google Cloud Function的机密吗?

谢谢你。

+0

我试图解决同样的问题。我使用KMS来加密可部署包中的秘密,然后我尝试在运行时解密秘密,但后来意识到需要从云功能中明确进行身份验证 - 据我所知,这意味着您需要拥有至少某些形式的可部署包中未加密的秘密。 –

回答

2

可以通过使用Runtime Configurator或Deployment Manager来配置Google Cloud Function的机密吗?

目前没有内置服务可让您配置Google云端函数直接访问的秘密,因此您目前使用的方法是处理云端函数秘密的正确方法。暂且。随着产品仍处于测试阶段,这可能会发生变化。

如果您希望您可以使用相应的issue tracker向Cloud Function团队发出功能请求。

1

其他解决这个仅在过去的几个月里走了出来,是使用谷歌云运行时配置与火力地堡的功能: https://firebase.google.com/docs/functions/config-env

火力地堡的功能似乎提供了一些功能是无法访问但通过其他方式可用。

运行时配置不收费用,但实施下列API限制和配额:

  • 1200查询每分钟(QPM)进行删除,创建和更新请求
  • 600 QPM为观看请求。
  • 6000 QPM用于获取和列出请求。
  • 每个用户4MB数据,其中包含写入Runtime配置器服务的所有数据以及随附的元数据。

https://cloud.google.com/deployment-manager/pricing-and-quotas#runtime_configurator


顺便说一句,我发现在火力地堡滑稽这种冲突的功能:

的火力地堡SDK云功能提供了内置的环境配置使您可以轻松地为您的项目存储和检索此类数据,而无需重新部署您的功能。

再晚一会儿:

运行functions:config:set后,必须重新部署功能,使新的配置提供。


的KMS解决方案是一个可行的选择,但它似乎昂贵的功能。 KMS按每个活动密钥每月0.06美元计算,以及每万次操作0.03美元。

然后,这会将您的云端功能的成本从每百万次调用0.40美元变为每百万次调用3.40美元。这是相当的跳跃。

+0

现在有一个官方库,用于从运行时API中提取配置。 https://www.npmjs.com/package/@google-cloud/rcloadenv – jqualls