AKS-hanterad Azure Active Directory integrering

AKS-hanterad Azure AD-integrering är utformad för att förenkla Integrering med Azure AD, där användare tidigare krävdes för att skapa en klientapp, en serverapp och krävde att Azure AD-klienten skulle bevilja läsbehörighet för katalog. I den nya versionen hanterar AKS-resursprovidern klient- och serverapparna åt dig.

Översikt över Azure AD-autentisering

Klusteradministratörer kan konfigurera Kubernetes rollbaserad åtkomstkontroll (Kubernetes RBAC) baserat på en användares identitet eller kataloggruppsmedlemskap. Azure AD-autentisering tillhandahålls till AKS-kluster med OpenID Connect. OpenID Connect är ett identitetslager som bygger på OAuth 2.0-protokollet. Mer information om hur OpenID Connect finns i dokumentationen för Open ID Connect.

Läs mer om Azure AD-integreringsflödet i dokumentationen Azure Active Directory om integrationsbegrepp.

Begränsningar

  • AKS-hanterad Azure AD-integrering kan inte inaktiveras
  • Det finns inte stöd för att ändra ett AKS-hanterat Azure AD-integrerat kluster till äldre AAD
  • RBAC-aktiverade kluster som inte är Kubernetes stöds inte för AKS-hanterad Azure AD-integrering
  • Det finns inte stöd för att ändra den Azure AD-klient som är associerad med AKS-hanterad Azure AD-integrering

Förutsättningar

  • Azure CLI version 2.11.0 eller senare
  • Kubectl med lägst version 1.18.1 eller kubelogin
  • Om du använder helm ,lägsta version av helm 3.3.

Viktigt

Du måste använda Kubectl med lägst version 1.18.1 eller kubelogin. Skillnaden mellan mindre versioner av Kubernetes och kubectl får inte vara mer än 1 version. Om du inte använder rätt version kommer du att märka autentiseringsproblem.

Använd följande kommandon för att installera kubectl och kubelogin:

sudo az aks install-cli
kubectl version --client
kubelogin --version

Följ dessa anvisningar för andra operativsystem.

Innan du börjar

För klustret behöver du en Azure AD-grupp. Den här gruppen behövs som administratörsgrupp för klustret för att bevilja klusteradministratörsbehörigheter. Du kan använda en befintlig Azure AD-grupp eller skapa en ny. Registrera objekt-ID:t för din Azure AD-grupp.

# List existing groups in the directory
az ad group list --filter "displayname eq '<group-name>'" -o table

Använd följande kommando för att skapa en ny Azure AD-grupp för dina klusteradministratörer:

# Create an Azure AD group
az ad group create --display-name myAKSAdminGroup --mail-nickname myAKSAdminGroup

Skapa ett AKS-kluster med Azure AD aktiverat

Skapa ett AKS-kluster med hjälp av följande CLI-kommandon.

Skapa en Azure-resursgrupp:

# Create an Azure resource group
az group create --name myResourceGroup --location centralus

Skapa ett AKS-kluster och aktivera administrationsåtkomst för din Azure AD-grupp

# Create an AKS-managed Azure AD cluster
az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

Ett lyckat skapande av ett AKS-hanterat Azure AD-kluster innehåller följande avsnitt i svarstexten

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

När klustret har skapats kan du börja komma åt det.

Få åtkomst till ett Azure AD-aktiverat kluster

Du behöver den inbyggda Azure Kubernetes Service klusteranvändaren för att kunna göra följande steg.

Hämta autentiseringsuppgifterna för att få åtkomst till klustret:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Följ anvisningarna för att logga in.

Använd kommandot kubectl get nodes för att visa noder i klustret:

kubectl get nodes

NAME                       STATUS   ROLES   AGE    VERSION
aks-nodepool1-15306047-0   Ready    agent   102m   v1.15.10
aks-nodepool1-15306047-1   Ready    agent   102m   v1.15.10
aks-nodepool1-15306047-2   Ready    agent   102m   v1.15.10

Konfigurera rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att konfigurera ytterligare säkerhetsgrupper för dina kluster.

Felsöka åtkomstproblem med Azure AD

Viktigt

Stegen som beskrivs nedan kringgår den normala Azure AD-gruppautentiseringen. Använd dem endast i nödfall.

