存取密鑰

在 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}"

請注意,您需要指定密鑰的 namesecret group namesecret_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"