Rotación de credenciales de entidad de servicio para un clúster de Red Hat OpenShift en Azure (ARO)

El artículo proporciona los detalles necesarios para rotar credenciales de entidad de servicio en clústeres de Red Hat OpenShift en Azure (ARO).

Antes de empezar

En el artículo, se da por supuesto que hay un clúster de ARO con las actualizaciones más recientes aplicadas.

La versión mínima necesaria de la CLI de Azure para rotar credenciales de entidad de servicio en un clúster de ARO es la 2.24.0.

Para comprobar la versión de la CLI de Azure, ejecute:

# Azure CLI version
az --version

Para instalar o actualizar la CLI de Azure, siga las indicaciones que se dan en Instalación de la CLI de Azure.

En las instrucciones siguientes, se usa la sintaxis de Bash.

Rotación de credenciales de entidad de servicio

Importante

La rotación de credenciales de entidad de servicio puede tardar hasta dos horas, según el estado del clúster.

La rotación de credenciales de entidad de servicio tiene dos métodos:

Rotación de credenciales de entidad de servicio automatizada

Importante

La rotación de credenciales de entidad de servicio automatizada requiere que el clúster de ARO se haya creado con la versión 2.24.0 o posterior de la CLI de Azure.

La rotación de credenciales de entidad de servicio automatizada comprueba si la entidad de servicio existe y rota o crea una nueva entidad de servicio.

Para rotar automáticamente las credenciales de entidad de servicio, utilice el siguiente comando:

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

Rotación de credenciales de entidad de servicio con un id. o un secreto de cliente proporcionados por el usuario

Para rotar manualmente credenciales de entidad de servicio con un id. y un secreto de cliente proporcionados por el usuario, siga estas instrucciones:

Recupere el id. de cliente (--client-id) de la entidad de servicio y establézcalo como la variable de entorno SP_ID.

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

Genere un nuevo secreto seguro (--client-secret) para la entidad de servicio usando la variable SP_ID anterior. Almacene el nuevo secreto seguro como la variable de entorno 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)

Rote las credenciales de entidad de servicio usando las variables de entorno anteriores.

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

Solución de problemas

Fecha de expiración de las entidades de servicio

Las credenciales de entidad de servicio tienen una fecha de expiración establecida de un año y deben rotarse dentro de ese período de tiempo.

Si se supera la fecha de expiración, pueden ocurrir los siguientes errores:

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 comprobar la fecha de expiración de las credenciales de la entidad de servicio, ejecute el siguiente código:

# 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

Si las credenciales de entidad de servicio han expirado, actualícelas con uno de los dos métodos de rotación de credenciales.

La aplicación de AAD del clúster contiene un secreto de cliente con una descripción vacía

Cuando se usa la rotación de credenciales de entidad de servicio automatizada, se produce el siguiente error:

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

El clúster no se ha creado con la versión 2.24.0 o posterior de la CLI de Azure. Use el método de rotación de credenciales de entidad de servicio con un id. o un secreto de cliente proporcionados por el usuario.

Ayuda para la actualización de ARO con la CLI de Azure

Si desea obtener más información, utilice el siguiente comando para consultar la ayuda para la actualización de ARO con la CLI de Azure:

# Azure CLI ARO update help
az aro update -h