[英]Using stored keys as Environment variables
我有一個存儲在 GCP 的 Secret 管理器中的密鑰。 這個想法是使用該密鑰來使用雲函數獲取預算列表。
現在,我可以從我的代碼中訪問該密鑰,但我面臨的問題是我需要使用該密鑰設置環境變量。
這是我可以添加密鑰的方式(如果您的本地目錄中有該文件),但還有另一種方式嗎?
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "seret_key_file.json"
嘗試將 sa 帳戶與運行 ex 所需的角色一起使用
function create_sa() { #
gcloud iam service-accounts create "$SERVICE_ACCOUNT_NAME"
gcloud iam service-accounts list
}
function add_role2sa() { #
gcloud projects add-iam-policy-binding "$PROJECT_ID" --member serviceAccount:"$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role 'roles/iam.serviceAccountTokenCreator'
gcloud projects add-iam-policy-binding "$PROJECT_ID" --member serviceAccount:"$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role 'roles/cloudfunctions.invoker'
}
function save_key_sa() { #
gcloud iam service-accounts keys create "$GOOGLE_APPLICATION_CREDENTIALS" --iam-account "$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com"
}
您可以獲取 json 文件並將其存儲在訪問權限有限的文件夾中
您不應為此目的使用 Secret Manager。 相反,將您的 Cloud Function 部署為您期望的服務帳戶。 使用gcloud
CLI 工具,您可以執行以下操作:
gcloud functions deploy ... \
--service-account="my-account@p.iam.gserviceaccount.com"
這將使 Cloud Functions 作為提供的身份運行,繼承底層身份的權限。
如果您真的想使用自定義服務帳戶密鑰,則需要使用私鑰數據手動實例化客戶端。 例如:
client = secretmanager.SecretManagerServiceClient().from_service_account_info('<json service account key contents>')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.