是否有将敏感信息(例如 API 密钥)传递给 Google Cloud Functions 的“官方”解决方案?特别是最好避免将此信息作为参数传递给函数,因为每次调用都是相同的。AWS Lambda 有一个使用加密环境变量的内置解决方案。Google Cloud Functions 是否有类似的方法?
我可以想象为此使用云存储桶或云数据存储,但这感觉非常手动。
是否有将敏感信息(例如 API 密钥)传递给 Google Cloud Functions 的“官方”解决方案?特别是最好避免将此信息作为参数传递给函数,因为每次调用都是相同的。AWS Lambda 有一个使用加密环境变量的内置解决方案。Google Cloud Functions 是否有类似的方法?
我可以想象为此使用云存储桶或云数据存储,但这感觉非常手动。
如果您将 Cloud Functions 与 Firebase 一起使用,则您正在寻找环境配置。
这样,您就可以从 Firebase CLI 部署配置数据:
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
然后在你的函数中阅读它:
functions.config().someservice.id
您可以使用 Google 机密管理器。 https://cloud.google.com/secret-manager/docs
有关示例,请参见本文: https ://dev.to/googlecloud/using-secrets-in-google-cloud-functions-5aem
您可以选择的几个选项:
就目前而言,没有办法做到这一点。
其他答案已过时,因为 firebase-functions v3.18.0 推荐的方法是使用机密(如 env 但明确传递给特定函数,没有 .env 但远程配置):https ://firebase.google.com/docs /functions/config-env?hl=en#secret-manager
在 firebase-functions v3.18.0 发布环境变量支持之前,推荐使用 functions.config() 进行环境配置。这种方法仍然受支持,但我们建议所有新项目改用环境变量,因为它们更易于使用并提高代码的可移植性。
你可以像这样使用它:
firebase functions:secrets:set MY_SECRET
并回答 CLI 的值。
然后在你的函数中:
exports.processPayment = functions
// Make the secret available to this function
.runWith({ secrets: ["MY_SECRET"] })
.onCall((data, context) => {
// Now you have access to process.env.MY_SECRET
});