Om du blockeras permanent genom att inte ha åtkomst till en giltig Azure AD-grupp med åtkomst till klustret kan du fortfarande hämta administratörsautentiseringsuppgifterna för direktåtkomst till klustret.

Om du vill göra dessa steg måste du ha åtkomst till Azure Kubernetes Service inbyggda rollen klusteradministratör.

az aks get-credentials --resource-group myResourceGroup --name myManagedCluster --admin

Aktivera AKS-hanterad Azure AD-integrering i ditt befintliga kluster

Du kan aktivera AKS-hanterad Azure AD-integrering på ditt befintliga Kubernetes RBAC-aktiverade kluster. Se till att ange att administratörsgruppen ska ha åtkomst till klustret.

az aks update -g MyResourceGroup -n MyManagedCluster --enable-aad --aad-admin-group-object-ids <id-1> [--aad-tenant-id <id>]

Aktiveringen av ett AKS-hanterat Azure AD-kluster lyckas med följande avsnitt i svarstexten

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

Ladda ned autentiseringsuppgifter för användare igen för att få åtkomst till klustret genom att följa stegen här.

Uppgradera till AKS-hanterad Azure AD-integrering

Om klustret använder äldre Azure AD-integrering kan du uppgradera till AKS-hanterad Azure AD-integrering.

az aks update -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

En lyckad migrering av ett AKS-hanterat Azure AD-kluster innehåller följande avsnitt i svarstexten

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

Om du vill komma åt klustret följer du stegen här.

Icke-interaktiv inloggning med kubelogin

Det finns vissa icke-interaktiva scenarier, till exempel pipelines för kontinuerlig integrering, som för närvarande inte är tillgängliga med kubectl. Du kan använda kubelogin för att komma åt klustret med icke-interaktiv inloggning för tjänstens huvudnamn.

Inaktivera lokala konton (förhandsversion)

När du distribuerar ett AKS-kluster aktiveras lokala konton som standard. Även om du aktiverar RBAC eller Azure Active Directory finns det fortfarande åtkomst, i princip som ett --admin icke-granskningsbart bakdörrsalternativ. Med detta i åtanke ger AKS användarna möjlighet att inaktivera lokala konton via en flagga, disable-local . Ett fält, properties.disableLocalAccounts , har också lagts till i det hanterade kluster-API:et för att ange om funktionen har aktiverats i klustret.

Anteckning

I kluster med Azure AD-integrering aktiverat kan användare som tillhör en grupp som anges av fortfarande få aad-admin-group-object-ids åtkomst via autentiseringsuppgifter som inte är administratör. Om kluster utan Azure AD-integrering har aktiverats och angetts till true misslyckas det att hämta autentiseringsuppgifter properties.disableLocalAccounts för både användare och administratör.

Registrera DisableLocalAccountsPreview förhandsgranskningsfunktionen

Viktigt

AKS för hands versions funktioner är tillgängliga på en självbetjänings-och deltagande nivå. För hands versioner tillhandahålls "i befintligt skick" och "som tillgängliga" och de är undantagna från service avtals avtal och begränsad garanti. AKS för hands versionerna omfattas delvis av kund supporten på bästa möjliga sätt. Dessa funktioner är därför inte avsedda att användas för produktion. AKS för hands versions funktioner är inte tillgängliga i Azure Government eller Azure Kina 21Vianet-moln. Mer information finns i följande support artiklar:

Om du vill använda ett AKS-kluster utan lokala konton måste du aktivera DisableLocalAccountsPreview funktionsflaggan för din prenumeration. Se till att du använder den senaste versionen av Azure CLI och aks-preview tillägget.

Registrera DisableLocalAccountsPreview funktionsflaggan med kommandot az feature register enligt följande exempel:

az feature register --namespace "Microsoft.ContainerService" --name "DisableLocalAccountsPreview"

Det tar några minuter för statusen att visa Registrerad. Du kan kontrollera registreringsstatusen med kommandot az feature list:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/DisableLocalAccountsPreview')].{Name:name,State:properties.state}"

När du är klar uppdaterar du registreringen av resursprovidern Microsoft.ContainerService med kommandot az provider register:

az provider register --namespace Microsoft.ContainerService

Skapa ett nytt kluster utan lokala konton

Om du vill skapa ett nytt AKS-kluster utan några lokala konton använder du kommandot az aks create med flaggan disable-local :

az aks create -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --disable-local

I utdata bekräftar du att lokala konton har inaktiverats genom att kontrollera att properties.disableLocalAccounts fältet är inställt på sant:

