Girar credenciais da entidade de serviço para seu cluster do Azure Red Hat OpenShift (ARO)

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

Antes de começar

O artigo pressupõe que existe um cluster ARO existente com as atualizações mais recentes aplicadas.

Os requisitos mínimos da CLI do Azure para girar as credenciais da entidade de serviço em um cluster ARO é 2.24.0.

Para verificar a versão da CLI do Azure, execute:

# 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 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 2 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 requer que o cluster 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 verificará se a entidade de serviço existe e alternará ou criará uma nova entidade de serviço.

Gire 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 identificação do cliente e do serviço secreto do cliente fornecida pelo usuário

Gire manualmente as credenciais da entidade de serviço com o ID do cliente fornecido pelo usuário e o segredo do cliente com as seguintes instruções:

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

# 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 SP_ID variável acima. Armazene o novo segredo seguro como SP_SECRET variável de ambiente.

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

Gire 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

Resolver problemas

Data de expiração do principal de serviço

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

Se a data de expiração tiver passado, os seguintes erros são possíveis:

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 expiração 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 tiverem expirado, 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 de identificação do cliente e do serviço secreto do cliente fornecido pelo usuário.

Ajuda de atualização do Azure CLI ARO

Para obter mais detalhes, consulte o comando de ajuda de atualização do Azure CLI ARO:

# Azure CLI ARO update help
az aro update -h