儲存使用者認證
您可以使用 IBM Cloud® Secrets Manager 儲存使用者名稱和密碼,用於登入和存取 IBM Cloud 內外的受保護服務。
使用者認證包含使用者名稱及密碼值,可用來登入或存取外部服務或應用程式。 您的密鑰安全地儲存在專用 Secrets Manager 服務實例中。 在實例中,您可以集中管理其生命週期,並透過設定到期日、自動輪換原則等來控制密鑰的有效期限。
在使用者憑證中,只有 中的密碼值可以輪換。 使用者名稱值一旦設置,就無法更改。
若要進一步瞭解您可以在 Secrets Manager中管理的密鑰類型,請參閱 何謂密鑰?
開始之前
開始之前,請確定您具有必要的存取層次。 若要建立或新增密鑰,您需要 撰寫者 服務角色或更高版本。
在使用者介面中新增使用者認證
若要使用 Secrets Manager 使用者介面來儲存使用者名稱及密碼,請完成下列步驟。
-
在主控台中,按一下 功能表 圖示
> 資源清單。
-
從服務清單中,選取 Secrets Manager的實例。
-
在 密鑰 表格中,按一下 新增。
-
從密鑰類型清單中,選取 使用者認證 磚。
-
按下一步。
-
新增名稱及說明,以輕鬆識別您的密鑰。
-
選取您要指派給密鑰的 密鑰群組實例中包含密鑰的環境及限制必須遵循。 使用者可以與秘密群組相關聯,以實現存取和協作。 。
沒有秘密小組嗎? 在 密鑰群組 欄位中,您可以按一下 建立,以提供新群組的名稱及說明。 您的密鑰會自動新增至新群組。 如需密鑰群組的相關資訊,請參閱 組織密鑰。
-
選用項目: 新增標籤以協助您在實例中搜尋類似的密鑰。
-
選用項目: 將 meta 資料新增至密鑰或密鑰的特定版本。
- 上傳檔案或以 JSON 格式輸入 meta 資料及版本 meta 資料。
-
按下一步。
-
輸入您要與密鑰相關聯的使用者名稱及密碼。
如果您選擇產生密碼,Secrets Manager 會將現有值取代為隨機產生的 32 個字元密碼,其中包含大寫字母、小寫字母、數字和符號。 您可以選擇進一步自訂產生的密碼,方法是配置其長度 (12-256 個字元),以及是否包含數字、符號和大寫字母。
- 選用項目: 啟用 expiration 及 rotation 選項,以控制密鑰的有效期限。
- 若要設定密鑰的到期日,請將到期切換開關切換為 是。
- 若要以 30、60 或 90 天間隔輪替密鑰,請將 自動密鑰旋轉 切換開關切換至 是。
- 按下一步。
- 檢閱密鑰的詳細資料。
- 按一下新增。
從 CLI 新增使用者認證
在開始之前,請按照 CLI 文件 設定您的 API 端點。
若要使用 Secrets Manager CLI 外掛程式來儲存使用者名稱及密碼,請執行 ibmcloud secrets-manager secret-create 指令。
ibmcloud secrets-manager secret-create \
--secret-name example-username-password-secret \
--secret-description "Description of my user credentials secret" \
--secret-type username_password \
--secret-group-id bfc0a4a9-3d58-4fda-945b-76756af516aa \
--secret-labels dev,us-south \
--username-password-username example-username \
--username-password-password example-password \
--secret-rotation '{"auto_rotate": true, "interval": 10, "unit": "day"}' \
--secret-custom-metadata '{"metadata_custom_key": "metadata_custom_value"}' \
--secret-version-custom-metadata '{"custom_version_key": "custom_version_value"}'
從 CLI 產生隨機密碼
您可以選擇進一步自訂產生的密碼,方法是配置其長度 (12-256 個字元),以及是否包含數字、符號和大寫字母。 若要使用 Secrets Manager CLI 外掛程式產生隨機密碼,請執行 ibmcloud secrets-manager secret-create 指令並包括 password_generation_policy 欄位。
ibmcloud secrets-manager secret-create \
--secret-name example-username-password-secret \
--secret-description "Description of my user credentials secret" \
--secret-type username_password \
--secret-group-id bfc0a4a9-3d58-4fda-945b-76756af516aa \
--secret-labels dev,us-south \
--username-password-username example-username \
--username-password-password example-password \
--secret-rotation '{"auto_rotate": true, "interval": 10, "unit": "day"}' \
--username-password-policy '{"length": 24, "include_digits": true, "include_symbols": false, "include_uppercase": true}' \
--secret-custom-metadata '{"metadata_custom_key": "metadata_custom_value"}' \
--secret-version-custom-metadata '{"custom_version_key": "custom_version_value"}'
指令會輸出密鑰的 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 資料,而且您不得包含機密資料。
curl -X POST
-H "Authorization: Bearer {IAM_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-username-password-secret",
"description": "Description of my user credentials secret",
"secret_type": "username_password",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"username": "example-username",
"password": "example-password",
"rotation": {
"auto_rotate": true,
"interval": 10,
"unit": "day"
},
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}'
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
使用 API 產生隨機密碼
您可以選擇進一步自訂產生的密碼,方法是配置其長度 (12-256 個字元),以及是否包含數字、符號和大寫字母。 呼叫 Secrets Manager API 時包括 password_generation_policy 欄位。
curl -X POST
-H "Authorization: Bearer {IAM_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-username-password-secret",
"description": "Description of my user credentials secret",
"secret_type": "username_password",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"username": "example-username",
"password": "example-password",
"rotation": {
"auto_rotate": true,
"interval": 10,
"unit": "day"
},
"password_generation_policy": {
"length": 24,
"include_digits": true,
"include_symbols": false,
"include_uppercase": true
},
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}'
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
使用 Terraform 新增使用者認證
您可以使用 Terraform for Secrets Manager以程式化方式儲存使用者名稱和密碼。
您可以在 Terraform 配置中設定選用的 password 引數來提供密碼,或選擇產生隨機密碼。 如果您省略 password 引數,Secrets Manager 會產生 32 個字元的隨機密碼,其中包含大寫字母、小寫字母、數字及符號。 您可以選擇進一步自訂產生的密碼,方法是配置其長度 (12-256 個字元),以及是否包含數字、符號和大寫字母。
如果您使用自動輪換原則來配置密鑰,則建議省略 password 引數,以讓起始密碼也自動產生。 這是為了避免 Terraform 漂移的情況,即在自動輪換發生後,Terraform 偵測到密碼在 Terraform 外部被更改。
以下範例顯示您可以用來建立使用者名稱和密碼秘密的查詢,密碼是隨機產生的,並已啟用自動輪替功能。 本範例也顯示如何為秘密指定非預設密碼產生政策。
resource "ibm_sm_username_password_secret" "test_username_password_secret" {
instance_id = local.instance_id
region = local.region
secret_group_id = "default"
name = "test-user-creds-secret"
username = "sm_username"
rotation {
auto_rotate = true
interval = 10
unit = "day"
}
password_generation_policy {
length = 24
include_digits = true
include_symbols = false
include_uppercase = true
}
}
以下範例顯示了一個查詢,您可以使用該查詢使用 Terraform 配置中提供的密碼建立使用者名稱和密碼機密。 在此範例中已停用自動旋轉,但您可以透過修改配置中 password 引數的值來手動旋轉密碼。
resource "ibm_sm_username_password_secret" "test_username_password_secret" {
instance_id = local.instance_id
region = local.region
secret_group_id = "default"
name = "test-user-creds-secret"
username = "sm_username"
password = "sm_password"
}
使用適用於 Secrets Manager Secret 的 Terraform IBM Modules (TIM) 以宣告方式管理使用者名稱和密碼憑證。 探索 Terraform IBM 模組的 模式。
成功的回應會傳回秘密的 ID 值以及其他元資料。 如需必要及選用要求參數的相關資訊,請參閱 API 參考資料。