更新或輪替 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
輸出會類似下列範例。 記下您自己的 appId
和password
以便在下一個步驟中使用。
{
"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_ID 是 appId,而 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 中驗證和授權的最佳做法。