你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure Kubernetes 服务 (AKS) 群集更新或轮换凭据
使用服务主体创建的 AKS 群集具有为期一年的有效期。 在有效期即将结束时,你可以重置凭据来将服务主体延长额外的一段时间。 作为已定义安全策略的一部分,还可能要更新或轮换凭据。 与 Microsoft Entra ID(作为身份验证提供程序)集成的 AKS 群集有两个标识:Microsoft Entra 服务器应用和 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
输出类似于以下示例输出。 记下自己的 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 是 password。
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 中的身份验证和授权的最佳做法。