輪替 Azure Arc 所啟用之 SQL 受控執行個體服務管理的認證 (預覽)

本文說明如何輪替 Azure Arc 啟用之 SQL 受控執行個體服務管理的認證。Arc 資料服務會產生各種服務管理的認證,例如用於監視、備份/還原、高可用性等的認證和 SQL 登入。這些認證會被視為 Azure Arc 資料服務管理的自訂資源認證。

服務管理的認證輪替,是您在安全性問題期間發起的使用者觸發作業,或是合規性要求定期輪替時發起的作業。

限制

輪替受控執行個體服務管理的認證時,請考慮下列限:

  • 不支援 SQL Server 容錯移轉群組。
  • 不支援自動預先排程的輪替。
  • 這個認證輪替不包含服務管理的 DPAPI 對稱密鑰、金鑰表、Active Directory 帳戶,以及服務管理的 TDE 認證。

一般用途層

在一般用途 SQL 受控執行個體服務控理認證輪替期間,受控執行個體 Kube Pod 會終止,並以輪替的認證重新佈建。 這個程序會在建立新的受控執行個體 Pod 時,造成短暫停機。 若要處理中斷,在應用程式建置復原功能 (例如連線重試邏輯),確保將中斷減到最少。 如需架構復原和 Azure 服務重試指導的詳細資訊,請參閱可靠性要素概觀

商務關鍵層

在業務關鍵 SQL 受控執行個體服務管理的認證輪替期間有多個複本:

  • 次要複本 Pod 會終止,並使用輪替服務管理的認證重新佈建
  • 重新佈建複本之後,主要複本將會容錯移轉至重新佈建的複本
  • 先前的主要 Pod 會終止,並使用輪替服務管理的認證重新佈建,因此成為次要

發生容錯移轉時會短暫停機。

先決條件:

在繼續進行本文之前,您必須先建立 Azure Arc 所啟用的 SQL 受控執行個體資源。

如何在受控執行個體輪替服務管理的認證

服務管理的認證與受控執行個體內的世代相關聯。 若要輪替受控執行個體所有的服務管理認證,世代必須增加 1。

執行下列命令,從規格取得目前的服務管理認證產生,並產生新一代的服務管理認證。 這項動作會觸發服務管理認證輪替。

rotateCredentialGeneration=$(($(kubectl get sqlmi <sqlmi-name> -o jsonpath='{.spec.update.managedCredentialsGeneration}' -n <namespace>) + 1))
kubectl patch sqlmi <sqlmi-name> --namespace <namespace> --type merge --patch '{ "spec": { "update": { "managedCredentialsGeneration": '$rotateCredentialGeneration'} } }'

managedCredentialsGeneration 會識別服務管理認證的目標產生。 設定和 Kube 拓撲等其餘功能會維持不變。

如何在受控執行個體輪復原服務管理的認證

注意

認證輪替失敗時必須復原。 僅支援一次復原至先前的認證產生至 n-1,其中 n 是目前世代。

如果在認證輪替進行時觸發復原,而且所有複本皆尚未重新佈建,則復原可能需要大約 30 分鐘才能完成,讓受控執行個體處於就緒狀態。

執行下列這兩個命令,從規格取得目前的服務管理認證產生,並且復原至前一代的服務管理認證:

rotateCredentialGeneration=$(($(kubectl get sqlmi <sqlmi-name> -o jsonpath='{.spec.update.managedCredentialsGeneration}' -n <namespace>) - 1))
kubectl patch sqlmi <sqlmi-name> --namespace <namespace> --type merge --patch '{ "spec": { "update": { "managedCredentialsGeneration": '$rotateCredentialGeneration'} } }'

觸發復原與觸發服務管理的認證輪替相同,不同之處在於目標世代是前一代,而且不會產生新一代或認證。