Skapa en OpenID Connect-utfärdare på Azure Kubernetes Service (AKS)

Gäller för: ✔️ AKS Automatic ✔️ AKS Standard

Den här artikeln beskriver hur du skapar och hanterar en OpenID Connect-utfärdare (OIDC) för ditt Azure Kubernetes Service (AKS) kluster. Med OIDC-utfärdaren kan ditt AKS-kluster integreras med identitetsprovidrar som Microsoft Entra ID, så att du på ett säkert sätt kan autentisera och tillhandahålla funktioner för enkel inloggning (SSO) för program som körs i klustret.

För de flesta produktionsarbetsbelastningar är AKS Automatic den rekommenderade STANDARD-AKS-upplevelsen. AKS Automatic är produktionsklar som standard och innehåller OIDC-utfärdaren som en förkonfigurerad säkerhetsfunktion. I AKS Standard beror OIDC-utfärdarbeteendet på Kubernetes version och klustertillstånd, och du kan aktivera det manuellt när det behövs.

Mer information om AKS Automatic finns i Vad är Azure Kubernetes Service (AKS) Automatisk?

OIDC-utfärdare i AKS Automatic och AKS Standard

Båda AKS-klusterlägena stöder OIDC-utfärdare, men konfigurationen skiljer sig åt:

  • AKS Automatic: OIDC-utfärdaren är förkonfigurerad.
  • AKS Standard: Du kan behöva aktivera OIDC-utfärdare uttryckligen, beroende på version och om den redan har konfigurerats.

I de flesta produktionsscenarier börjar du med AKS Automatic för att använda produktionsklara standardvärden och minska driftkostnaderna.

Om OpenID Connect (OIDC) på AKS

OpenID Connect (OIDC) utökar OAuth 2.0-auktoriseringsprotokollet för användning som ett annat autentiseringsprotokoll utfärdat av Microsoft Entra ID. Du kan använda OIDC för att aktivera enkel inloggning (SSO) mellan OAuth-aktiverade program i ditt AkS-kluster (Azure Kubernetes Service) med hjälp av en säkerhetstoken som kallas för en ID-token. Du kan aktivera OIDC-utfärdaren i dina AKS-kluster, vilket gör att Microsoft Entra ID (eller en annan molnleverantörs identitets- och åtkomsthanteringsplattform) kan identifiera API-serverns offentliga signeringsnycklar.

Förutsättningar

Plattformskrav:

Versionsspecifikt beteende (AKS Standard):

  • OIDC-utfärdaren är aktiverad som standard (ingen --enable-oidc-issuer flagga behövs) för nyligen skapade AKS-kluster i Kubernetes version 1.34 eller senare.
  • För befintliga kluster är OIDC inte aktiverat som standard oavsett Kubernetes-version och kräver manuell aktivering.
  • Automatisk förlängning av token har inaktiverats (--service-account-extend-token-expiration=false) för Kubernetes-version 1.30.0 eller senare.
  • Om OIDC-utfärdaren inte tidigare har konfigurerats krävs manuell aktivering för Kubernetes-versioner tidigare än 1.34.
  • Projekterade tjänstkontotoken krävs för Kubernetes version 1.30 eller senare kluster.

Viktiga överväganden:

  • Du kan inte inaktivera OIDC-utfärdaren när den är aktiverad.
  • Aktivering av OIDC-utfärdare i befintliga kluster kräver omstart av API-servern (kort stilleståndstid).
  • Maximal tokenlivslängd är 24 timmar (en dag).

Skapa ett AKS-kluster med OIDC-utfärdaren

I AKS Automatic är OIDC-utfärdaren förkonfigurerad. Du behöver inte ett separat OIDC-utfärdaraktiveringssteg.

Skapa ett AKS-automatiskt kluster genom att följa snabbstarten:

AKS Standard

Skapa ett AKS Standard-kluster med kommandot az aks create med parametern --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

Anmärkning

På AKS Standard-kluster som skapats med Kubernetes version 1.34 eller senare aktiveras OIDC-utfärdaren som standard för nya kluster.

Aktivera OIDC-utfärdare i ett befintligt AKS Standard-kluster

Aktivera OIDC-utfärdaren i ett befintligt AKS Standard-kluster med hjälp av az aks update kommandot med parametern --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 

Hämta OIDC-utfärdarens URL

Hämta url:en för OIDC-utfärdaren med hjälp av az aks show kommandot .

# 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

Som standard använder utfärdaren bas-URL:en https://{region}.oic.prod-aks.azure.com, där värdet för {region} matchar platsen där du distribuerade AKS-klustret.

Rotera OIDC-signeringsnyckeln

Viktigt!

Tänk på följande när du roterar OIDC-signeringsnycklar:

  • Om du vill ogiltigförklara den gamla nyckeln omedelbart efter nyckelrotationen, måste du rotera OIDC-nyckeln två gånger och starta om poddarna med hjälp av projicerade tjänstkontotoken.
  • Både gamla och nya nycklar är giltiga i 24 timmar efter rotation.
  • Du måste uppdatera token manuellt var 24:e timme (såvida du inte använder Azure identitetsklientbibliotek som uppdateras automatiskt).

Rotera OIDC-nyckeln med kommandot az aks oidc-issuer .

# 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

Hämta identifieringsdokumentet

Gå till url:en för OIDC-utfärdaren i webbläsaren och lägg till /.well-known/openid-configuration i URL:en.

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

Dina utdata bör likna följande exempelutdata:

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

Hämta JWK-setdokumentet

Gå till jwks_uri i upptäcktsdokumentet i webbläsaren.

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

Dina utdata bör likna följande exempelutdata:

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

Anmärkning

Vid nyckelrotation finns det en extra nyckel i discovery-dokumentet.