建立服務認證
您可以使用 IBM Cloud® Secrets Manager 建立服務憑證,這些憑證可用於存取需要驗證的 IBM Cloud 資源。
服務認證可以保留 Identity and Access Management 發出的認證。 憑證也可以是特定於服務的本機憑證,例如 HMAC 金鑰、資料庫使用者 ID 和密碼、SASL 憑證或 TLS 證書。 若要進一步瞭解您可以使用 Secrets Manager 管理的機密類型,請參閱 什麼是機密?
支援的 IBM Cloud 服務
您可以透過下列 IBM Cloud 服務的 Secrets Manager 建立服務認證:
開始之前
開始之前,請確定您具有必要的存取層次。 若要建立或新增密鑰,您需要 撰寫者 服務角色或更高版本。
帳戶管理員或任何擁有所需存取權限等級的實體,都可以從外部變更由 Secrets Manager 建立和管理的服務憑證。 如果在 Secrets Manager 以外刪除這樣的憑證,服務可能會發生意外行為。 例如,您可能無法建立或輪替認證。
請注意,在為資料庫建立服務認證的情況下,如果除了認證之外,您還在變更所建立認證的資料庫許可權,則在輪換服務認證之後將不會同步這些認證。 當輪替「資料庫」服務認證時,這會被視為身分輪替。
變更「服務」認證密鑰的 TTL 時,只會在下一個密鑰版本輪替時套用該密鑰。
Secrets Manager 建立的服務憑證秘密也會是資源金鑰的名稱。 例如,Cloud Object Storage 名為 my-secret-name 的服務憑證秘訣在 Cloud Object Storage 中會有一個名為 my-secret-name 的匹配資源金鑰。 如果您之後重新命名 Secrets Manager 中的秘密,此變更不會反映在資源金鑰中,但功能不會中斷。
指派服務認證的 IAM 服務存取角色
若要建立服務憑證,必須選擇 IAM 服務存取角色。 可從中選取的角色在支援的服務之間可能有所不同。 如需相關文件,請參閱 支援服務的清單。 然後,選取的角色會連接至 IAM Service ID,該 ID 可以是現有的服務 ID,也可以是自動產生的服務 ID。
一旦發生秘密輪替,即會繼續使用「服務 ID」。 如果刪除密鑰,則不會刪除預先存在的服務 ID,不過會刪除自動產生的服務 ID。
如果選取使用預先存在的服務 ID,您也可以預先配置其服務存取原則。 在這種情況下,請在建立密鑰時選取 無 作為「角色」。 進一步瞭解 IAM 原則。
服務認證最佳作法
建議對正式作業使用案例套用最低專用權存取原則:
- 設定服務對服務授權時,應該在具體來源與目標服務 實例之間定義它,而不是在 所有 服務之間。
- 當手動設定要與服務認證搭配使用之服務 ID 的存取權時,應該將它套用至具體服務實例。
在使用者介面中建立服務認證
若要使用 Secrets Manager 使用者介面來建立服務認證,請完成下列步驟。
-
在主控台中,按一下 功能表 圖示
> 資源清單。
-
從服務清單中,選取 Secrets Manager的實例。
-
在 密鑰 表格中,按一下 新增。
-
從密鑰類型清單中,按一下 服務認證 磚。
-
按下一步。
-
新增名稱及說明,以輕鬆識別您的密鑰。
-
選取您要指派給密鑰的 密鑰群組實例中包含密鑰的環境及限制必須遵循。 使用者可以與秘密群組相關聯,以實現存取和協作。 。
沒有秘密小組嗎? 在 密鑰群組 欄位中,您可以按一下 建立,以提供新群組的名稱及說明。 您的密鑰會自動新增至新群組。 如需密鑰群組的相關資訊,請參閱 組織密鑰。
-
選用項目: 新增標籤以協助您在實例中搜尋類似的密鑰。
-
選取要建立憑證的服務和服務範例
如果這是第一次選取服務實例或提供服務 CRN,請先授權 Secrets Manager 存取它
- 按一下授權,然後選擇金鑰管理員
-
按下一步。
-
視選取的服務而定,提供所要求的輸入。
-
選用項目: 將 meta 資料新增至密鑰或密鑰的特定版本。
- 上傳檔案或以 JSON 格式輸入 meta 資料及版本 meta 資料。
-
選用項目: 設定密鑰的租賃持續時間或存活時間 (TTL)。
透過設定服務認證的租賃持續時間,您可以判定其關聯認證保持有效的時間長度。 當服務憑證的租用期限結束後,系統會自動撤銷該憑證。
-
選用項目: 啟用密鑰自動旋轉。
-
按下一步。
-
檢閱密鑰的詳細資料。
-
按一下新增。
從 CLI 建立服務認證
若要使用 Secrets Manager CLI 外掛程式來建立服務認證密碼,請執行 ibmcloud secrets-manager secret-create 指令。 您可以使用
--secret-type service_credentials 選項來指定密鑰類型。 例如,下列指令會建立具有 HMAC 支援之 Cloud Object Storage 實例的服務認證。 以及指定 IAM 角色以提供此憑證,例如 Writer。
ibmcloud secrets-manager secret-create --secret-type="service_credentials" --secret-name="example-service-credentials-secret" --secret-source-service='{"instance": {"crn": "CRN of the instance to create a credential for"},"parameters": {"HMAC": true},"role": {"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"}}'
指令會輸出密鑰的 ID 值,以及其他 meta 資料。 如需指令選項的相關資訊,請參閱 ibmcloud secrets-manager secret-create。
使用 API 建立服務認證
您可以透過呼叫 Secrets Manager API,以程式化方式建立服務認證。
您可以使用 custom_metadata 和 version_custom_metadata 要求參數來儲存與組織需求相關的 meta 資料。 僅針對密鑰版本傳回 version_custom_metadata 的值。 密鑰的自訂 meta 資料會儲存為最多 50 個版本的所有其他 meta 資料,而且您不得包含機密資料。
在以下範例中,會建立 Cloud Object Storage 的服務憑證,使用現有服務 ID 的 IAM ID 自訂參數,並啟用 HMAC。 以及指定 IAM 角色以提供此憑證,例如 Writer。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
{
"name": "example-service-credentials-secret",
"description": "Description of my Service Credentials secret",
"secret_type": "service_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"source_service": {
"instance": {
"crn": "CRN of the instance to create a credential for"
},
"parameters": {
"serviceid_crn": "Existing Service ID's IAM ID",
"HMAC": true
},
"role": {
"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
}
}
}' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
若回應成功,系統將回傳該密鑰的 ID 值,以及其他元資料。 如需必要及選用要求參數的相關資訊,請參閱 API 參考資料。
使用 Terraform 建立服務憑證
您可以使用 Terraform 為 Secrets Manager 程式化建立服務憑證。 以下範例顯示您可用於為 Cloud Object Storage 建立服務憑證的設定。
resource "ibm_sm_service_credentials_secret" "my_service_credentials_secret" {
instance_id = "local.instance_id"
region = "local.region"
name = "example-service-credentials-secret"
secret_group_id = "ibm_sm_secret_group.sm_secret_group_test.secret_group_id"
description = "Description of my Service Credentials secret"
ttl = "24h"
source_service {
role = {
crn = "crn:v1:bluemix:public:iam::::serviceRole:Writer"
},
instance = {
crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/347df6de25020f0fa8b711c6d9881111:f35e85fc-3d4d-476e-8547-51222e3c1111::"
},
parameters = {
HMAC: true
}
}
rotation {
auto_rotate = true
interval = 1
unit = "day"
}
}
使用適用於 Secrets Manager Secret 的 Terraform IBM 模組 (TIM) 自動輪換部署服務憑證。 請參閱 Terraform IBM 模組,以瞭解範例。