次の方法で共有


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 時間以上かかることがあります。

サービス プリンシパルの資格情報のローテーションには、次の 2 つの方法があります。

サービス プリンシパルの認証情報の自動ローテーション

重要

サービス プリンシパルの資格情報の自動ローテーションでは、Azure CLI バージョン 2.24.0 以降で ARO クラスターを作成する必要があります。

サービス プリンシパルの資格情報の自動ローテーションでは、サービス プリンシパルが存在するかどうかを確認し、新しいサービス プリンシパルをローテーションまたは作成します。

次のコマンドを使用して、サービス プリンシパルの資格情報を自動的にローテーションします。

# 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

トラブルシューティング

サービス プリンシパルの有効期限

サービス プリンシパルの資格情報には 1 年の有効期限が設定されており、その期間内にローテーションする必要があります。

有効期限が過ぎている場合は、次のエラーが発生する可能性があります。

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

サービス プリンシパルの資格情報の有効期限が切れている場合は、2 つの資格情報ローテーション方法のいずれかを使用して更新してください。

クラスター 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 更新プログラムのヘルプ

詳細については、Azure CLI ARO 更新のヘルプ コマンドを参照してください。

# Azure CLI ARO update help
az aro update -h