Skapa en OpenID Connect-provider i Azure Kubernetes Service (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. Med ditt AKS-kluster kan du aktivera OIDC-utfärdaren (OpenID Connect), som gör att Microsoft Entra-ID eller en annan molnleverantörs identitets- och åtkomsthanteringsplattform kan identifiera API-serverns offentliga signeringsnycklar.
AKS roterar nyckeln automatiskt och med jämna mellanrum. Om du inte vill vänta kan du rotera nyckeln manuellt och omedelbart. Den maximala livslängden för token som utfärdats av OIDC-providern är en dag.
Varning
Om du aktiverar OIDC-utfärdaren i ett befintligt kluster ändras den aktuella utfärdaren av tjänstkontotoken till ett nytt värde, vilket kan orsaka stilleståndstid när API-servern startas om. Om dina programpoddar som använder en tjänsttoken förblir i ett feltillstånd när du har aktiverat OIDC-utfärdaren rekommenderar vi att du startar om poddarna manuellt.
I den här artikeln får du lära dig hur du skapar, uppdaterar och hanterar OIDC-utfärdaren för klustret.
Viktigt!
När du har aktiverat OIDC-utfärdaren i klustret stöds inte inaktivering.
Token måste uppdateras regelbundet. Om du använder SDK:et sker rotationen automatiskt. Annars måste du uppdatera token manuellt var 24:e timme.
Förutsättningar
- Azure CLI version 2.42.0 eller senare. Kör
az --version
för att hitta din version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - AKS stöder OIDC-utfärdaren på version 1.22 och senare.
Skapa ett AKS-kluster med OIDC-utfärdaren
Du kan skapa ett AKS-kluster med kommandot az aks create med parametern --enable-oidc-issuer
för att aktivera OIDC-utfärdaren. I följande exempel skapas ett kluster med namnet myAKSCluster med en nod i myResourceGroup:
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--enable-oidc-issuer \
--generate-ssh-keys
Uppdatera ett AKS-kluster med OIDC-utfärdare
Du kan uppdatera ett AKS-kluster med kommandot az aks update med parametern --enable-oidc-issuer
för att aktivera OIDC-utfärdaren. I följande exempel uppdateras ett kluster med namnet myAKSCluster:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer
Visa url:en för OIDC-utfärdaren
Om du vill hämta url:en för OIDC-utfärdaren kör du kommandot az aks show . Ersätt standardvärdena för klusternamnet och resursgruppens namn.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
Som standard är utfärdaren inställd på att använda bas-URL:en https://{region}.oic.prod-aks.azure.com
, där värdet för {region}
matchar platsen där AKS-klustret distribueras.
Rotera OIDC-nyckeln
Om du vill rotera OIDC-nyckeln kör du kommandot az aks oidc-issuer . Ersätt standardvärdena för klusternamnet och resursgruppens namn.
az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup
Viktigt!
När du roterar nyckeln upphör den gamla nyckeln (key1) att gälla efter 24 timmar. Både den gamla nyckeln (key1) och den nya nyckeln (key2) är giltiga inom 24-timmarsperioden efter rotation. Om du vill ogiltigförklara den gamla nyckeln (key1) omedelbart måste du rotera OIDC-nyckeln två gånger och starta om poddarna med hjälp av beräknade tjänstkontotoken. Med den här processen är key2 och key3 giltiga och key1 är ogiltig.
Kontrollera OIDC-nycklarna
Hämta url:en för OIDC-utfärdaren
Om du vill hämta url:en för OIDC-utfärdaren kör du kommandot az aks show . Ersätt standardvärdena för klusternamnet och resursgruppens namn.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
Utflödet bör likna följande:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/
Som standard är utfärdaren inställd på att använda bas-URL:en https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}
, där värdet för {region}
matchar platsen där AKS-klustret distribueras. Värdet {uuid}
representerar OIDC-nyckeln, som är ett slumpmässigt genererat guid för varje kluster som inte kan ändras.
Hämta identifieringsdokumentet
Om du vill hämta identifieringsdokumentet kopierar du URL:en https://(OIDC issuer URL).well-known/openid-configuration
och öppnar den i webbläsaren.
Utflödet bör likna följande:
{
"issuer": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/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
Om du vill hämta JWK Set-dokumentet kopierar jwks_uri
du från identifieringsdokumentet och klistrar in det i webbläsarens adressfält.
Utflödet bör likna följande:
{
"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"
}
]
}
Under nyckelrotationen finns det en annan nyckel i identifieringsdokumentet.
Nästa steg
- Se Konfigurera att skapa en förtroenderelation mellan en app och en extern identitetsprovider för att förstå hur en federerad identitetsautentiseringsuppgift skapar en förtroenderelation mellan ett program i klustret och en extern identitetsprovider.
- Granska Microsoft Entra-arbetsbelastnings-ID (förhandsversion). Den här autentiseringsmetoden integreras med kubernetes-inbyggda funktioner för att federera med externa identitetsprovidrar för programmets räkning.
- Se Säker poddnätverkstrafik för att förstå hur du använder nätverksprincipmotorn och skapa Kubernetes-nätverksprinciper för att styra trafikflödet mellan poddar i AKS.
Azure Kubernetes Service