Używanie kontroli dostępu opartej na rolach platformy Azure dla klastrów usługi AKS (wersja zapoznawcza)

Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server

W tym artykule opisano sposób konfigurowania kontroli dostępu opartej na rolach platformy Azure w klastrze usługi AKS do używania Tożsamość Microsoft Entra i przypisań ról platformy Azure na potrzeby autoryzacji. Kroki tworzenia klastra zostały omówione w temacie Wymagania wstępne.

Aby zapoznać się z koncepcyjnym omówieniem korzystania z kontroli dostępu opartej na rolach platformy Azure z klastrami Kubernetes z włączoną usługą Azure Arc, zobacz Azure RBAC on Azure Arc-enabled Kubernetes (Kontrola RBAC platformy Azure w usłudze Kubernetes z obsługą usługi Azure Arc).

Ważne

Te funkcje w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane "jak jest" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze platformy Kubernetes z obsługą usługi Azure Arc są częściowo objęte pomocą techniczną dla klientów w oparciu o najlepsze rozwiązania.

Wymagania wstępne

Przed wdrożeniem klastra Kubernetes z włączoną usługą Azure Arc należy spełnić następujące wymagania wstępne.

Przygotowywanie sieci

Skonfiguruj następujące ustawienia sieci, serwera proxy i/lub zapory:

Aplikacje serwera i klienta

Kontrola dostępu oparta na rolach platformy Azure używa Microsoft Entra aplikacji klienckich i serwerowych do różnych celów. Aplikacja kliencka służy do pobierania tokenu użytkownika po uwierzytelnieniu użytkownika za pomocą Tożsamość Microsoft Entra przy użyciu logowania interakcyjnego, na przykład za pośrednictwem przepływu kodu urządzenia. Aplikacja kliencka jest klientem publicznym, a także obsługuje przepływ nieinterakcyjny w celu pobrania tokenu dla jednostek usługi.

Aplikacja serwera jest klientem poufnym i służy do pobierania szczegółów grupy zabezpieczeń zalogowanego użytkownika (dla użytkowników oświadczeń nadwyżkowych) i sprawdzania żądań dostępu, które zwracają wynik autoryzacji, który podmiot zabezpieczeń (użytkownik lub SPN) ma w klastrze usługi AKS.

Rejestrując aplikację Microsoft Entra, przechowuje informacje o konfiguracji w Tożsamość Microsoft Entra. Ta konfiguracja umożliwia aplikacji reprezentowanej przez aplikację Microsoft Entra do uwierzytelniania w imieniu użytkownika (lub nazwy SPN). Po uwierzytelnieniu aplikacja może następnie użyć identyfikatora aplikacji Microsoft Entra w celu uzyskania dostępu do interfejsów API w imieniu użytkownika.

Tworzenie aplikacji serwera i aplikacji klienckiej

Zarejestruj aplikację serwera i wpis tajny oraz aplikację klienta i wpis tajny, wykonując następujące kroki:

Uwaga

Te kroki umożliwiają wykonanie kluczowych zadań w temacie Korzystanie z kontroli dostępu opartej na rolach platformy Azure dla klastrów Kubernetes z obsługą usługi Azure Arc , które są wymagane do przygotowania do konfiguracji kontroli dostępu opartej na rolach platformy Azure w usłudze AKS Arc.

Aby wykonać te kroki, musisz mieć wbudowaną rolę administratora aplikacji w Tożsamość Microsoft Entra. Aby uzyskać instrukcje, zobacz Przypisywanie ról Microsoft Entra do użytkowników.

  1. Utwórz aplikację serwera i udostępniony wpis tajny.

  2. Utwórz przypisanie roli dla aplikacji serwera.

  3. Utwórz aplikację kliencką. Aplikacja kliencka jest używana do kubectl nawiązywania połączenia w sieci.

Udzielanie uprawnień użytkownikom w klastrze

Przypisz role, aby udzielić uprawnień użytkownikom nazw głównych usługi (SPN) w klastrze. Użyj polecenia az role assignment.

