簡體   English   中英

使用存儲的鍵作為環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM