Włączanie uwierzytelniania identyfikatora entra firmy Microsoft dla płaszczyzny sterowania usługi AKS

Integracja Microsoft Entra upraszcza proces włączania uwierzytelniania opartego na usłudze Entra dla usługi AKS. Wcześniej należało utworzyć aplikację klienta i serwera, a dzierżawca Microsoft Entra musiał przypisać uprawnienia do roli Czytelnicy katalogu. Teraz dostawca zasobów usługi Azure Kubernetes Service (AKS) zarządza aplikacjami klienta i serwera.

Administratorzy klastra mogą skonfigurować kontrolę dostępu opartą na rolach platformy Kubernetes (Kubernetes RBAC) na podstawie tożsamości użytkownika lub członkostwa w grupie katalogów.

Dowiedz się więcej o przepływie integracji Microsoft Entra w dokumentacji Microsoft Entra.

Ograniczenia

Nie można wyłączyć integracji z firmą Microsoft Entra po włączeniu jej w klastrze.

Zanim rozpoczniesz

Aby zainstalować dodatek usługi AKS, sprawdź, czy masz następujące elementy:

  • Masz zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.29.0 lub nowszej. Aby znaleźć wersję, uruchom az --version polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI.
  • Potrzebujesz kubectl w wersji co najmniej 1.18.1 lub kubelogin. W przypadku Azure CLI i modułu Azure PowerShell kubectl i kubelogin są uwzględniane i automatycznie zarządzane. Oznacza to, że są one domyślnie uaktualniane i uruchomienie az aks install-cli nie jest wymagane ani zalecane. Jeśli używasz zautomatyzowanego potoku, musisz zarządzać uaktualnieniami dla poprawnej lub najnowszej wersji. Różnica między mniejszymi wersjami platformy Kubernetes a kubectl nie powinna przekraczać jednej wersji. W przeciwnym razie problemy z uwierzytelnianiem występują w niewłaściwej wersji.
  • Ta konfiguracja wymaga grupy microsoft Entra dla klastra. Ta grupa jest zarejestrowana jako grupa administracyjna w klastrze w celu udzielenia uprawnień administratora. Jeśli nie masz istniejącej grupy Microsoft Entra, możesz go utworzyć przy użyciu az ad group create polecenia .

Włącz integrację w klastrze AKS

Najpierw ustaw zmienne środowiskowe dla grupy zasobów, nazwy klastra, identyfikatorów obiektów grupy administracyjnej Microsoft Entra i identyfikatora dzierżawcy. Użyj ponownie tych zmiennych w kolejnych poleceniach.

export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myManagedCluster"
export AAD_ADMIN_GROUP_OBJECT_IDS="<group-object-id>"  # comma-separated for multiple groups
export AAD_TENANT_ID="<tenant-id>"
export LOCATION="centralus"

Tworzenie nowego klastra

  1. Utwórz grupę zasobów Azure przy użyciu polecenia az group create.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. Utwórz klaster usługi AKS i włącz dostęp administracyjny dla grupy Microsoft Entra przy użyciu az aks create polecenia .

    az aks create \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --enable-aad \
      --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
      --aad-tenant-id $AAD_TENANT_ID \
      --generate-ssh-keys
    

    W przypadku pomyślnego utworzenia klastra Microsoft Entra ID w treści odpowiedzi znajduje się następująca sekcja.

    "AADProfile": {
      "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
      ],
      "clientAppId": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    }
    

Korzystanie z istniejącego klastra

Włącz integrację Microsoft Entra z istniejącym klastrem z włączoną kontrolą dostępu opartą na rolach Kubernetes przy użyciu polecenia az aks update. Pamiętaj, aby ustawić grupę administracyjną, aby zachować dostęp do klastra.

az aks update \
  --resource-group $RESOURCE_GROUP \
  --name $CLUSTER_NAME \
  --enable-aad \
  --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
  --aad-tenant-id $AAD_TENANT_ID

Po pomyślnej aktywacji klastra Microsoft Entra ID treść odpowiedzi zawiera następującą sekcję:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Migrowanie starszego klastra do integracji

