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