Aby przypisać role w klastrze Kubernetes, musisz mieć uprawnienie Właściciel w subskrypcji, grupie zasobów lub klastrze.

W poniższym przykładzie użyto polecenia az role assignment w celu przypisania Azure Arc Kubernetes Cluster Admin roli do grupy zasobów zawierającej klaster. Zakres grupy zasobów można ustawić przed utworzeniem klastra.

az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee xyz@contoso.com --scope /subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Kubernetes/connectedClusters/<resource name, aka name of AKS cluster>

Aby uzyskać dostęp do klastra za pośrednictwem metody serwera proxy connectedk8s (jedna z opcji komunikowania się z serwerem API), musisz mieć zakres "Rola użytkownika klastra Kubernetes z obsługą usługi Azure Arc" do subskrypcji, grupy zasobów lub klastra.

Następujące polecenie przypisuje rolę do grupy zamiast określonego użytkownika (zobacz poprzedni przykład):

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 --role "Azure Arc Kubernetes Cluster Admin" --scope $id

Przypisanie jest identyfikatorem obiektu grupy Microsoft Entra.

Aby uzyskać więcej informacji na temat roli, zobacz tę sekcję.

Aby uzyskać identyfikator zakresu klastra lub grupy zasobów, uruchom następujące polecenia i użyj polecenia "id":property:

az connectedk8s show -g <name of resource group>  
az connectedk8s show -n <name of cluster> -g <name of resource group>

Aby zapoznać się z innymi przykładami, zobacz az role assignment (az role assignment).

Aby uzyskać informacje o wstępnie utworzonych rolach RBAC platformy Azure dla klastrów Kubernetes z obsługą usługi Arc, zobacz Tworzenie przypisań ról dla użytkowników w celu uzyskania dostępu do klastra. Aby uzyskać listę wszystkich dostępnych ról wbudowanych, zobacz Role wbudowane platformy Azure.

Krok 1. Tworzenie nazwy SPN i przypisywanie uprawnień

Użyj jednostki usługi platformy Azure, aby skonfigurować konto automatyzacji z uprawnieniami wymaganymi do utworzenia klastra docelowego z włączoną kontrolą RBAC platformy Azure.

Tworzenie klastra docelowego wymaga tylko ograniczonych uprawnień w ramach subskrypcji. Zalecamy używanie roli dołączania klastra Kubernetes — Azure Arc . Możesz również użyć roli Właściciel lub Współautor . Aby uzyskać więcej informacji, zobacz Role wbudowane platformy Azure.

Użyj polecenia w interfejsie az ad sp create-for-rbac wiersza polecenia platformy Azure, aby utworzyć nazwę SPN i skonfigurować ją przy użyciu wymaganych uprawnień.

Poniższy przykład przypisuje do subskrypcji rolę Dołączanie klastra Kubernetes — Azure Arc . Aby uzyskać więcej informacji, zobacz dokumentację az ad sp polecenia.

az ad sp create-for-rbac --role "Kubernetes Cluster - Azure Arc Onboarding" --scopes /subscriptions/<OID of the subscription ID> 

Ważne

Dane wyjściowe polecenia zawierają az ad sp poświadczenia, które należy chronić. Nie dołączaj tych poświadczeń do kodu ani nie sprawdzaj poświadczeń w kontroli źródła. Aby uzyskać więcej informacji, zobacz Tworzenie jednostki usługi platformy Azure.

Aby uzyskać więcej informacji na temat tworzenia nazwy SPN i przypisywania jej roli, zobacz Tworzenie jednostki usługi platformy Azure.

Krok 2. Tworzenie obiektu poświadczeń

Aby utworzyć obiekt poświadczeń do użycia z nazwą SPN, otwórz okno programu PowerShell i uruchom następujące polecenie:

$Credential = Get-Credential

To polecenie wyświetla monit o hasło.

