在 Kubernetes Service 叢集裡設定 Secrets Manager
當您將 IBM Cloud Secrets Manager 與您的 IBM Cloud Kubernetes Service 叢集整合時,即可集中管理 Ingress 子網域憑證及其他機密資訊。
關於 Secrets Manager
使用 Secrets Manager,您可以使用單一服務來管理密鑰,並控制有權存取它們的人員。 Secrets Manager 實例不會自動佈建在叢集裡。 不過,您可以跨多個叢集使用單一 Secrets Manager 實例,且單一叢集可以有多個實例。
我可以透過 Secrets Manager獲得哪些功能?
透過 Secrets Manager,您可以:
- 建立包含 Ingress TLS 憑證的受管 Kubernetes 機密。
- 使用您擁有的任何 Secrets Manager 實例的 CRN 來建立任何類型的 Kubernetes 密鑰。
- 定期自動更新叢集裡的密碼。
- 從 IBM Cloud 主控台追蹤憑證的到期日。
- 透過為已核准使用者建立密鑰群組,控制對密鑰具有存取權的人員。
請注意,若要讓您的機密資訊自動更新,您必須在叢集中註冊至少一個 Secrets Manager 實例。 如需更多資訊,請參閱《 將您的 Secrets Manager 實例註冊至您的叢集 》。
Secrets Manager 常見問題 (FAQ)
使用 Secrets Manager 時,請注意以下幾點。
- Secrets Manager支援哪些密鑰類型?
- Secrets Manager 支援 IAM 認證、金鑰值密碼、使用者認證、任意密碼及 Kubernetes 密碼。 針對 Kubernetes 的機密,Secrets Manager 同時支援 TLS 以及非 TLS (不透明)的機密類型。 透過 TLS secrets,您可以指定一個憑證 CRN。 對於非 TLS 機密,您可以指定多個欄位來擷取非憑證類型的機密。 若您在建立機密時未指定機密類型,系統將預設套用「TLS」。 如需受支援密鑰的相關資訊,請參閱 使用不同類型的密鑰。
- 是否自動更新儲存在已登錄 Secrets Manager 實例中的密鑰?
- 是。 如果您已向叢集登錄 Secrets Manager 實例,則叢集上的密碼會一天自動更新一次 Secrets Manager 中的值。 這些更新是使用對應 CRN 中的密鑰值來進行。
- 如果未建立並登錄 Secrets Manager 實例,是否會自動更新我的密鑰?
- 如果您沒有向叢集登錄 Secrets Manager 實例,則預設 Ingress 密碼會每 90 天繼續自動更新一次,並套用至叢集。 不過,不會自動更新您所建立且 參照 預設 Ingress 密碼的任何密碼。
- 範例實務: 您在
default名稱空間中具有預設 Ingress 憑證。 您執行ibmcloud ks ingress secret create指令並參照預設 Ingress 憑證的 CRN,以鏡映istio-system名稱空間中的憑證。 沒有Secrets Manager實例中的預設 Ingress 證書default命名空間自動更新。 但是,您有責任定期更新證書istio-system命名空間與kubectl命令或其他旋轉方法。 - 我已建立參照預設 Ingress 憑證的密鑰,但尚未建立並登錄 Secrets Manager 實例。 如何管理我的秘密?
- 如果您未登錄 Secrets Manager 實例,IBM Cloud Kubernetes Service 只會自動更新預設 Ingress 密碼。 您負責使用
kubectl指令或其他輪換方法來管理任何其他密鑰。 如果您有任何密鑰參照預設 Ingress 憑證,則應該使用ibmcloud ks ingress secret rm來移除它們。 ibmcloud ks ingress instanceCLI 指令與ibmcloud ks ingress secretCLI 指令之間有何差異?- 有兩組 CLI 指令可直接與 IBM Cloud Kubernetes Service中的 Secrets Manager 實例搭配使用:
ibmcloud ks ingress secret指令及ibmcloud ks ingress instance指令。ibmcloud ks ingress instance指令用來管理 Secrets Manager 實例。ibmcloud ks ingress secret指令用來管理儲存在 Secrets Manager 實例中的 Ingress 密碼,或直接寫入叢集的密碼。
設定您的 Secrets Manager 實例
請依照以下步驟,在您的叢集中設定 Secrets Manager。
啟用服務對服務通訊
若要將 Secrets Manager 與您的 IBM Cloud Kubernetes Service 叢集整合,需進行服務間通訊的授權。 請遵循步驟來設定授權。 如需更多資訊,請參閱 《 Secrets Manager 的整合功能 》。
- 在 IBM Cloud 控制台中,請按一下 「管理」 >「存取權限 (IAM)」。
- 按一下 授權。
- 按一下建立。
- 在 來源服務 清單中,選取 Kubernetes Service。
- 選取選項以設定 所有資源的存取權範圍。
- 在 目標服務 清單中,選取 Secrets Manager。
- 選取選項以設定 所有資源的存取權範圍。
- 在 服務存取權 區段中,檢查 管理程式 選項。
- 按一下授權。
建立 Secrets Manager 實例
若要在 CLI 或 UI 中建立 Secrets Manager 實例,請參閱 Secrets Manager 文件。 您的 Secrets Manager 實例可能需要幾分鐘才能完全配置完成。
當您建立一個 Secrets Manager 實例時,該實例並不會直接在您的叢集中進行配置。 您必須在下一步中,將新的 Secrets Manager 實例註冊至您的叢集。
將 Secrets Manager 實例登錄至叢集
請依照以下步驟,將您的 Secrets Manager 實例註冊至您的叢集。
-
取得 Secrets Manager 實例的 CRN。 在輸出中,CRN 位於 ID 列中。
ibmcloud resource service-instance <instance_name>輸出範例
Name: my-secrets-manager-instance ID: crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1-111a-1111-1a1a1a1111a1: GUID: 111a1111-11a1-111a-1111-1a1a1a1111a1 Location: us-south Service Name: secrets-manager Service Plan Name: standard Resource Group Name: default State: active Type: service_instance Sub Type: Created at: 2022-06-08T12:46:45Z Created by: user@ibm.com Updated at: 2022-06-08T12:54:45Z -
將實例登錄至叢集。 指定在前一個步驟中找到的實例 CRN。
如果您要將實例登錄至叢集,並 將它設為預設實例,請包括
--is-default選項。 否則,您可以使用ibmcloud ks ingress instance default set指令來設定預設實例。ibmcloud ks ingress instance register --cluster CLUSTER_NAME_OR_ID --crn INSTANCE_CRN [--is-default] -
驗證 Secrets Manager 實例已登錄至叢集。
ibmcloud ks ingress instance ls --cluster CLUSTER_NAME_OR_ID輸出範例
Name Type Is Default Status Secret Group CRN my-secrets-manager-instance secrets-manager false created default crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1-111a-1111-1a1a1a1111a1::
Secrets Manager 當您 使用ibmcloud ks cluster create classic 或 ibmcloud ks cluster create vpc-gen2 指令建立叢集時,可指定一個 xml-ph-0000@deepl.internal 實例及一個機密群組。 使用 --sm-instance 選項來向叢集登錄實例,使用 --sm-group 選項來指定可存取叢集上密碼的密碼群組。 請參閱「建立叢集時註冊 Secrets Manager 實例」。
設定預設 Secrets Manager 實例並重新產生密鑰
當您設定預設的 Secrets Manager 實例時,所有新的 Ingress 子網域憑證都會儲存於該實例中。
-
執行指令以設定新的預設實例。 您可以選擇性地指定容許存取實例中密鑰的 密鑰群組。
ibmcloud ks ingress instance default set --cluster CLUSTER_NAME_OR_ID --name INSTANCE_NAME --secret-group SECRET_GROUP_ID -
重新產生密鑰。 IBM所管理的任何密鑰 (例如預設 Ingress 密鑰) 都會上傳至新的預設實例。 這些密鑰會自動更新,且 CRN 會變更為參照 Secrets Manager 實例。
- 列出叢集裡的 nlb-dns 子網域。
ibmcloud ks nlb-dns ls --cluster CLUSTER_NAME_OR_ID ``` 2. 針對叢集裡的每一個子網域,執行指令以重新產生 IBM管理的密碼。 這會更新這些密鑰的 CRN,以參照新預設 Secrets Manager 實例的 CRN。 重新產生密鑰的速率限制為每週五次。 請仔細遵循本文件中的步驟,因為重複這些步驟可能會導致您達到限制。 若您未重新產生密鑰,或已達到上限,您的密鑰將於下一個更新週期上傳至您的 Secrets Manager 實例。 {: important} ```sh {: pre} ibmcloud ks nlb-dns secret regenerate --cluster CLUSTER_NAME_OR_ID --nlb-subdomain NLB_SUBDOMAIN ``` 3. 驗證已重新產生預設 Ingress 密碼。 在輸出中,預設 Ingress 密碼的 CRN 應該包含 `secrets-manager`。 您的密鑰可能需要幾分鐘才能重新產生。 在此程序期間,輸出中的 **狀態** 直欄會指出 `regenerating`,並在重新產生完成時切換至 `created`。 {: note} ```sh {: pre} ibmcloud ks ingress secret ls --show-crn --cluster CLUSTER_NAME_OR_ID ``` 輸出範例 ```sh {: screen} Name Namespace Expiry Domains Status Type CRN secret-11111aa1a1a11aa1111111-000 default 3 months from now secret-11111aa1a1a.us-s…domain.cloud created TLS crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1:secret:a111aa11-11a1 secret-22222aa2a2a22aa2222222-000 default 3 months from now secret-22222aa2a2a.us-s…domain.cloud created TLS crn:v1:bluemix:public:secrets-manager:us-south:a/2aa222aa2:secret:a222aa22-22a2 ```
使用密鑰群組控制對密鑰的存取權
透過 Secrets Manager,您可以利用機密群組來控制誰能存取叢集中的機密。 密鑰群組可以指派給 IAM 存取群組,以便只有選取使用者或服務 ID 才能存取密鑰群組內的密鑰。 如需相關資訊,請參閱 組織密碼。
建立叢集時登錄 Secrets Manager 實例
若您正在 建立新的 Classic 或 VPC 叢集, 可在建立過程中將現有的 Secrets Manager 實例和機密群組註冊至該叢集。 叢集中的機密會儲存於 Secrets Manager 實例中,並套用至該機密群組。
在建立叢集時註冊的 Secrets Manager 實例,並不會自動成為預設的 Secrets Manager 實例。 您仍然必須手動 設定預設實例。
如果您在 CLI 中使用 ibmcloud ks cluster create classic 或 ibmcloud ks cluster create vpc-gen2 建立叢集,則可以使用下列指令選項來指定 Secrets Manager 實例或密碼群組:
--sm-instance: 使用此選項可透過指定實例 CRN,將 Secrets Manager 實例登錄至叢集。 要查找 Secrets Manager 实例的 CRN,请运行ibmcloud resource service-instance <name_of_instance>或在用户界面中导航到资源列表,然后单击该实例。--sm-group: 使用此選項來指定密鑰群組的 ID。 若要尋找密鑰群組 ID,請執行ibmcloud secrets-manager secret-groups。
如果您在使用者介面中建立叢集,請遵循下列步驟來指定 Secrets Manager 實例或密碼群組:
- 在叢集建立頁面的 整合 區段中,選取啟用 Secrets Manager 的選項。
- 從 Secrets Manager 實例 下拉功能表中,選取您要向叢集登錄的實例。 如果沒有可用的實例,請 建立一個。
- 從 Secrets Manager 群組 下拉功能表中,選取您要套用的密鑰群組。
- 建立叢集。
- 檢查 Secrets Manager 實例已登錄至叢集。
- 當您的群集完全佈建好後,按一下群集以檢視群集詳細資料。 在 整合下,尋找 Secrets Manager 標題,然後按一下 管理。
- 在側邊畫面中,檢查 已登錄 Secrets Manager 實例下是否列出正確的實例。
- 若要向叢集登錄其他實例,請按一下 登錄實例。