Creare un'autorità di certificazione OpenID Connect in Servizio Azure Kubernetes (AKS)

Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard

Questo articolo descrive come creare e gestire un'autorità di certificazione OpenID Connect (OIDC) per il cluster Servizio Azure Kubernetes (AKS). L'autorità di certificazione OIDC consente al cluster del servizio Azure Kubernetes di integrarsi con provider di identità come Microsoft Entra ID, in modo da poter eseguire in modo sicuro l'autenticazione e fornire funzionalità Single Sign-On (SSO) per le applicazioni in esecuzione all'interno del cluster.

Per la maggior parte dei carichi di lavoro di produzione, AKS Automatic è l’esperienza AKS predefinita consigliata. Il servizio Azure Kubernetes automatico è pronto per l'uso in produzione per impostazione predefinita e include l'autorità di certificazione OIDC come funzionalità di sicurezza preconfigurata. In AKS Standard, il comportamento dell'autorità emittente OIDC dipende dalla versione e dallo stato del cluster kubernetes ed è possibile abilitarlo manualmente quando necessario.

Per altre informazioni sul servizio Azure Kubernetes automatico, vedere Che cos'è Servizio Azure Kubernetes (AKS) automatico?

Autorità di certificazione OIDC nel servizio Azure Kubernetes automatico e standard

Entrambe le modalità del cluster AKS supportano l'emittente OIDC, ma la configurazione varia:

  • AKS Automatic: l'autorità di emissione OIDC è preconfigurata.
  • Servizio Azure Kubernetes standard: potrebbe essere necessario abilitare esplicitamente l'autorità di certificazione OIDC, a seconda della versione e del fatto che sia già configurata.

Per la maggior parte degli scenari di produzione, inizia con AKS Automatic per usare impostazioni predefinite adatte all'uso in produzione e ridurre il sovraccarico operativo.

Informazioni su OpenID Connect (OIDC) in AKS

OpenID Connect (OIDC) estende il protocollo di autorizzazione OAuth 2.0 per l'uso come un altro protocollo di autenticazione rilasciato da Microsoft Entra ID. È possibile usare OIDC per abilitare l'accesso Single Sign-On (SSO) tra le applicazioni abilitate per OAuth nel cluster del servizio Azure Kubernetes usando un token di sicurezza denominato token ID. È possibile abilitare l'autorità emittente OIDC nei cluster AKS, il che consente a Microsoft Entra ID (o a una piattaforma di gestione delle identità e degli accessi di un altro provider di servizi cloud) di individuare le chiavi di firma pubblica del server API.

Prerequisiti

Requisiti della piattaforma:

Comportamento specifico della versione (AKS Standard):

  • L'issuer OIDC è abilitato per impostazione predefinita (non è necessario alcun flag --enable-oidc-issuer) per i cluster AKS appena creati con Kubernetes versione 1.34 o successiva.
  • Per i cluster esistenti, OIDC non è abilitato per impostazione predefinita indipendentemente dalla versione di Kubernetes e richiede l'abilitazione manuale.
  • Estensione automatica del token disabilitata (--service-account-extend-token-expiration=false) per la versione 1.30.0 o successiva di Kubernetes.
  • Se l'autorità emittente OIDC non è stata configurata in precedenza, l'abilitazione manuale è necessaria per le versioni di Kubernetes precedenti alla 1.34.
  • I token previsti dell'account di servizio sono necessari per i cluster Kubernetes con versione 1.30 o successiva.

Considerazioni importanti:

  • Non è possibile disabilitare l'autorità emittente OIDC una volta abilitata.
  • L'abilitazione dell'issuer OIDC nei cluster esistenti richiede il riavvio del server API (breve interruzione).
  • La durata massima del token è di 24 ore (un giorno).

Creare un cluster del servizio Azure Kubernetes con l’autorità di certificazione OIDC

In AKS Automatic, l'autorità di emissione OIDC è preconfigurata. Non è necessaria una fase separata di abilitazione dell'issuer OIDC.

Creare un cluster del servizio Azure Kubernetes automatico seguendo l'avvio rapido:

Servizio Azure Kubernetes Standard

Crea un cluster AKS Standard usando il comando az aks create con il parametro --enable-oidc-issuer.

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
    
# Create the AKS Standard cluster with OIDC issuer enabled
az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --node-count 1 \
    --enable-oidc-issuer \
    --generate-ssh-keys

Annotazioni

Nei cluster AKS Standard creati con versione 1.34 o successiva di Kubernetes, l'emittente OIDC è abilitato per impostazione predefinita nei nuovi cluster.

Abilitare l'autorità di certificazione OIDC in un cluster del servizio Azure Kubernetes standard esistente

Abilitare l'emittente OIDC in un cluster AKS Standard esistente usando il comando az aks update con il parametro --enable-oidc-issuer.

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Enable the OIDC issuer on the existing AKS Standard cluster
az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --enable-oidc-issuer 

Ottenere l'URL dell'autorità emittente OIDC

Ottenere l'URL dell'autorità emittente OIDC usando il az aks show comando .

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Get the OIDC issuer URL
az aks show \
    --name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --query "oidcIssuerProfile.issuerUrl" \
    -o tsv

Per impostazione predefinita, l'emittente usa l'URL di base https://{region}.oic.prod-aks.azure.com, dove il valore di {region} corrisponde all'area geografica in cui è stato distribuito il cluster AKS.

Ruotare la chiave di firma OIDC

Importante

Tenere presenti le considerazioni seguenti quando si ruotano le chiavi di firma OIDC:

  • Se si desidera invalidare immediatamente la chiave precedente dopo la rotazione delle chiavi, è necessario ruotare due volte la chiave OIDC e riavviare i pod utilizzando i token proiettati dell'account del servizio.
  • Entrambe le chiavi vecchie e nuove rimangono valide per 24 ore dopo la rotazione.
  • È necessario aggiornare manualmente il token ogni 24 ore (a meno che non si utilizzino le librerie client Azure Identity, che si aggiornano automaticamente).

Ruotare il tasto OIDC usando il az aks oidc-issuer comando .

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Rotate the OIDC signing keys
az aks oidc-issuer rotate-signing-keys \
    --name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP

Ottenere il documento di individuazione

Aprire nel browser l'URL dell'autorità di certificazione OIDC e aggiungere /.well-known/openid-configuration all'URL.

Esempio: https://eastus.oic.prod-aks.azure.com/.well-known/openid-configuration

L'output dovrebbe essere simile all'output di esempio seguente:

{
  "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"
  ]
}

Ottenere il documento JWK Set

Nel browser, passare a jwks_uri dal documento di rilevamento.

Ad esempio: https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks

L'output dovrebbe essere simile all'output di esempio seguente:

{
  "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"
    }
  ]
}

Annotazioni

Durante la rotazione delle chiavi, il documento di rilevamento include una chiave aggiuntiva.