"properties": {
    ...
    "disableLocalAccounts": true,
    ...
}

Försök att hämta administratörsautentiseringsuppgifter misslyckas med ett felmeddelande som anger att funktionen förhindrar åtkomst:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Operation failed with status: 'Bad Request'. Details: Getting static credential is not allowed because this cluster is set to disable local accounts.

Inaktivera lokala konton i ett befintligt kluster

Om du vill inaktivera lokala konton i ett befintligt AKS-kluster använder du kommandot az aks update med flaggan disable-local :

az aks update -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --disable-local

I utdata bekräftar du att lokala konton har inaktiverats genom att kontrollera att properties.disableLocalAccounts fältet är inställt på sant:

"properties": {
    ...
    "disableLocalAccounts": true,
    ...
}

Försök att hämta administratörsautentiseringsuppgifter misslyckas med ett felmeddelande som anger att funktionen förhindrar åtkomst:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Operation failed with status: 'Bad Request'. Details: Getting static credential is not allowed because this cluster is set to disable local accounts.

Återaktivera lokala konton i ett befintligt kluster

AKS erbjuder också möjligheten att återaktivera lokala konton i ett befintligt kluster med enable-local flaggan :

az aks update -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --enable-local

I utdata bekräftar du att lokala konton har återaktiveras genom att markera att fältet properties.disableLocalAccounts är inställt på falskt:

"properties": {
    ...
    "disableLocalAccounts": false,
    ...
}

Försök att hämta administratörsautentiseringsuppgifter lyckas:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Merged "<cluster-name>-admin" as current context in C:\Users\<username>\.kube\config

Använda villkorsstyrd åtkomst med Azure AD och AKS

När du integrerar Azure AD med ditt AKS-kluster kan du också använda villkorlig åtkomst för att styra åtkomsten till klustret.

Anteckning

Villkorsstyrd åtkomst i Azure AD är Azure AD Premium funktion.

Utför följande steg för att skapa ett exempel på en princip för villkorlig åtkomst som ska användas med AKS:

  1. Längst upp i Azure Portal du efter och väljer Azure Active Directory.
  2. I menyn för Azure Active Directory på vänster sida väljer du Företagsprogram.
  3. På menyn för Företagsprogram till vänster väljer du Villkorlig åtkomst.
  4. På menyn för Villkorlig åtkomst till vänster väljer du Principer och sedan Ny princip. Lägga till en princip för villkorlig åtkomst
  5. Ange ett namn för principen, till exempel aks-policy.
  6. Välj Användare och grupper och välj sedan Välj användare och grupper under Inkludera. Välj de användare och grupper där du vill tillämpa principen. I det här exemplet väljer du samma Azure AD-grupp som har administrationsåtkomst till klustret. Välja användare eller grupper för att tillämpa principen för villkorlig åtkomst
  7. Välj Molnappar eller åtgärder och välj sedan Välj appar under Inkludera. Sök efter Azure Kubernetes Service och välj Azure Kubernetes Service AAD Server. Välja Azure Kubernetes Service AD Server för att tillämpa principen för villkorlig åtkomst
  8. Under Åtkomstkontroller väljer du Bevilja. Välj Bevilja åtkomst och sedan Kräv att enheten är markerad som kompatibel. Välja att endast tillåta kompatibla enheter för principen för villkorlig åtkomst
  9. Under Aktivera princip väljer du och sedan Skapa. Aktivera principen för villkorlig åtkomst

Hämta autentiseringsuppgifterna för att få åtkomst till klustret, till exempel:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Följ anvisningarna för att logga in.

Använd kommandot kubectl get nodes för att visa noder i klustret:

kubectl get nodes

Följ anvisningarna för att logga in igen. Observera att det finns ett felmeddelande om att du har loggat in, men administratören kräver att enheten som begär åtkomst ska hanteras av Azure AD för att få åtkomst till resursen.

I den Azure Portal du till Azure Active Directory, väljer Företagsprogram och under Aktivitet väljer du Inloggningar. Lägg märke till en post längst upp med statusen Misslyckades och Villkorlig åtkomst har lyckats. Välj posten och sedan Villkorlig åtkomst i Information. Observera att din princip för villkorlig åtkomst visas.

Det gick inte att logga in på grund av principen för villkorlig åtkomst

Konfigurera just-in-time-klusteråtkomst med Azure AD och AKS

