儲存任意密鑰
您可以使用 IBM Cloud® Secrets Manager 來儲存任意秘密,這些秘密可用於存取 IBM Cloud 內外的受保護系統。
任意密鑰是一種應用程式密鑰類型,可用來保留結構化或非結構化資料,例如金鑰、配置檔或任何其他機密性資訊片段。 建立密鑰之後,您可以使用它將應用程式連接至受保護資源,例如協力廠商應用程式或資料庫。 您的密鑰安全地儲存在專用的 Secrets Manager 服務實例中,您可以在其中集中管理其生命週期。
若要進一步瞭解您可以在 Secrets Manager中管理的密鑰類型,請參閱 何謂密鑰?
開始之前
開始之前,請確定您具有必要的存取層次。 若要建立或新增密鑰,您需要 撰寫者 服務角色或更高版本。
在使用者介面中建立任意密鑰
若要使用 Secrets Manager 使用者介面來新增任意密鑰,請完成下列步驟。
-
在主控台中,按一下 功能表 圖示
> 資源清單。
-
從服務清單中,選取 Secrets Manager的實例。
-
在 密鑰 表格中,按一下 新增。
-
從密鑰類型清單中,按一下 其他密鑰類型 磚。
-
按下一步。
-
新增名稱及說明,以輕鬆識別您的密鑰。
-
選取您要指派給密鑰的 密鑰群組實例中包含密鑰的環境及限制必須遵循。 使用者可以與秘密群組相關聯,以實現存取和協作。 。
沒有秘密小組嗎? 在 密鑰群組 欄位中,您可以按一下 建立,以提供新群組的名稱及說明。 您的密鑰會自動新增至新群組。 如需密鑰群組的相關資訊,請參閱 組織密鑰。
-
選用項目: 新增標籤以協助您在實例中搜尋類似的密鑰。
-
選用項目: 將 meta 資料新增至密鑰或密鑰的特定版本。
- 上傳檔案或以 JSON 格式輸入 meta 資料及版本 meta 資料。
-
按下一步。
-
選取檔案或輸入您要與密鑰相關聯的密鑰值。
Secrets Manager 僅支援以文字為基礎的任意秘密有效載荷。 如果您選擇要指定給任意秘密的檔案,服務會使用 base64 編碼在您的實例中儲存資料。 稍後若要存取此密碼,您需要對其進行 base64 解碼。 考慮在秘密上指定一個有編碼資料的標籤,例如 encode:base64,這樣您就可以追蹤需要 base64 解碼的秘密。
- 選用項目: 啟用有效期限以控制密鑰的有效期限。
- 若要設定密鑰的到期日,請將到期切換開關切換為 是。
- 按下一步。
- 檢閱密鑰的詳細資料。
- 按一下新增。
從 CLI 建立任意密鑰
在開始之前,請按照 CLI 文件 設定您的 API 端點。
若要使用 Secrets Manager CLI 外掛程式來建立任意密鑰,請執行 ibmcloud secrets-manager secret-create 指令。 您可以使用 --secret-type arbitrary 選項來指定密鑰類型。 例如,下列指令會建立任意密鑰,並將 secret-data 儲存為其值。
Secrets Manager 僅支援以文字為基礎的任意秘密有效載荷。 如果您需要上傳二進位檔案,您必須先 base64 編碼資料,以便能以單行字串傳送至 Secrets Manager CLI。 若要稍後以原始形式存取此秘密,您需要 base64 解碼。 考慮在秘密上指定一個有編碼資料的標籤,例如 encode:base64,這樣您就可以追蹤需要 base64 解碼的秘密。
ibmcloud secrets-manager secret-create \
--secret-name example-arbitrary-secret \
--secret-description "Description of my arbitrary secret." \
--secret-type arbitrary \
--secret-group-id default \
--secret-labels dev,us-south \
--secret-expiration-date 2023-10-05T11:49:42Z \
--arbitrary-payload secret-data \
--secret-custom-metadata '{"anyKey": "anyValue"}' \
--secret-version-custom-metadata '{"anyKey": "anyValue"}'
指令會輸出密鑰的 ID 值,以及其他 meta 資料。 如需指令選項的相關資訊,請參閱 ibmcloud secrets-manager secret-create。
使用 API 建立任意密鑰
您可以透過呼叫 Secrets Manager API,以程式化方式建立任意密鑰。
下列範例顯示可用來建立及儲存任意密鑰的查詢。 當您呼叫 API 時,請將 ID 變數和 IAM 令牌換成您 Secrets Manager 範例的特定值。
您可以使用 custom_metadata 和 version_custom_metadata 要求參數來儲存與組織需求相關的 meta 資料。 僅針對密鑰版本傳回 version_custom_metadata 的值。 密鑰的自訂 meta 資料會儲存為最多 50 個版本的所有其他 meta 資料,而且您不得包含機密資料。
Secrets Manager 僅支援以文字為基礎的任意秘密有效載荷。 如果您需要上傳二進位檔案,您必須先 base64 編碼資料,以便能以單行字串傳送給 Secrets Manager API。 若要稍後以原始形式存取此秘密,您需要 base64 解碼。 考慮在秘密上指定一個有編碼資料的標籤,例如 encode:base64,這樣您就可以追蹤需要 base64 解碼的秘密。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"description": "Description of my arbitrary secret.",
"expiration_date": "2023-10-05T11:49:42Z",
"labels": [
"dev",
"us-south"
],
"name": "example-arbitrary-secret",
"payload": "secret-data",
"secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
"secret_type": "arbitrary",
"version_custom_metadata": {
"custom_version_key": "custom_version_value"} }' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
成功的回應會傳回秘密的 ID 值以及其他元資料。 如需必要及選用要求參數的相關資訊,請參閱 API 參考資料。
使用 Terraform 建立任意密鑰
您可以透過使用 Terraform for Secrets Manager,以程式化方式建立任意密鑰。
遵循 Terraform 最佳作法來保護機密輸入變數 (例如密鑰認證)。 如需相關資訊,請參閱 保護機密輸入變數。
下列範例顯示透過在 terraform.tfvars 檔案中設定機密值,可用來建立任意密鑰的配置。
-
在
variables.tf檔案中定義任意密鑰有效負載的輸入變數。variable "arbitrary_secret_payload" { description = "Arbitrary secret payload" type = string sensitive = true } -
將值指派給
terraform.tfvars檔案中的arbitrary_secret_payload變數。透過使用
.tfvars檔案設定值,您可以將機密值與其餘變數值分開,並確保使用配置的使用者知道哪些值是機密。 基於安全目的,您必須僅與具有適當存取權的使用者維護及共用.tfvars檔案。 您也必須小心不要以明碼將具有機密值的.tfvars檔案儲存至版本控制 (例如 Github)。arbitrary_secret_payload = "my sensitive arbitrary payload" -
在
main.tf檔案中建立任意密鑰。resource "ibm_sm_arbitrary_secret" "sm_arbitrary_secret" { instance_id = local.instance_id region = local.region description = "Extended description for this arbitrary secret" labels = [ "tf-resource"] name = "test-arbitrary-secret" secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id payload = var.arbitrary_secret_payload }
另外,您也可以使用預先建立、開放源碼且適用於企業的 Terraform IBM Modules (TIM) for Secrets Manager Secret,利用 Terraform 建立任意的機密。 進一步瞭解 Terraform IBM 模組。