本頁說明如何存取密鑰版本。存取密鑰版本會傳回密鑰內容,以及密鑰版本的其他中繼資料。如要使用 Google Cloud CLI 或 Secret Manager API 存取密鑰版本,您必須指定版本 ID 或別名 (如有指派)。您也可以指定 latest
做為版本 ID,存取密鑰的最新版本。
必要的角色
如要取得存取密鑰版本的權限,請要求管理員授予您密鑰的 Secret Manager 密鑰存取者 (roles/secretmanager.secretAccessor
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
存取密鑰版本
如要存取密鑰,請使用下列其中一種方法:
控制台
-
前往 Google Cloud 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下「Regional secrets」分頁標籤,然後點選密鑰來存取其版本。
-
在密鑰詳細資料頁面的「版本」分頁中,選取要存取的密鑰版本。
-
按一下與密鑰版本相關聯的
「Actions」(動作) 選單,然後按一下「View secret value」(查看密鑰值)。 -
畫面上會出現一個顯示密鑰版本值的對話方塊。按一下「完成」即可關閉對話方塊。
gcloud
存取密鑰版本
使用下方的任何指令資料之前,請先替換以下項目:
- VERSION_ID:密鑰版本的資源名稱
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
存取二進位密鑰版本
如要將原始位元組寫入檔案,請使用 --out-file 標記:
使用下方的任何指令資料之前,請先替換以下項目:
- VERSION_ID:密鑰版本的 ID
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
- PATH_TO_SECRET:您要儲存擷取密值的完整路徑 (包括檔案名稱)
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
取得原始位元組
如要取得原始位元組,請讓 Cloud SDK 以 base64 編碼格式列印回應,然後解碼:
使用下方的任何指令資料之前,請先替換以下項目:
- VERSION_ID:密鑰版本的 ID
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- LOCATION:密鑰的 Google Cloud 位置
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows (PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows (cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
回應包含密鑰版本。
REST
存取密鑰版本
使用任何要求資料之前,請先替換以下項目:
- LOCATION:密鑰的 Google Cloud 位置
- PROJECT_ID:專案 ID Google Cloud
- SECRET_ID:密鑰的 ID 或密鑰的完整 ID
- VERSION_ID:密鑰版本的 ID
HTTP 方法和網址:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access
JSON 要求主體:
{}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X GET \
-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/versions/VERSION_ID:access"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-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/versions/VERSION_ID:access" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "c2VDcjN0Cg==", "dataCrc32c": "3131222104" } }
使用 jq
工具擷取密鑰
回應 payload.data
是以 base64 編碼的密鑰版本內容。
以下指令是使用 jq
工具擷取密鑰的範例。
$ curl "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
| jq -r ".payload.data" | base64 --decode
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 範圍進行驗證。
資源一致性
在 Secret Manager 中,新增密鑰版本,然後立即依版本號碼存取該密鑰版本,是強烈一致性作業。
Secret Manager 中的其他作業則具有最終一致性。最終一致性作業通常會在幾分鐘內完成,但也可能需要等待數小時。
傳播 IAM 權限最終會保持一致。這表示授予或撤銷密鑰存取權可能不會立即生效。詳情請參閱「存取權變更傳播」。