Rotacione as credenciais da entidade de serviço do cluster do ARO (Red Hat OpenShift no Azure)

O artigo fornece os detalhes necessários para rotacionar as credenciais da entidade de serviço nos clusters do ARO (Red Hat OpenShift no Azure).

Antes de começar

O artigo presume que há um cluster do ARO existente com as atualizações mais recentes aplicadas.

O requisito mínimo da CLI do Azure para rotacionar as credenciais da entidade de serviço em um cluster do ARO é a versão 2.24.0.

Para verificar qual versão da CLI do Azure está sendo executada:

# Azure CLI version
az --version

Para instalar ou atualizar a CLI do Azure, siga Instalar a CLI do Azure.

As instruções a seguir usam a sintaxe bash.

Rotação de credenciais da entidade de serviço

Importante

A rotação de credenciais da entidade de serviço pode levar mais de duas horas, dependendo do estado do cluster.

A rotação de credenciais da entidade de serviço tem dois métodos:

Rotação automatizada de credenciais da entidade de serviço

Importante

A rotação automatizada de credenciais da entidade de serviço exige que o cluster do ARO seja criado com a CLI do Azure versão 2.24.0 ou superior.

A rotação automatizada de credenciais da entidade de serviço verifica se a entidade de serviço existe e rotaciona ou cria uma entidade de serviço.

Rotacione automaticamente as credenciais da entidade de serviço com o seguinte comando:

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

Rotação de credenciais da entidade de serviço do client-id e do client-secret fornecidos pelo usuário

Rotacione manualmente as credenciais da entidade de serviço com o client-id e o client-secret fornecidos pelo usuário com as seguintes instruções:

Recupere a clientId da entidade de serviço (--client-id) e defina-a como a variável de ambiente SP_ID.

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

Gere um novo segredo seguro (--client-secret) para a entidade de serviço usando a variável SP_ID acima. Armazene o novo segredo seguro como uma variável de ambiente 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)

Rotacione as credenciais da entidade de serviço usando as variáveis de ambiente acima.

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

Solucionar problemas

Data de validade da entidade de serviço

As credenciais da entidade de serviço têm uma data de validade definida de um ano e devem ser rotacionadas dentro desse período determinado.

Se a data de validade tiver passado, os seguintes erros poderão ocorrer:

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.

Para verificar a data de validade das credenciais da entidade de serviço, execute o seguinte:

# 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 as credenciais da entidade de serviço expirarem, atualize usando um dos dois métodos de rotação de credenciais.

O aplicativo AAD de cluster contém um segredo do cliente com uma descrição vazia

Ao usar a rotação automatizada de credenciais da entidade de serviço, ocorre o seguinte erro:

$ 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>`.

O cluster não foi criado usando a CLI do Azure 2.24.0 ou superior. Em vez disso, use o método de rotação de credenciais da entidade de serviço do client-id e do client-secret fornecidos pelo usuário.

Comando ARO update help da CLI do Azure

Para obter mais detalhes, confira o comando ARO update help da CLI do Azure:

# Azure CLI ARO update help
az aro update -h