Aby zautomatyzować tworzenie obiektu poświadczeń, bez konieczności ręcznego wprowadzania hasła, zobacz Get-Credential( Przykład 4). Skrypt zawiera poświadczenia zwykłego tekstu, które mogą naruszać standardy zabezpieczeń w niektórych przedsiębiorstwach.

Krok 3. Tworzenie klastra usługi AKS z obsługą kontroli dostępu opartej na rolach platformy Azure

Klaster z obsługą kontroli dostępu opartej na rolach platformy Azure można utworzyć przy użyciu nazwy SPN (opcja A) lub utworzyć klaster interaktywnie (opcja B).

Opcja A: Tworzenie klastra docelowego usługi AKS z obsługą kontroli dostępu opartej na rolach platformy Azure przy użyciu nazwy SPN

Aby utworzyć klaster docelowy usługi AKS z włączoną kontrolą RBAC platformy Azure przy użyciu nazwy SPN:

  1. Jeśli nie utworzono jeszcze nazwy SPN do użycia z klastrem docelowym, utwórz teraz nazwę SPN .

  2. Zwróć uwagę, że utworzona nazwa SPN jest używana jednorazowo podczas tworzenia klastra i nie wymaga zarządzania hasłami

  3. Otwórz okno programu PowerShell w węźle Azure HCI lub serwerze z systemem Windows, na którym wdrożono klaster, i uruchom następujące polecenie:

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<resource group name>" -subscriptionID "<subscription ID>" -tenantId "<tenant ID>" -credential $Credential -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

Opcja B: interaktywne tworzenie klastra docelowego usługi AKS z obsługą kontroli dostępu opartej na rolach platformy Azure

Jeśli wolisz interaktywnie utworzyć klaster docelowy z obsługą kontroli dostępu opartej na rolach platformy Azure, wykonaj następujące kroki:

  1. Otwórz okno programu PowerShell w węźle Azure HCI lub serwerze z systemem Windows, na którym wdrożono klaster.

  2. Zaloguj się na platformie Azure, uruchamiając następujące polecenie. connect-azaccount -deviceauth za pomocą polecenia .

    connect-azaccount -deviceauth
    

    Polecenie wyświetla monit o uwierzytelnienie za pośrednictwem przepływu kodu urządzenia.

  3. Ustaw kontekst subskrypcji na subskrypcję, w której ma zostać utworzony klaster docelowy:

    Set-AzContext -Subscription "subscriptionName"
    
  4. Utwórz klaster docelowy usługi AKS z włączoną kontrolą RBAC platformy Azure:

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<name of resource group>"  -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

Krok 4. Nawiązywanie połączenia z klastrem usługi AKS za pośrednictwem kontroli dostępu opartej na rolach platformy Azure

Konfiguracja RBAC platformy Azure w klastrze usługi AKS jest teraz ukończona. Aby przetestować konfigurację kontroli dostępu opartej na rolach platformy Azure, połącz się z klastrem usługi AKS. Kontrola dostępu oparta na rolach platformy Azure uwierzytelnia połączenia.

Procedury opisane w tej sekcji używają connectedk8s metody serwera proxy do nawiązywania połączenia z klastrem usługi AKS i nawiązywania połączenia z klastrem usługi AKS za pośrednictwem sieci prywatnej.

Nawiązywanie połączenia z klastrem usługi AKS przez Internet przy użyciu connectedk8s metody serwera proxy

connectedk8s Użyj metody serwera proxy, aby wysłać żądanie uwierzytelniania/autoryzacji z dowolnego miejsca w Internecie. Jeśli używasz tej metody, masz ograniczenie do 200 grup.