Jeśli klaster korzysta ze starszej integracji firmy Microsoft Entra, możesz przeprowadzić uaktualnienie do integracji z firmą Microsoft Entra za pomocą az aks update polecenia .

Warning

Klastry w bezpłatnym poziomie mogą napotkać przestoje serwera interfejsu API podczas aktualizacji. Zalecamy uaktualnienie poza godzinami pracy. Po uaktualnieniu kubeconfig zawartość ulegnie zmianie. Należy uruchomić polecenie az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name> , aby scalić nowe poświadczenia z plikiem kubeconfig .

az aks update \
  --resource-group $RESOURCE_GROUP \
  --name $CLUSTER_NAME \
  --enable-aad \
  --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
  --aad-tenant-id $AAD_TENANT_ID

Pomyślna migracja klastra Microsoft Entra ID obejmuje następującą sekcję w treści odpowiedzi:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Uzyskaj dostęp do włączonego klastra

  1. Pobierz poświadczenia użytkownika, aby uzyskać dostęp do klastra za pomocą polecenia az aks get-credentials.

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Postępuj zgodnie z instrukcjami logowania.

  3. Wyświetl węzły klastra poleceniem kubectl get nodes.

    kubectl get nodes
    

Klastry z uruchomioną platformą Kubernetes w wersji 1.24 lub nowszej automatycznie używają kubelogin formatu wtyczki exec, więc do interaktywnego logowania w Azure CLI nie jest wymagana ręczna konwersja kubeconfig. W przypadku nieinterakcyjnych scenariuszy, takich jak potoki CI, lub w celu użycia innej metody uwierzytelniania (zasady usługi, tożsamości zarządzanej, tożsamości obciążenia lub kodu urządzenia), zobacz Używanie narzędzia kubelogin do uwierzytelniania użytkowników w AKS.

Dostęp awaryjny

W rzadkim przypadku, gdy logowanie za pomocą identyfikatora Entra firmy Microsoft do serwera API Kubernetes klastra nie działa — na przykład podczas szerokiego incydentu usługi Microsoft Entra — możesz wrócić do lokalnego konta administratora klastra, aby utrzymać działanie klastra do czasu przywrócenia logowania opartego na usłudze Entra.

Note

Alternatywne rozwiązanie jest potrzebne tylko wtedy, gdy samo logowanie oparte na usłudze Entra jest niedostępne. Jeśli problem dotyczy nieprawidłowo skonfigurowanej grupy administracyjnej (na przykład grupa została usunięta lub ustawiono nieprawidłowy identyfikator obiektu), nie potrzebujesz jej — zaktualizuj grupę administracyjną bezpośrednio az aks update --aad-admin-group-object-ids przy użyciu konta z Microsoft.ContainerService/managedClusters/write uprawnieniem.

Ważna

Ten proces roboczy pomija uwierzytelnianie Microsoft Entra. Użyj go tylko jako tymczasowego rezerwowego i ponownie wyłącz konta lokalne po przywróceniu logowania Microsoft Entra.

Aby użyć ścieżki break-glass, potrzebujesz roli Współautor usługi Azure Kubernetes Service w zasobie klastra. Ta rola udziela Microsoft.ContainerService/managedClusters/write uprawnień wymaganych do ponownego włączenia kont lokalnych oraz dostępu do poświadczeń administratora klastra lokalnego. Jest ona oceniana przez usługę Azure Resource Manager, więc działa niezależnie od ścieżki logowania firmy Microsoft do serwera interfejsu API Kubernetes.

  1. Jeśli konta lokalne są wyłączone w klastrze, tymczasowo włącz je ponownie.

    az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-local-accounts
    
  2. Pobierz poświadczenia lokalnego administratora klastra, używając polecenia az aks get-credentials z flagą --admin. To poświadczenie to oparte na certyfikatach narzędzie kubeconfig, które pomija usługę Microsoft Entra.

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --admin
    
  3. Użyj kubectl polecenia , aby obsługiwać klaster, gdy usługa Microsoft Entra jest niedostępna. Gdy logowanie do usługi Microsoft Entra będzie działać ponownie, wyłącz konta lokalne , aby przywrócić klaster do bezpiecznego punktu odniesienia.

    az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-local-accounts
    

Następne kroki