Een OpenID Connect-verlener maken op Azure Kubernetes Service (AKS)

Van toepassing op: ✔️ AKS Automatic ✔️ AKS Standard

In dit artikel wordt beschreven hoe u een OIDC-verlener (OpenID Connect) voor uw Azure Kubernetes Service (AKS)-cluster maakt en beheert. Met de OIDC-verlener kan uw AKS-cluster worden geïntegreerd met id-providers zoals Microsoft Entra ID, zodat u veilig kunt verifiëren en mogelijkheden voor eenmalige aanmelding (SSO) kunt bieden voor toepassingen die in het cluster worden uitgevoerd.

Voor de meeste productieworkloads is AKS Automatic de aanbevolen standaard-AKS-ervaring. AKS Automatic is standaard gereed voor productie en bevat OIDC-verlener als vooraf geconfigureerde beveiligingsmogelijkheid. In AKS Standard is het gedrag van OIDC-verleners afhankelijk van de Kubernetes-versie en de clusterstatus en kunt u deze indien nodig handmatig inschakelen.

Zie Wat is Azure Kubernetes Service (AKS) Automatisch voor meer informatie over AKS Automatic?

OIDC-uitgever in AKS Automatic en AKS Standard

Beide AKS-clustermodi bieden ondersteuning voor OIDC-verleners, maar de installatie verschilt:

  • AKS Automatisch: OIDC-verlener is vooraf geconfigureerd.
  • AKS Standard: Mogelijk moet u OIDC-verlener expliciet inschakelen, afhankelijk van de versie en of deze al is geconfigureerd.

Voor de meeste productiescenario's begint u met AKS Automatisch om standaardinstellingen voor productie te gebruiken en operationele overhead te verminderen.

Over OpenID Connect (OIDC) op AKS

OpenID Connect (OIDC) breidt het OAuth 2.0-autorisatieprotocol uit voor gebruik als een ander verificatieprotocol dat is uitgegeven door Microsoft Entra ID. U kunt OIDC gebruiken om eenmalige aanmelding in te schakelen tussen OAuth-toepassingen in uw AKS-cluster (Azure Kubernetes Service) met behulp van een beveiligingstoken met de naam een id-token. U kunt de OIDC-verlener inschakelen op uw AKS-clusters, zodat Microsoft Entra ID (of het identiteits- en toegangsbeheerplatform van een andere cloudprovider) de openbare ondertekeningssleutels van de API-server kan detecteren.

Vereisten

Platformvereisten:

Versiespecifiek gedrag (AKS Standard):

  • OIDC-verlener is standaard ingeschakeld (geen --enable-oidc-issuer vlag nodig) voor nieuw gemaakte AKS-clusters in Kubernetes versie 1.34 of hoger.
  • Voor bestaande clusters is OIDC niet standaard ingeschakeld, ongeacht de Kubernetes-versie en is handmatige activering vereist.
  • Automatische tokenverlenging uitgeschakeld (--service-account-extend-token-expiration=false) voor Kubernetes-versie 1.30.0 of later.
  • Als OIDC-verlener niet eerder is geconfigureerd, is handmatige activering vereist voor Kubernetes-versies ouder dan 1.34.
  • Geprojecteerde service-accounttokens zijn vereist voor Kubernetes-clusters met versie 1.30 of hoger.

Belangrijke overwegingen:

  • U kunt OIDC-verlener niet uitschakelen nadat deze is ingeschakeld.
  • Voor het inschakelen van OIDC-verlener op bestaande clusters moet de API-server opnieuw worden opgestart (korte downtime).
  • De maximale levensduur van tokens is 24 uur (één dag).

Een AKS-cluster maken met de OIDC-verlener

In AKS Automatic is de OIDC-verlener vooraf geconfigureerd. U hebt geen afzonderlijke stap voor het inschakelen van OIDC-verleners nodig.

Maak een automatisch AKS-cluster door de quickstart te volgen:

AKS Standard

Maak een AKS Standard-cluster met behulp van de az aks create opdracht met de --enable-oidc-issuer parameter.

# 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

Opmerking

Op AKS Standard-clusters die zijn gemaakt met Kubernetes versie 1.34 of hoger, is de OIDC-verlener standaard ingeschakeld voor nieuwe clusters.

OIDC-verlener inschakelen voor een bestaand AKS Standard-cluster

Schakel de OIDC-verlener in op een bestaand AKS Standard-cluster met behulp van de az aks update opdracht met de --enable-oidc-issuer parameter.

# 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 

De URL van de OIDC-verlener ophalen

Haal de URL van de OIDC-verlener op met behulp van de az aks show opdracht.

# 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

Standaard gebruikt de issuer de basis-URL https://{region}.oic.prod-aks.azure.com, waarbij de waarde voor {region} overeenkomt met de locatie waar u het AKS-cluster hebt geïmplementeerd.

De OIDC-ondertekeningssleutel draaien

Belangrijk

Houd rekening met de volgende overwegingen bij het roteren van OIDC-ondertekeningssleutels:

  • Als u de oude sleutel direct na sleutelrotatie ongeldig wilt maken, moet u de OIDC-sleutel tweemaal draaien en de pods opnieuw starten met behulp van geprojecteerde serviceaccounttokens.
  • Zowel oude als nieuwe sleutels blijven 24 uur na rotatie geldig.
  • U moet het token elke 24 uur handmatig vernieuwen (tenzij u Azure Identity-clientbibliotheken gebruikt, die automatisch worden vernieuwd).

Draai de OIDC-sleutel met behulp van de az aks oidc-issuer opdracht.

# 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

Het detectiedocument ophalen

Ga in uw browser naar de URL van uw OIDC-uitgever en voeg /.well-known/openid-configuration toe aan de URL.

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

De uitvoer zou ongeveer moeten lijken op de volgende voorbeelduitvoer:

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

Het JWK Set-document ophalen

Ga in uw browser naar de jwks_uri uit het discovery-document.

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

De uitvoer zou ongeveer moeten lijken op de volgende voorbeelduitvoer:

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

Opmerking

Tijdens het roteren van sleutels bevat het detectiedocument één extra sleutel.