存取密鑰

在 IBM Cloud® Secrets Manager 服務實例中儲存密鑰之後,您可以擷取其值。

開始之前

開始之前,請確定您具有必要的存取層次。 若要檢視可用密鑰的清單,您需要 讀者 服務角色或更高版本。 若要擷取密鑰的值,您需要 SecretsReader 服務角色或更高。

在使用者介面中擷取密鑰

您可以使用 Secrets Manager 使用者介面來擷取密鑰。 請遵循下列步驟來取得您的密碼。

  1. 在 密鑰 表格中,按一下 動作 功能表 「動作」圖示,以開啟密鑰的選項清單。
  2. 若要檢視密鑰值,請按一下 檢視密鑰。
  3. 確定您位於安全環境之後,請按一下 確認。

密鑰值會顯示 15 秒,然後對話框會關閉。

密鑰輪換後,您可以從 「版本歷史記錄」 選項查看先前的密鑰值。

您也可以擷取秘訣的詳細資料,例如到期日、輪換間隔或狀態。

  1. 在 密鑰 表格中,按一下 動作 功能表 「動作」圖示,以開啟密鑰的選項清單。
  2. 若要檢視密鑰值,請按一下 詳細資料。

您可以從秘密資料表的篩選器選項進一步篩選擷取的秘密,並選擇秘密群組、秘密類型或兩者。

下載憑證

若要使用 Secrets Manager 使用者介面下載憑證,請完成下列步驟。

  1. 在主控台中,按一下 功能表 圖示 「功能表」圖示 > 資源清單。
  2. 從服務清單中,選取 Secrets Manager的實例。
  3. 在 密鑰 表格中,開啟您要下載之憑證的溢位功能表。
  4. 按一下下載。 憑證檔會下載至本端系統。

從 CLI 擷取密鑰

在實例中儲存密碼之後,您可能需要擷取其值,才能連接至外部應用程式或取得受保護服務的存取權。 您可以使用 Secrets Manager CLI 外掛程式來擷取密鑰的值。

若要取得密鑰的值,以及檢閱其詳細資料 (例如到期日及循環間隔或狀態),請執行 ibmcloud secrets-manager secret 指令。

ibmcloud secrets-manager secret --id SECRET_ID

指令會輸出密鑰的值,以及其他 meta 資料。 如需指令選項的相關資訊,請參閱 ibmcloud secrets-manager secret。

您也可以使用密鑰名稱來取得密鑰:

ibmcloud secrets-manager secret-by-name --secret-type SECRET_TYPE --name SECRET_NAME --secret-group-name SECRET_GROUP_NAME

您可以使用 --secret-types 及 --match-all-labels 選用旗標來進一步過濾擷取的密鑰。

下載憑證

使用憑證時,您可能需要能夠使用 CLI 將憑證有效負載下載至 pem 檔案。 若要這樣做,您可以使用 Secrets Manager CLI 外掛程式及 jq。

若要將憑證儲存至 pem 檔案,請執行 ibmcloud secrets-manager secret 指令。

ibmcloud secrets-manager secret --id=SECRET_ID | jq -r '.certificate' | sed 's/\\n/\n/g' > my-cert-file.pem

該指令會輸出憑證的值,並將其儲存至 my-cert-file.pem。 如需指令選項的相關資訊,請參閱 ibmcloud secrets-manager secret。

使用密鑰 ID 使用 API 擷取密鑰

在實例中儲存密碼之後,您可能需要擷取其值,才能連接至外部應用程式或取得受保護服務的存取權。 您可以使用 Secrets Manager API 來擷取密鑰的值。

下列範例要求會擷取密鑰及其詳細資料,例如到期日及輪換間隔或狀態。 當您呼叫 API 時,請將 ID 變數及 IAM 記號取代為 Secrets Manager 實例特定的值。

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_ID}"

成功回應會傳回密鑰的值,以及其他 meta 資料。 如需必要及選用要求參數的相關資訊,請參閱 取得密鑰。

您可以使用 ?secret_types 及 ?match_all_labels 選用參數,進一步過濾擷取的密鑰。

使用密鑰名稱以 API 擷取密鑰

您也可以透過參照密鑰的名稱而非 ID 來擷取密鑰的值:

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secret_groups/{secret_group_name}/secret_types/{secret_type}/secrets/{secert_name}"

請注意,您需要指定密鑰的 name、secret group name 及 secret_type。

您可以使用 ?secret_types 及 ?match_all_labels 選用參數,進一步過濾擷取的密鑰。

擷取包含二進位資料的任意密鑰

如果您使用二進位檔 (例如映像檔) 來建立任意密鑰,則服務會使用 base64 編碼將資料儲存為 base64 編碼字串。 要以其原始形式存取機密,您需要完成一些額外的步驟來對檢索到的機密進行base64解碼。

首先,透過呼叫 Secrets Manager API 來擷取密鑰。 下列範例使用 cURL 及 jq 來收集密鑰的 payload 值。

export ARBITRARY_SECRET=`curl -X GET  
    -H "Authorization: Bearer $IAM_TOKEN" \
    -H "Accept: application/json"
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/arbitrary/{id}" | jq --raw-output '.payload | sub(".*,"; "")'`

如果您檢查 $ARBITRARY_SECRET 的內容,則會看到 base64 編碼資料。 下列 Snippet 顯示輸出範例。

echo $ARBITRARY_SECRET
eUdB68klDSrzSKgWcQS5...(truncated)

若要以密鑰原始格式 (二進位檔) 檢視密鑰,您可以使用 base64 解碼。 下列範例使用 base64 macOS 公用程式來 base64 解碼 $ARBITRARY_SECRET 內容。

echo $ARBITRARY_SECRET | base64 --decode > my-secret.png

資料會轉換回您可以從本端電腦開啟的二進位檔。

下載舊版憑證

輪替憑證之後,您可以使用 Secrets Manager API,以程式化方式存取其舊版。

以下範例請求擷取一個秘密及其內容。 當您呼叫 API 時,請將 ID 變數及 IAM 記號取代為 Secrets Manager 實例特定的值。

curl -X GET  
   --header "Authorization: Bearer {iam_token}" \
   --header "Accept: application/json" \
   "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/previous"