Secret 資料是不可變動的內容,大多數的作業都是在 Secret 版本上進行。密鑰版本包含實際密鑰資料,以及密鑰的狀態和中繼資料。本頁說明如何新增密鑰版本。
如要進一步瞭解版本管理,請觀看這部影片。
必要的角色
如要取得新增密鑰版本所需的權限,請要求管理員在密鑰上授予下列 IAM 角色:
-
Secret Manager Secret Version Adder (
roles/secretmanager.secretVersionAdder
) -
Secret Manager 密鑰版本管理員 (
roles/secretmanager.secretVersionManager
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
無法在密鑰版本上授予 IAM 角色。
新增密鑰版本
如要新增私密版本,請使用下列其中一種做法:
控制台
-
前往 Google Cloud 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下「Regional secrets」分頁,然後找出要新增版本的密鑰。
-
按一下該密鑰的
「Actions」(動作) 選單,然後點選「Add new version」(新增版本)。系統會顯示「新增版本」對話方塊。 -
在「Secret value」(密鑰值) 欄位中,輸入密鑰的值,例如
abcd1234
。 或者,您也可以上傳內含密鑰值的檔案。 -
按一下「新增版本」。
gcloud
請確認您已設定 Secret Manager 使用區域端點,以便管理區域密鑰。從磁碟上的檔案內容新增密鑰版本
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
- FILE_PATH:包含版本詳細資料的檔案完整路徑 (包括檔案名稱)
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
回應包含新建立的密鑰版本。
直接在指令列新增密鑰版本
您也可以直接在指令列中新增密碼版本,但我們不建議這麼做,因為密碼會以純文字形式顯示在處理程序清單中,其他系統使用者可能會擷取密碼。請注意,含有純文字的指令也會出現在殼層記錄中。
echo -n "SECRET_DATA" | \ gcloud secrets versions add SECRET_ID --location=LOCATION --data-file=-
取代下列項目:
- SECRET_DATA:您要儲存在密鑰版本中的資料
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
選用:首次建立密鑰時,從檔案內容新增版本
使用下方的任何指令資料之前,請先替換以下項目:
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
- FILE_PATH:包含版本詳細資料的檔案完整路徑 (包括檔案名稱)
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
回應包含新建立的密鑰版本。
REST
以 Base64 編碼密鑰資料,並儲存為殼層變數。
$ SECRET_DATA=$(echo "seCr3t" | base64)
使用任何要求資料之前,請先替換以下項目:
- LOCATION:密鑰的 Google Cloud 位置
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
HTTP 方法和網址:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion
JSON 要求主體:
{"payload": {"data": "${SECRET_DATA}"}}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/1", "createTime": "2024-03-25T08:24:13.153705Z", "state": "ENABLED", "etag": "\"161477e6071da9\"" }
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Secret Manager Go SDK。在 Compute Engine 或 GKE 上,您必須使用 cloud-platform 範圍進行驗證。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Secret Manager Java SDK。在 Compute Engine 或 GKE 上,您必須使用 cloud-platform 範圍進行驗證。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Secret Manager Node.js SDK。在 Compute Engine 或 GKE 上,您必須使用 cloud-platform 範圍進行驗證。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Secret Manager Python SDK。在 Compute Engine 或 GKE 上,您必須使用 cloud-platform 範圍進行驗證。
密鑰版本狀態
密鑰版本在任何時間點都可能處於下列其中一種狀態:
-
已啟用:在這個狀態下,您可以存取及說明密鑰版本。 這是新密鑰版本的預設狀態。
-
已停用:處於這個狀態時,無法存取密鑰版本,但密鑰內容仍存在。您可以重新啟用密鑰版本,恢復存取權。
-
已刪除 - 處於這個狀態時,系統會捨棄密鑰版本的內容。密鑰版本無法變更為其他狀態。
無論密鑰版本是否啟用,系統都會向您收費。您不必為處於已刪除狀態的密鑰版本付費。