[英]How do I handle running things like Google Cloud API Gateway locally?
[英]How do i handle secrets in Google Cloud Functions?
這里的常見做法是什么? gcloud
好像沒有提供任何工具。 我現在正在從本地機器部署功能,所以我可以對秘密進行硬編碼,但這似乎不合適。 另外,CI/CD 呢? 在這種情況下,我需要將機密作為環境變量傳遞。 這甚至可能嗎?
自從發表評論以來,我找到了一種相對簡單的方法 - 提供一個 config .json
文件。 這是我根據他們的 Slack 函數示例編寫的示例:
config.json文件在與index.js相同的目錄中:
{
"foo": "bar"
}
索引.js
const config = require('./config.json');
exports.envTest = (req, res) => {
res.status(200).send(config.foo);
};
當您部署函數並轉到 URL 時,您應該會看到響應bar
。
優缺點:
優點:
.gitignore
以確保您的機密不會最終出現在 repo 中缺點:
總的來說,它與真正的機密管理系統相去甚遠,但它足以讓我堅持下去,直到此功能最終成為 Cloud Functions 核心。
您應該使用Cloud Key Management Service(KMS) 。
不要將帶有文件或環境變量的純機密推送到 Cloud Functions。
一種解決方案如下:
截至 2021-08-25,在 Google Cloud Functions 中處理機密的首選方式是使用本機 Secret Manager 集成。 此集成使您能夠通過環境變量或文件系統在 Google Secret Manager 中裝載機密。
創建您的秘密或將您的秘密遷移到 Google Secret Manager(有一個慷慨的永遠免費的層):
$ gcloud secrets create "my-secret" --replication-policy="automatic" --data=...
更新您的雲 Function 部署以引用秘密:
作為環境變量:
$ gcloud beta functions deploy "my-function" --set-secrets "MY_SECRET=my-secret:latest"
通過文件系統:
$ gcloud beta functions deploy "my-function" --set-secrets "/path/to/my/secret=my-secret:latest"
為了實踐最小權限原則,建議將每個 Cloud Function 部署為專用服務帳戶。 您需要授予該服務帳戶訪問您的應用程序所需機密的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.