共用方式為


輪替 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 小時。

服務主體認證輪替有兩種方法:

自動化服務主體認證輪替

重要

自動化服務主體認證輪替需要透過 Azure CLI 2.24.0 或更新版本來建立 ARO 叢集。

自動化服務主體認證輪替會檢查服務主體是否存在,並輪替或建立新的服務主體。

使用下列命令自動輪替服務主體認證:

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

使用者提供的用戶端識別碼和用戶端密碼服務主體認證輪替

依照下列指示,使用使用者提供的用戶端識別碼和用戶端密碼手動輪替服務主體認證:

擷取服務主體 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 或更新版本建立叢集。 改為使用使用者提供的用戶端識別碼和用戶端密碼服務主體認證輪替方法。

Azure CLI ARO 更新說明

如需詳細資訊,請參閱 Azure CLI ARO 更新說明命令:

# Azure CLI ARO update help
az aro update -h