你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

轮换 Azure Red Hat OpenShift 群集的服务主体凭据

本文介绍如何轮换 Azure Red Hat OpenShift 群集的 Microsoft Entra ID 服务主体凭据。 Azure CLI 命令使用 Bash 语法,可以在 Azure Cloud Shell 中运行。

先决条件

  • 应用了最新更新的现有 Azure Red Hat OpenShift 群集。
  • 需要 Azure CLI 版本 2.24.0 才能轮换服务主体凭据。 若要检查 Azure CLI 的版本,请运行 az --version。 如果需要升级,请参阅 如何安装 Azure CLI

服务主体账号凭据轮换

服务主体凭据轮换可能需要两个小时,具体取决于群集状态。 进行服务主体凭据轮换有两种方法:

对于任一方法,请为群集的名称和资源组创建变量。 将<clusterName><resourceGroupName>替换为您群集的值。

CLUSTER=<clusterName>
RESOURCEGROUP=<resourceGroupName>

自动服务主体凭据轮换

自动服务主体凭据轮换的方法要求使用 Azure CLI 2.24.0 或更高版本创建群集。 自动服务主体凭据轮换会检查服务主体是否存在,并会进行凭据轮换或创建新的服务主体。

可以使用以下命令自动轮换服务主体凭据。

az aro update --refresh-credentials --name $CLUSTER --resource-group $RESOURCEGROUP

用户提供的客户端 ID 和客户端机密服务主体凭据轮换

可以使用以下说明手动轮换用户提供的客户端 ID 和客户端密码的服务主体凭据。

检索服务主体客户端 ID (--client-id) 并将其设置为 SP_ID 环境变量。

SP_ID=$(az aro show --name $CLUSTER --resource-group $RESOURCEGROUP \
    --query servicePrincipalProfile.clientId --output tsv)

使用--client-secret变量为服务主体生成新的安全机密(SP_ID)。 将新的安全机密存储为 SP_SECRET 环境变量。

SP_SECRET=$(az ad sp credential reset --id $SP_ID --query password --output tsv)

使用环境变量轮换服务主体凭据。

az aro update --client-id $SP_ID --client-secret $SP_SECRET \
    --name $CLUSTER --resource-group $RESOURCEGROUP

故障排除

服务主体到期日期

服务主体凭据的到期日期为一年,应在该时间范围内轮换。 如果凭据已过期,则可能出现以下错误。

Failed to refresh the Token for request to <resourceGroupName> StatusCode=401
Original Error: Request failed. Status Code = '401'.
[with]
Response body: {"error":"invalid_client","error_description": The provided client secret keys are expired.
[or]
Response body: {"error":"invalid_client","error_description": Invalid client secret is provided.

若要检查服务主体凭据的到期日期,请运行以下命令。 日期以 ISO 8601 UTC 格式输出。

SP_ID=$(az aro show --name $CLUSTER --resource-group $RESOURCEGROUP \
    --query servicePrincipalProfile.clientId --output tsv)
az ad app credential list --id $SP_ID --query "[].endDateTime" --output tsv

如果服务主体凭据已过期,请使用两种凭据轮换方法之一更新凭据。

群集应用程序包含一个客户端密钥,描述为空

使用 az aro update 命令进行 自动服务主体凭据轮换时,会发生以下错误。

Cluster application contains a client secret with an empty description.
Either manually remove the existing client secret and run `az aro update --refresh-credentials`,
or manually create a new client secret and run `az aro update --client-secret <clientSecret>`.

未使用 Azure CLI 2.24.0 或更高版本创建群集。 请改用 用户提供的客户端 ID 和客户端机密服务主体凭据轮换 方法。

Azure CLI 命令

有关 Azure CLI 命令的详细信息,请参阅 az aro 文档。 还可以使用命令行 az aro update --help 等命令。

清理资源

完成后,应清除变量以删除任何敏感数据。

SP_SECRET=""
SP_ID=""
CLUSTER=""
RESOURCEGROUP=""

有关服务主体的详细信息,请参阅 创建和使用服务主体部署 Azure Red Hat OpenShift 群集