Kontrola dostępu oparta na rolach w klastrach Kubernetes platformy Kubernetes operatora platformy Azure

Ten artykuł zawiera kompleksowy przewodnik dotyczący zarządzania dostępem do klastrów Kubernetes Nexus przy użyciu identyfikatora Entra firmy Microsoft. W szczególności koncentrujemy się na kontroli dostępu opartej na rolach, która umożliwia przyznawanie użytkownikom uprawnień na podstawie ich ról lub obowiązków w organizacji.

Zanim rozpoczniesz

  1. Aby rozpocząć, utwórz grupę Microsoft Entra dla administratorów klastra i przypisz do niej członków. Identyfikator Entra firmy Microsoft umożliwia przyznanie dostępu całej grupie zamiast zarządzania uprawnieniami dla każdego użytkownika osobno.
  2. Użyj identyfikatora grupy utworzonego jako wartości "adminGroupObjectIds" podczas tworzenia klastra Nexus Kubernetes, aby upewnić się, że członkowie grupy uzyskają uprawnienia do zarządzania klastrem. Zapoznaj się z przewodnikiem Szybki start , aby uzyskać instrukcje dotyczące tworzenia i uzyskiwania dostępu do klastra Nexus Kubernetes.

Administracja istrator dostępu do klastra

Nexus tworzy powiązanie roli klastra Kubernetes z domyślną rolą cluster-admin Kubernetes i grupami firmy Microsoft Entra określonymi jako adminGroupObjectIds. Administratorzy klastra mają pełny dostęp do klastra i mogą wykonywać wszystkie operacje w klastrze. Administratorzy klastra mogą również udzielić dostępu innym użytkownikom, przypisując je do odpowiedniej grupy firmy Microsoft Entra.

Uwaga

Podczas tworzenia klastra Nexus Kubernetes nexus automatycznie tworzy zarządzaną grupę zasobów przeznaczoną do przechowywania zasobów klastra w ramach tej grupy zostanie ustanowiony zasób klastra połączonego z usługą Arc.

Aby uzyskać dostęp do klastra, należy skonfigurować klaster connect kubeconfig. Po zalogowaniu się do interfejsu wiersza polecenia platformy Azure przy użyciu odpowiedniej jednostki Firmy Microsoft Entra możesz uzyskać kubeconfig niezbędne do komunikowania się z klastrem z dowolnego miejsca, nawet poza zaporą, która go otacza.

  1. Ustaw CLUSTER_NAMEzmienne i SUBSCRIPTION_IDRESOURCE_GROUP .

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Wykonywanie zapytań względem zarządzanej grupy zasobów za pomocą az polecenia i przechowywania w usłudze MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Następujące polecenie uruchamia serwer proxy connectedk8s, który umożliwia nawiązanie połączenia z serwerem interfejsu API Kubernetes dla określonego klastra Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Użyj kubectl polecenia , aby wysyłać żądania do klastra:

    kubectl get pods -A
    

    Powinna zostać wyświetlona odpowiedź z klastra zawierającego listę wszystkich węzłów.

Uwaga

Jeśli zostanie wyświetlony komunikat o błędzie "Nie można opublikować tokenu dostępu do serwera proxy klientaFailed w celu nawiązania połączenia z tożsamością usługi zarządzanej", może być konieczne wykonanie polecenia az login w celu ponownego uwierzytelnienia na platformie Azure.

Kontrola dostępu oparta na rolach

Jako administrator możesz zapewnić klastrowi kontrolę dostępu opartą na rolach, tworząc powiązanie roli za pomocą identyfikatora obiektu grupy Entra firmy Microsoft. W przypadku użytkowników, którzy potrzebują tylko uprawnień "wyświetl", możesz wykonać zadanie, dodając je do grupy Microsoft Entra powiązanej z rolą "wyświetl".

  1. Utwórz grupę Entra firmy Microsoft dla użytkowników, którzy potrzebują dostępu "wyświetl", odwołując się do domyślnej roli Kubernetes o nazwie view. Ta rola jest tylko przykładem i w razie potrzeby możesz utworzyć role niestandardowe i użyć ich zamiast tego. Aby uzyskać więcej informacji na temat ról opartych na użytkownikach na platformie Kubernetes, możesz zapoznać się z oficjalną dokumentacją dotyczącą ról dostępu opartych na roll-based kubernetes.

  2. Zanotuj identyfikator obiektu grupy Entra firmy Microsoft wygenerowany podczas tworzenia.

  3. Użyj polecenia kubectl, aby utworzyć klasterrolebinding z rolą "view" i skojarzyć ją z grupą Microsoft Entra. Zastąp AZURE_AD_GROUP_OBJECT_ID element identyfikatorem obiektu grupy Microsoft Entra.

    kubectl create clusterrolebinding nexus-read-only-users --clusterrole view --group=AZURE_AD_GROUP_OBJECT_ID
    

    To polecenie tworzy powiązanie roli klastra o nazwie nexus-read-only-users , które przypisuje view rolę członkom określonej grupy Microsoft Entra.

  4. Sprawdź, czy powiązanie roli zostało utworzone pomyślnie.

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. Teraz użytkownicy w grupie Microsoft Entra mają dostęp do klastra "wyświetl". Mogą oni uzyskiwać dostęp do klastra przy użyciu funkcji az connectedk8s proxy wyświetlania zasobów, ale nie mogą wprowadzać żadnych zmian

Następne kroki

Możesz dodatkowo dostosować kontrolę dostępu, tworząc role niestandardowe z określonymi uprawnieniami. Tworzenie tych ról obejmuje natywne zasoby RoleBinding lub ClusterRoleBinding platformy Kubernetes. Oficjalną dokumentację platformy Kubernetes można sprawdzić, aby uzyskać szczegółowe wskazówki dotyczące tworzenia bardziej niestandardowych ról i powiązań ról zgodnie z wymaganiami.