閱讀英文

共用方式為

更新或轮换 Azure Kubernetes 服务 (AKS) 群集的凭据

使用服务主体创建的 AKS 群集具有一年的过期时间。 在接近到期日期时,您可以重置凭据,以在未来延长服务主体的有效期。 为了满足既定的安全策略,您可能希望更新或更换凭据。 与 Microsoft Entra ID 集成的 AKS 群集还包含两个身份: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群集的服务主体 ID。 服务主体 ID 设置为名为 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 命令获取群集的服务主体 ID。 以下示例获取 $RESOURCE_GROUP_NAME 资源组中 $CLUSTER_NAME 群集的 ID。 名为 SP_ID 的变量存储下一步中使用的服务主体 ID。 这些命令使用 Bash 命令语言。

警告

在使用 Azure 虚拟机规模集的 AKS 群集上重置群集凭据时,将执行 节点映像升级 ,以便使用新的凭据信息更新节点。

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

使用包含服务主体 ID 的变量 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 命令的输出为服务主体 ID 和客户端密码定义变量。 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 应用程序。 之后,需要使用带有 --reset-aad 变量的az aks update-credentials命令更新群集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 中的身份验证和授权最佳做法