Använda externa identitetsprovidrar med AKS-strukturerad autentisering (förhandsversion)

Azure Kubernetes Service (AKS) stöder strukturerad autentisering, vilket gör att du kan konfigurera externa identitetsprovidrar för att autentisera användare till Kubernetes API-servern. Den här funktionen baseras på den överordnade Kubernetes-strukturerade autentiseringskonfigurationen. AKS implementerar den här funktionen via JWT-autentisering (JSON Web Token) som validerar token från externa identitetsprovidrar enligt din konfiguration. Med strukturerad autentisering kan organisationer integrera AKS med sin befintliga identitetsinfrastruktur utöver Microsoft Entra-ID.

Den här artikeln innehåller en översikt över hur du använder externa identitetsprovidrar med AKS-strukturerad autentisering, inklusive viktiga begrepp, säkerhetsöverväganden och nästa steg för konfiguration.

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Fördelar med autentisering med extern identitetsprovider

Strukturerad autentisering utökar AKS utöver traditionell Microsoft Entra-ID-integrering genom att stödja OIDC-identitetsprovidrar (Branschstandard OpenID Connect). Med den här funktionen kan du göra följande:

  • Autentisera användare med externa identitetsprovidrar som Google, GitHub eller någon OIDC-kompatibel leverantör.
  • Underhålla centraliserad identitetshantering i hela organisationen.
  • Implementera regler för anpassad anspråksverifiering och användarmappning.
  • Stöd för flera identitetsprovidrar samtidigt i ett enda kluster.

Autentiseringsflöde för extern identitetsprovider

När en användare försöker komma åt Kubernetes API-servern med strukturerad autentisering med en extern identitetsprovider är autentiserings- och auktoriseringsflödet följande:

  • Autentisering: Följande steg verifierar användarens identitet:
    • Tokenpresentation: Användaren presenterar en JWT-token från sin konfigurerade identitetsprovider.
    • Tokenverifiering: API-servern validerar tokens signatur, utfärdare, målgrupp och förfallodatum.
    • Anspråksbearbetning: Anpassade valideringsregler för anspråk tillämpas för att säkerställa att token uppfyller dina krav.
    • Användarmappning: Anspråk mappas till Kubernetes användaridentitet (användarnamn, grupper och extra attribut).
  • Auktorisering: Standard Kubernetes Role-Based Access Control (RBAC) avgör vilka åtgärder den autentiserade användaren kan utföra.

Konceptdiagram som visar hur extern identitetsproviderbaserad autentisering fungerar med AKS-kluster.

Identitetsleverantörer som stöds

AkS-strukturerad autentisering tillåter alla OIDC-kompatibla identitetsprovider, men vanliga leverantörer inkluderar:

  • GitHub: Autentisera med GitHub-identiteter eller GitHub Actions.
  • Google OAuth 2.0: Använd Google-konton för autentisering.
  • Generiska OIDC-leverantörer: Alla leverantörer som implementerar OIDC-standarder.
  • Anpassade identitetslösningar: Organisationsspecifika OIDC-implementeringar.

Anmärkning

Microsoft Entra-ID stöds inte som extern identitetsprovider via strukturerad autentisering. Använd den befintliga Microsoft Entra-integreringen för Microsoft Entra-ID-autentisering.

Krav för externa identitetsprovidrar

Externa identitetsprovidrar måste uppfylla följande krav för att arbeta med AKS-strukturerad autentisering:

  • Stöd för OIDC-standarder.
  • Ange offentligt tillgängliga OIDC-identifieringsslutpunkter.
  • Utfärda JWT-token med lämpliga anspråk.
  • Vara tillgänglig från AKS-klusternoder för tokenverifiering.

JWT-auktoriseringar för strukturerad autentisering i AKS

En JWT-autentisering är ett konfigurationsobjekt som definierar hur AKS validerar och bearbetar token från en extern identitetsprovider. AKS förväntar sig till exempel en ID-token (JWT) vars anspråk (målgrupp) matchar det målgruppsvärde aud som du konfigurerar för autentiseringen, till exempel "my-api", eller ett OAuth-klient-ID. Varje JWT-autentisering innehåller följande komponenter:

  • Utfärdarkonfiguration: Anger OIDC-utfärdarens URL och förväntade målgruppsvärden för token.
  • Regler för anspråksverifiering: Använder CEL-uttryck (Common Expression Language) för att framtvinga anpassad valideringslogik på tokenanspråk.
  • Anspråksmappningar: Definierar hur JWT-anspråk mappas till Kubernetes-användarattribut som användarnamn, grupper och extra fält.
  • Regler för användarverifiering: Tillämpar extra valideringslogik efter anspråksmappning för att ytterligare begränsa eller tillåta åtkomst.

CEL-uttryck för anspråksverifiering och mappning

Strukturerad autentisering använder CEL-uttryck för flexibel anspråksverifiering och mappning. CEL tillhandahåller en säker sandbox-miljö för utvärdering av anpassad logik mot JWT-anspråk.

Exempel på CEL-uttryck:

// Validate that the 'sub' claim exists
has(claims.sub)

// Map username with AKS prefix
'aks:jwt:' + claims.sub

// Map groups from comma-separated string
claims.groups.split(',').map(g, 'aks:jwt:' + g)

// Conditional mapping based on claim verification
'aks:jwt:' + (claims.email_verified ? claims.email : claims.sub)

Metodtips för säkerhet

Tänk på följande säkerhetsmetoder när du använder externa identitetsprovidrar med AKS-strukturerad autentisering:

  • Använd stark anspråksverifiering: Implementera omfattande valideringsregler för att säkerställa att endast auktoriserade token godkänns.
  • Begränsa tokenomfång: Konfigurera din identitetsprovider för att utfärda token med minimala nödvändiga anspråk.
  • Regelbunden rotation: Rotera klienthemligheter och certifikat regelbundet.
  • Övervaka åtkomst: Aktivera resursloggar och aktivera kube-apiserver loggar för att inspektera eventuella problem med de konfigurerade JWT-autentiseringarna och spåra autentiseringshändelser.
  • Testkonfigurationer: Verifiera din JWT-autentiseringskonfiguration i en icke-produktionsmiljö först.

Säkerhetsfrågor

Tänk på följande säkerhetsaspekter när du använder externa identitetsprovidrar med AKS-strukturerad autentisering:

  • Prefixkrav: Alla användarnamn och grupper som mappas via strukturerad autentisering måste föregås av aks:jwt: för att förhindra konflikter med andra autentiseringsmetoder och systemkonton.
  • Nätverksåtkomst: Identitetsproviderns slutpunkter måste vara tillgängliga från:
    • AKS-klusternoder för tokenverifiering.
    • Klientsystem för tokenförvärv.
    • Alla nätverksvägar som ingår i autentiseringsflödet.
  • Valideringslager: Strukturerad autentisering innehåller flera valideringslager:
    • Validering av tokensignatur garanterar tokens äkthet.
    • Validering av standardanspråk verifierar utfärdare, målgrupp och förfallodatum.
    • Validering av anpassade anspråk tillämpar organisationens specifika krav.
    • Slutgiltiga kontroller för användarverifiering efter anspråksmappning.

Mer information om strukturerad autentisering och relaterade funktioner finns i följande resurser: