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

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

本文提供轮换 Azure Red Hat OpenShift 群集 (ARO) 中的服务主体凭据所需的详细信息。

开始之前

本文假设已有一个应用了最新更新的 ARO 群集。

若要轮换 ARO 群集中的服务主体凭据,所需的最低 Azure CLI 版本为 2.24.0。

若要检查运行的 Azure CLI 版本,请运行以下命令:

# Azure CLI version
az --version

若要安装或升级 Azure CLI,请按照安装 Azure CLI 进行操作。

以下说明使用 bash 语法。

服务主体凭据轮换

重要

服务主体凭据轮换最长可能需要 2 个小时,具体取决于群集状态。

服务主体凭据轮换采用两种方法:

自动服务主体凭据轮换

重要

要实现自动服务主体凭据轮换,ARO 群集必须是使用 Azure CLI 2.24.0 或更高版本创建的。

自动服务主体凭据轮换将检查服务主体是否存在,然后轮换或新建服务主体。

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

# Automatically rotate service principal credentials
az aro update --refresh-credentials --name MyManagedCluster --resource-group MyResourceGroup

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

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

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

# Retrieve the service principal clientId
SP_ID=$(az aro show --name MyManagedCluster --resource-group MyResourceGroup \
    --query servicePrincipalProfile.clientId -o tsv)

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

# Generate a new secure secret for the service principal
SP_SECRET=$(az ad sp credential reset --id $SP_ID --query password -o tsv)

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

# Rotate service principal credentials
az aro update --client-id $SP_ID --client-secret $SP_SECRET \
    --name MyManagedCluster --resource-group MyResourceGroup

疑难解答

服务主体到期日期

为服务主体凭据设置的到期日期为一年,应在给定的时限内进行轮换。

如果到期日期已过,可能会出现以下错误:

Failed to refresh the Token for request to MyResourceGroup 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.

若要检查服务主体凭据的到期日期,请运行以下命令:

# Service principal expiry in ISO 8601 UTC format
SP_ID=$(az aro show --name MyManagedCluster --resource-group MyResourceGroup \
    --query servicePrincipalProfile.clientId -o tsv)
az ad app credential list --id $SP_ID --query "[].endDateTime" -o tsv

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

群集 AAD 应用程序包含没有任何说明的客户端机密

使用自动服务主体凭据轮换方法时发生以下错误:

$ az aro update --refresh-credentials --name MyManagedCluster --resource-group MyResourceGroup

Cluster AAD application contains a client secret with an empty description.
Please 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 ARO update help

若要查看更多详细信息,请运行 Azure CLI ARO update help 命令:

# Azure CLI ARO update help
az aro update -h