Ett annat alternativ för klusteråtkomstkontroll är att använda Privileged Identity Management (PIM) för just-in-time-begäranden.

Anteckning

PIM är en Azure AD Premium som kräver en Premium P2 SKU. Mer information om Azure AD-SKU:er finns i prisguiden.

Utför följande steg för att integrera just-in-time-åtkomstbegäranden med ett AKS-kluster med hjälp av AKS-hanterad Azure AD-integrering:

  1. Längst upp i Azure Portal du efter och väljer Azure Active Directory.
  2. Anteckna klientorganisations-ID:t, som i resten av dessa instruktioner kallas i en <tenant-id> webbläsare, Azure Portal-skärmen för Azure Active Directory visas med klientorganisationens ID markerat.
  3. I menyn för Azure Active Directory till vänster under Hantera väljer du Grupper och sedan Ny grupp. Visar skärmen Azure Portal Active Directory-grupper med alternativet Ny grupp markerat.
  4. Kontrollera att en Grupptyp för säkerhet har valts och ange ett gruppnamn, till exempel myJITGroup. Under Azure AD Roles can be assigned to this group (Preview) (Azure AD-roller kan tilldelas till den här gruppen (förhandsversion) ) väljer du Ja. Välj slutligen Skapa. Visar Azure Portal nya skärmen för att skapa grupper.
  5. Du kommer tillbaka till sidan Grupper. Välj den nyligen skapade gruppen och anteckna objekt-ID:t, som i resten av dessa instruktioner kallas <object-id> . Visar Azure Portal för den nyss skapade gruppen med objekt-ID:t
  6. Distribuera ett AKS-kluster med AKS-hanterad Azure AD-integrering med hjälp av <tenant-id> <object-id> värdena och från tidigare:
    az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <object-id> --aad-tenant-id <tenant-id>
    
  7. När du Azure Portal i menyn för Aktivitet till vänster väljer du Privilegierad åtkomst (förhandsversion) och sedan Aktivera privilegierad åtkomst. Sidan Azure Portal privilegierad åtkomst (förhandsversion) visas med &quot;Aktivera privilegierad åtkomst&quot; markerat
  8. Välj Lägg till tilldelningar för att börja bevilja åtkomst. Skärmen Azure Portal privilegierad åtkomst (förhandsversion) efter aktiveringen visas. Alternativet för att lägga till tilldelningar är markerat.
  9. Välj en roll som medlem och välj de användare och grupper som du vill bevilja klusteråtkomst till. Dessa tilldelningar kan ändras när som helst av en gruppadministratör. När du är redo att gå vidare väljer du Nästa. Skärmen Azure Portal Lägg till tilldelningar Medlemskap visas, där en exempelanvändare har valts för att läggas till som medlem. Alternativet &quot;Nästa&quot; är markerat.
  10. Välj tilldelningstypen Aktiv, önskad varaktighet och ange en motivering. När du är redo att fortsätta väljer du Tilldela. Mer information om tilldelningstyper finns i Tilldela behörighet för en privilegierad åtkomstgrupp (förhandsversion) i Privileged Identity Management. Skärmen Azure Portal Lägg till tilldelningar visas på skärmen Lägg till tilldelningar. Tilldelningstypen &quot;Aktiv&quot; har valts och en exempelberättigande har getts. Alternativet Tilldela är markerat.

När tilldelningarna har gjorts kontrollerar du att just-in-time-åtkomst fungerar genom att komma åt klustret. Exempel:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Följ stegen för att logga in.

Använd kommandot kubectl get nodes för att visa noder i klustret:

kubectl get nodes

Observera autentiseringskravet och följ stegen för att autentisera. Om det lyckas bör du se utdata som liknar följande:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-61156405-vmss000000   Ready    agent   6m36s   v1.18.14
aks-nodepool1-61156405-vmss000001   Ready    agent   6m42s   v1.18.14
aks-nodepool1-61156405-vmss000002   Ready    agent   6m33s   v1.18.14

Felsökning

Om kubectl get nodes returnerar ett fel som liknar följande:

Error from server (Forbidden): nodes is forbidden: User "aaaa11111-11aa-aa11-a1a1-111111aaaaa" cannot list resource "nodes" in API group "" at the cluster scope

Kontrollera att administratören för säkerhetsgruppen har gett ditt konto en aktiv tilldelning.

Nästa steg