Ruotare le credenziali dell'entità servizio per il cluster Azure Red Hat OpenShift (ARO)
L'articolo fornisce i dettagli necessari per ruotare le credenziali dell'entità servizio nei cluster Azure Red Hat OpenShift (ARO).
Operazioni preliminari
L'articolo presuppone che sia presente un cluster ARO esistente con gli aggiornamenti più recenti applicati.
I requisiti minimi dell'interfaccia della riga di comando di Azure per ruotare le credenziali dell'entità servizio in un cluster ARO sono 2.24.0.
Per controllare la versione dell'interfaccia della riga di comando di Azure, eseguire:
# Azure CLI version
az --version
Per installare o aggiornare l'interfaccia della riga di comando di Azure, seguire Installare l'interfaccia della riga di comando di Azure.
Le istruzioni seguenti usano la sintassi bash.
Rotazione delle credenziali dell'entità servizio
Importante
La rotazione delle credenziali dell'entità servizio può richiedere fino a 2 ore a seconda dello stato del cluster.
La rotazione delle credenziali dell'entità servizio prevede due metodi:
- Rotazione automatica delle credenziali dell'entità servizio
- Rotazione delle credenziali dell'entità servizio client e dell'ID client e dell'entità servizio privata fornita dall'utente
Rotazione automatica delle credenziali dell'entità servizio
Importante
La rotazione automatica delle credenziali dell'entità servizio richiede la creazione del cluster ARO con l'interfaccia della riga di comando di Azure versione 2.24.0 o successiva.
La rotazione automatica delle credenziali dell'entità servizio verificherà se l'entità servizio esiste e ruota o crea una nuova entità servizio.
Ruotare automaticamente le credenziali dell'entità servizio con il comando seguente:
# Automatically rotate service principal credentials
az aro update --refresh-credentials --name MyManagedCluster --resource-group MyResourceGroup
Rotazione delle credenziali dell'entità servizio client e dell'ID client e dell'entità servizio privata fornita dall'utente
Ruotare manualmente le credenziali dell'entità servizio con l'id client e il segreto client forniti dall'utente con le istruzioni seguenti:
Recuperare l'id client dell'entità servizio (--client-id
) e impostarlo come SP_ID
variabile di ambiente.
# Retrieve the service principal clientId
SP_ID=$(az aro show --name MyManagedCluster --resource-group MyResourceGroup \
--query servicePrincipalProfile.clientId -o tsv)
Generare un nuovo segreto sicuro (--client-secret
) per l'entità servizio usando la SP_ID
variabile precedente. Archiviare il nuovo segreto sicuro come SP_SECRET
variabile di ambiente.
# Generate a new secure secret for the service principal
SP_SECRET=$(az ad sp credential reset --id $SP_ID --query password -o tsv)
Ruotare le credenziali dell'entità servizio usando le variabili di ambiente precedenti.
# Rotate service principal credentials
az aro update --client-id $SP_ID --client-secret $SP_SECRET \
--name MyManagedCluster --resource-group MyResourceGroup
Risoluzione dei problemi
Data di scadenza dell'entità servizio
Le credenziali dell'entità servizio hanno una data di scadenza impostata di un anno e devono essere ruotate entro l'intervallo di tempo specificato.
Se la data di scadenza ha superato gli errori seguenti sono possibili:
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.
Per controllare la data di scadenza delle credenziali dell'entità servizio, eseguire le operazioni seguenti:
# 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
Se le credenziali dell'entità servizio sono scadute, aggiornare usando uno dei due metodi di rotazione delle credenziali.
L'applicazione AAD del cluster contiene un segreto client con una descrizione vuota
Quando si usa la rotazione automatica delle credenziali dell'entità servizio, si verifica l'errore seguente:
$ 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>`.
Il cluster non è stato creato usando l'interfaccia della riga di comando di Azure 2.24.0 o versione successiva. Usare invece il metodo di rotazione delle credenziali dell'entità servizio client e dell'entità servizio client fornito dall'utente.
Guida all'aggiornamento dell'interfaccia della riga di comando di Azure
Per altri dettagli, vedere il comando della Guida per l'aggiornamento dell'interfaccia della riga di comando di Azure:
# Azure CLI ARO update help
az aro update -h