Creación de un proveedor de OpenID Connect en Azure Kubernetes Service (AKS)
OpenID Connect (OIDC) amplía el protocolo de autorización OAuth 2.0 para usarlo como protocolo de autenticación adicional emitido por Microsoft Entra ID. Puede usar OIDC para habilitar el inicio de sesión único (SSO) entre las aplicaciones habilitadas para OAuth en su clúster de Azure Kubernetes Service (AKS) mediante un token de seguridad denominado token de identificador. Con el clúster de AKS, puede habilitar el emisor de OpenID Connect (OIDC), que permite que Microsoft Entra ID, u otra plataforma de administración de identidades y acceso del proveedor de nube, detecte las claves de firma pública del servidor de API.
AKS gira la clave automáticamente y periódicamente. Si no desea esperar, puede rotar la clave manualmente e inmediatamente. La duración máxima del token emitido por el proveedor OIDC es de un día.
Advertencia
Habilitar el emisor de OIDC en un clúster existente cambiará el emisor del token de la cuenta de servicio actual a un nuevo valor, lo que podría provocar un tiempo de inactividad, porque reinicia el servidor de API. Si los pods de aplicación que usan un token de servicio permanecieran en estado de error después de habilitar el emisor de OIDC, se recomienda reiniciar manualmente los pods.
En este artículo, aprenderá a crear, actualizar y administrar el emisor de OIDC para el clúster.
Importante
Después de habilitar el emisor de OIDC en el clúster, no se admite la deshabilitación.
Es necesario actualizar el token periódicamente. Si usa el SDK, la rotación es automática. De lo contrario, debe actualizar el token manualmente cada 24 horas.
Requisitos previos
- La CLI de Azure, versión 2.42.0 o versiones posteriores. Ejecute
az --version
para buscar su versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure. - AKS admite el emisor de OIDC en la versión 1.22 y posteriores.
Creación de un clúster de AKS con el emisor de OIDC
Puede crear un clúster de AKS con el comando az aks create y el parámetro --enable-oidc-issuer
para habilitar el emisor de OIDC. En el siguiente ejemplo se crea un clúster denominado myAKSCluster con un nodo en myResourceGroup:
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--enable-oidc-issuer \
--generate-ssh-keys
Actualización de un clúster de AKS con el emisor de OIDC
Puede crear un clúster de AKS con el comando az aks update y el parámetro --enable-oidc-issuer
para habilitar el emisor de OIDC. En el siguiente ejemplo se actualiza un clúster denominado myAKSCluster:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer
Visualización de la dirección URL del emisor de OIDC
Para obtener la dirección URL del emisor de OIDC, ejecute el comando az aks show. Reemplace los valores predeterminados para el nombre del clúster y el nombre del grupo de recursos.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
De manera predeterminada, el emisor tiene establecido usar la dirección URL base https://{region}.oic.prod-aks.azure.com
, donde el valor de {region}
coincide con la ubicación en la que se implementa el clúster de AKS.
Rotación de la clave OIDC
Para rotar la clave OIDC, ejecute el comando az aks oidc-issuer. Reemplace los valores predeterminados para el nombre del clúster y el nombre del grupo de recursos.
az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup
Importante
Una vez rotada la clave, la clave antigua (key1) expira después de 24 horas. Tanto la clave antigua (key1) como la nueva clave (key2) son válidas dentro del período de 24 horas después de la rotación. Si quiere invalidar la clave antigua (key1) de inmediato, tiene que girar la clave OIDC dos veces y reiniciar los pods mediante tokens de cuenta de servicio proyectados. A continuación, key2 y key3 son válidas y key1 no es válida.
Comprobación de las claves de OIDC
Obtención de la dirección URL del emisor de OIDC
Para obtener la dirección URL del emisor de OIDC, ejecute el comando az aks show. Reemplace los valores predeterminados para el nombre del clúster y el nombre del grupo de recursos.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
La salida debe ser similar a la siguiente:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/
De manera predeterminada, el emisor tiene establecido usar la dirección URL base https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}
, donde el valor de {region}
coincide con la ubicación en la que se implementa el clúster de AKS. El valor {uuid}
representa la clave OIDC, que es un guid generado aleatoriamente para cada clúster inmutable.
Obtención del documento de detección
Para obtener el documento de detección, copie la dirección URL https://(OIDC issuer URL).well-known/openid-configuration
y ábrala en el explorador.
La salida debe ser similar a la siguiente:
{
"issuer": "https://eastus.oic.prod-aks.azure.com/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/00000000-0000-0000-0000-000000000000/",
"jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
"response_types_supported": [
"id_token"
],
"subject_types_supported": [
"public"
],
"id_token_signing_alg_values_supported": [
"RS256"
]
}
Obtener el documento conjunto de JWK
Para obtener el documento conjunto de JWK, copie el jwks_uri
del documento de detección y, después, en la barra de direcciones del explorador.
La salida debe ser similar a la siguiente:
{
"keys": [
{
"use": "sig",
"kty": "RSA",
"kid": "xxx",
"alg": "RS256",
"n": "xxxx",
"e": "AQAB"
},
{
"use": "sig",
"kty": "RSA",
"kid": "xxx",
"alg": "RS256",
"n": "xxxx",
"e": "AQAB"
}
]
}
Durante la rotación de claves, hay otra clave presente en el documento de detección.
Pasos siguientes
- Consulte Configuración de la creación de una relación de confianza entre una aplicación y un proveedor de identidades externo para comprender cómo una credencial de identidad federada crea una relación de confianza entre una aplicación del clúster y un proveedor de identidades externo.
- Revise Microsoft Entra Workload ID (versión preliminar) Este método de autenticación se integra con las funcionalidades nativas de Kubernetes para federarse con cualquier proveedor de identidades externo en beneficio de la aplicación.
- Consulte Protección del tráfico de red de pods para comprender cómo usar el motor de directivas de red y crear directivas de red de Kubernetes para controlar el flujo de tráfico entre pods en AKS.
Azure Kubernetes Service