Aby nawiązać połączenie z klastrem usługi AKS przy użyciu connectedk8s metody serwera proxy, wykonaj następujące czynności:

  1. Otwórz okno interfejsu wiersza polecenia platformy Azure i użyj polecenia az login , aby nawiązać połączenie z platformą Azure. Aby uzyskać więcej informacji, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.

  2. W razie potrzeby ustaw subskrypcję konta platformy Azure na subskrypcję użytą do utworzenia klastra usługi AKS:

    az account set -subscription "<mySubscription>" 
    
  3. Upewnij się, że masz połączenie z platformą Azure:

    az account show
    
  4. Uruchom proces serwera proxy:

    az connectedk8s proxy -n <cluster name> -g <resource group name>
    
  5. Upewnij się, że uwierzytelnianie działa prawidłowo, wysyłając żądania do klastra. Pozostawiając otwarty terminal, z którego nawiązaliśmy połączenie, otwórz inną kartę i wyślij żądania do klastra. Odpowiedzi powinny być uzyskiwane na podstawie konfiguracji kontroli dostępu opartej na rolach platformy Azure.

  6. Naciśnij klawisze Ctrl+C , aby zamknąć connectedk8s połączenie serwera proxy.

Nawiązywanie połączenia z klastrem usługi AKS za pośrednictwem sieci prywatnej

Podczas nawiązywania połączenia z klastrem usługi AKS za pośrednictwem sieci prywatnej nie ma limitu liczby grup, których można użyć.

Aby pobrać Microsoft Entra kubeconfig log do maszyny lokalnej i maszyny lokalnej (na przykład klastra HCI), wygeneruj Microsoft Entra kubeconfig przy użyciu następującego polecenia. Możesz dystrybuować Microsoft Entra kubeconfig do użytkowników łączących się z maszyny klienckiej. Microsoft Entra kubeconfig nie zawiera żadnych wpisów tajnych.

Aby nawiązać połączenie z klastrem usługi AKS za pośrednictwem sieci prywatnej, wykonaj następujące kroki:

  1. Pobierz plik kubeconfig :

    Get-AksHciCredential -Name <cluster name> -aadauth
    
  2. Rozpocznij wysyłanie żądań do serwera interfejsu kubectl API usługi AKS, uruchamiając polecenie api-server. Zostanie wyświetlony monit o podanie poświadczeń Microsoft Entra.

    Może zostać wyświetlony komunikat ostrzegawczy, ale możesz go zignorować.

Aktualizacja do wtyczki uwierzytelniania kubelogin

Uwaga

Informacje w tej sekcji dotyczą usługi AKS w wersji 1.0.17.10310 lub nowszej. Aby uzyskać informacje o wersji, zobacz informacje o wersji.

Aby zapewnić tokeny uwierzytelniania do komunikowania się z klastrami usługi AKS, klienci kubectl wymagają wtyczki uwierzytelniania.

Aby wygenerować plik kubeconfig, który wymaga wtyczki uwierzytelniania binarnego usługi Azure kubelogin.exe, uruchom następujące polecenie programu PowerShell:

Get-AksHciCredential -Name <cluster name> -aadauth

To polecenie pobiera również kubelogin.exe binarne. Aby znaleźć lokalizację pliku kubelogin.exe , uruchom następujące polecenie:

$workingdir = (Get-AksHciConfig).Akshci.installationPackageDir

To polecenie zwraca ścieżkę, do której pobranokubelogin.exe . Skopiuj plik kubelogin.exe do węzła HCI lub maszyny klienckiej. W przypadku rozwiązania HCI skopiuj plik do ścieżki zgodnie z opisem w poniższym przykładzie. W przypadku maszyny klienckiej skopiuj plik wykonywalny na maszynę kliencką i dodaj go do ścieżki. Na przykład:

cp $workingdir\kubelogin.exe "c:\program files\akshci"

Alternatywnie, aby pobrać kubelogin.exe na komputer kliencki, możesz uruchomić następujące polecenie:

wget https://github.com/Azure/kubelogin/releases/download/v0.0.26/kubelogin-win-amd64.zip -OutFile kubelogin-win-amd64.zip

Aby uzyskać więcej informacji na temat konwertowania na wtyczkę uwierzytelniania kubelogin , zobacz stronę usługi Azure kubelogin w witrynie GitHub.

Następne kroki