使用服务主体创建的 AKS 群集具有一年的过期时间。 在接近到期日期时,您可以重置凭据,以在未来延长服务主体的有效期。 为了满足既定的安全策略,您可能希望更新或更换凭据。 与 Microsoft Entra ID 集成的 AKS 群集还包含两个身份:Microsoft Entra Server 应用和 Microsoft Entra 客户端应用。 本文详细介绍了如何更新 AKS 群集的服务主体和Microsoft Entra 凭据。
注意
或者,可以将托管标识用于权限而不是服务主体。 托管标识不需要更新或轮换。 有关详细信息,请参阅使用托管标识。
需要安装并配置 Azure CLI 2.0.65 或更高版本。 运行 az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
若要更新 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
输出类似于以下示例输出。 记下自己的 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
命令的输出为服务主体 ID 和客户端密码定义变量。
SP_ID是 appId,SP_SECRET是密码。
SP_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SP_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
接下来,使用 新的服务主体凭据更新 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 集成步骤创建新的 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 中的身份验证和授权最佳做法。