共用方式為


更新或輪替 Azure Kubernetes Service (AKS) 叢集的認證

建立 AKS 叢集時包含的服務主體到期時間為期一年。 當到期日接近時,您可以重設認證,將服務主體再延長一段時間。 您可能也想為已定義的安全性原則更新或輪替認證。 AKS 叢集與 Microsoft Entra ID 整合做為驗證提供者,還有兩個身分識別:Microsoft Entra Server 應用程式和 Microsoft Entra 用戶端應用程式。 本文詳細說明如何更新 AKS 叢集的服務主體和 Microsoft Entra 認證。

注意

您也可以使用受控識別,而不是服務主體來取得權限。 受控識別不需要更新或輪替。 如需詳細資訊,請參閱使用受控識別

開始之前

您必須安裝並設定 Azure CLI 2.0.65 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

更新或建立 AKS 叢集的新服務主體

您想要更新 AKS 叢集的認證時,可以選擇:

  • 更新現有服務主體的認證。
  • 建立新服務主體,並更新叢集,以使用這些新認證。

警告

如果您選擇建立的服務主體,請等候大約 30 分鐘,讓服務主體權限傳播到全部區域。 更新大型 AKS 叢集以使用這些認證可能需要很長的時間才能完成。

檢查服務主體的到期日

若要檢查服務主體的到期日,請使用 az ad app credential list 命令。 下列範例會使用 az aks show 命令,取得 $RESOURCE_GROUP_NAME 資源群組中 $CLUSTER_NAME 叢集的服務主體識別碼。 服務主體識別碼會設定為名為 SP_ID 的變數。

SP_ID=$(az aks show --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME \
    --query servicePrincipalProfile.clientId -o tsv)
az ad app credential list --id "$SP_ID" --query "[].endDateTime" -o tsv

重設現有的服務主體認證

若要更新現有服務主體的認證,請使用 az aks show 命令,取得叢集的服務主體識別碼。 下列範例會取得 $RESOURCE_GROUP_NAME 資源群組中 $CLUSTER_NAME 叢集的識別碼。 名為 SP_ID 的變數會儲存下一個步驟中使用的服務主體識別碼。 這些命令會使用 Bash 命令語言。

警告

您在使用 Azure 虛擬機器擴展集的 AKS 叢集上重設叢集認證時,會執行節點映像升級,藉以使用新的認證資訊更新您的節點。

SP_ID=$(az aks show --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME \
    --query servicePrincipalProfile.clientId -o tsv)

使用變數 SP_ID 包含服務主體識別碼,以使用 az ad app credential reset 命令重設認證。 下列範例可讓 Azure 平台為服務主體產生新的安全秘密,並將其儲存為名為 SP_SECRET 的變數。

SP_SECRET=$(az ad app credential reset --id "$SP_ID" --query password -o tsv)

接下來,使用服務主體認證更新 AKS 叢集。 您必須執行此步驟,才能更新 AKS 叢集上的服務主體。

建立全新服務主體

注意

如果您在上一節中更新了現有的服務主體認證,請略過本節,並改為使用服務主體認證更新 AKS 叢集

若要建立服務主體並更新 AKS 叢集以使用新的認證,請使用 az ad sp create-for-rbac 命令。

az ad sp create-for-rbac --role Contributor --scopes /subscriptions/$SUBSCRIPTION_ID

輸出會類似下列範例。 記下您自己的 appIdpassword 以便在下一個步驟中使用。

{
  "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

使用輸出執行 az ad sp create-for-rbac 命令,定義服務主體識別碼和用戶端密碼的變數。 SP_IDappId,而 SP_SECRET 是您的密碼

SP_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SP_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

接下來,使用新的服務主體認證更新 AKS 叢集。 您必須執行此步驟,才能使用新的服務主體認證來更新 AKS 叢集。

使用服務主體認證更新 AKS 叢集

重要

對於大型叢集,使用新的服務主體更新 AKS 叢集可能需要很長的時間才能完成。 請考量檢閱和自訂節點激增升級設定,藉以將更新期間的中斷降到最低。 針對小型和中型叢集,新認證需要幾分鐘的時間才能在叢集中更新。

執行 az aks update-credentials 命令,以新的或現有的認證更新 AKS 叢集。

az aks update-credentials \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --reset-service-principal \
    --service-principal "$SP_ID" \
    --client-secret "${SP_SECRET}"

使用新的 Microsoft Entra 應用程式認證更新 AKS 叢集

您可以遵循 Microsoft Entra 整合步驟來建立新的 Microsoft Entra 伺服器和用戶端應用程式,或遵循與服務主體重設相同的方法重設現有的 Microsoft Entra 應用程式。 之後,您必須使用 az aks update-credentials 命令搭配 --reset-aad 變數來更新叢集 Microsoft Entra 應用程式認證。

az aks update-credentials \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --reset-aad \
    --aad-server-app-id $SERVER_APPLICATION_ID \
    --aad-server-app-secret $SERVER_APPLICATION_SECRET \
    --aad-client-app-id $CLIENT_APPLICATION_ID

下一步

在本文中,您已瞭解如何更新或輪替服務主體和 Microsoft Entra 應用程式認證。 如需如何使用 AKS 叢集內工作負載管理身分識別的詳細資訊,請參閱在 AKS 中驗證和授權的最佳做法