Udostępnij za pośrednictwem


Używanie usługi Privileged Identity Management (PIM) do kontrolowania dostępu do klastrów usługi Azure Kubernetes Service (AKS)

Podczas konfigurowania uprawnień dla różnych zespołów możesz ustawić domyślne uprawnienia dla określonych zespołów, a następnie przyznać uprzywilejowany dostęp określonym użytkownikom w razie potrzeby. Korzystanie z usługi Azure Kubernetes Service (AKS) z identyfikatorem Entra firmy Microsoft umożliwia skonfigurowanie usługi Privileged Identity Management (PIM) dla żądań just in time (JIT).

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Ustaw role domyślne dla przykładowych grup, aby uzyskiwać dostęp do klastrów usługi AKS lub wykonywać operacje na podstawie członkostwa w grupach firmy Microsoft Entra.
  • Konfigurowanie podstawowych ról na potrzeby uzyskiwania dostępu do klastrów usługi AKS.
  • Samodzielne aktywowanie ról w celu uzyskania dostępu just in time do klastrów usługi AKS.
  • Ustaw osoby zatwierdzające na zatwierdzanie lub odrzucanie żądań zatwierdzenia dla dostępu just in time.

Uwaga

Usługa Microsoft Entra Privileged Identity Management (PIM) ma możliwości microsoft Entra ID P2 lub Zarządzanie tożsamością Microsoft Entra wymagające jednostki SKU Premium P2. Aby uzyskać więcej informacji, zobacz przewodnik dotyczący licencjonowania Zarządzanie tożsamością Microsoft Entra i cennik.

Wymagania wstępne

W tym artykule założono, że masz istniejący klaster usługi AKS z integracją identyfikatora Entra firmy Microsoft. Jeśli go nie masz, zobacz Create an AKS cluster with Microsoft Entra ID integration (Tworzenie klastra AKS przy użyciu integracji identyfikatora Entra firmy Microsoft).

Tworzenie grup demonstracyjnych w identyfikatorze Entra firmy Microsoft

W tej sekcji utworzymy trzy grupy w identyfikatorze Entra firmy Microsoft:

  • Ustawienie domyślne: Ta grupa ma dostęp tylko do odczytu (Azure Kubernetes Service RBAC Reader) do zasobów w klastrze usługi AKS.
  • Administrator: Ta grupa ma dostęp administratora (Azure Kubernetes Service RBAC Admin) do zasobów w klastrze usługi AKS.
  • Osoba zatwierdzająca: ta grupa ma uprawnienia do zatwierdzania lub odrzucania żądań dostępu just in time do klastra usługi AKS.

Możesz użyć tylko domyślnych i administracyjnych grup zamiast tworzyć oddzielną grupę osoby zatwierdzającej. Jeśli jednak dołączysz uprawnienia do zatwierdzania w grupie administracyjnej, członek, który uzyskuje dostęp just in time, może zatwierdzić własne żądania i żądania innych osób. Nie zalecamy używania tej konfiguracji w środowisku produkcyjnym, ale jest to przydatne do celów testowych.

Utwórz grupę domyślną

  1. Pobierz identyfikator zasobu klastra usługi AKS przy użyciu az aks show polecenia .

    AKS_ID=$(az aks show \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --query id \
        --output tsv)
    
  2. Pobierz identyfikator grupy zasobów klastra usługi AKS przy użyciu az group show polecenia .

    RG_ID=$(az group show \
        --resource-group <resource-group-name> \
        --query id \
        --output tsv)
    
  3. Utwórz grupę domyślną az ad group create przy użyciu polecenia .

    DEFAULT_ID=$(az ad group create \
        --display-name default \
        --mail-nickname default \
        --query id \
        --output tsv)
    
  4. Utwórz przypisanie roli platformy Azure dla grupy domyślnej az role assignment create przy użyciu polecenia .

    Istnieją trzy role, które można przypisać do grupy domyślnej w zależności od określonych wymagań:

    • Azure Kubernetes Service RBAC Reader: przypisany do zakresu klastra usługi AKS i zapewnia podstawowy dostęp tylko do odczytu do większości zasobów w klastrze.
    • Reader: przypisany do zakresu grupy zasobów i zapewnia dostęp tylko do odczytu do zasobów w grupie zasobów.
    • Azure Kubernetes Service Cluster User Role: przypisany do zakresu klastra usługi AKS i zapewnia dostęp do uzyskiwania kontekstu kubeconfig dla klastra usługi AKS.
    # Assign the Azure Kubernetes Service RBAC Reader role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service RBAC Reader" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    
    # Assign the Reader role to the default group
    az role assignment create \
        --role "Reader" \
        --assignee $DEFAULT_ID \
        --scope $RG_ID
    
    # Assign the Azure Kubernetes Service Cluster User Role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service Cluster User Role" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    

Tworzenie grupy administracyjnej

  1. Utwórz grupę administracyjną az ad group create przy użyciu polecenia .

    ADMIN_ID=$(az ad group create \
        --display-name admin \
        --mail-nickname admin \
        --query id \
        --output tsv)
    
  2. Azure Kubernetes Service RBAC Admin Przypisz rolę do grupy administracyjnej az role assignment create przy użyciu polecenia .

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Admin" \
        --assignee $ADMIN_ID \
        --scope $AKS_ID
    

Uwaga

Jeśli chcesz zezwolić użytkownikom w grupie administracyjnej na zmianę Contributor ustawień puli węzłów, takich jak ręczne skalowanie, musisz utworzyć przypisanie roli w puli węzłów klastra przy użyciu następującego polecenia:

az role assignment create \
   --role "Contributor" \
   --assignee $ADMIN_ID \
   --scope $AKS_ID/nodepools/<node-pool-name>

Należy pamiętać, że daje to uprawnienie tylko do skalowania w poziomie lub w poziomie z zasobu usługi AKS. Jeśli chcesz zezwolić na skalowanie w poziomie lub z zasobu zestawu skalowania maszyn wirtualnych, musisz utworzyć przypisanie na poziomie zestawu skalowania maszyn wirtualnych.

Tworzenie grupy osoby zatwierdzającej

  • Utwórz grupę osoby zatwierdzającej przy użyciu az ad group create polecenia .

    APPROVER_ID=$(az ad group create \
        --display-name approver \
        --mail-nickname approver \
        --query id \
        --output tsv)
    

Tworzenie użytkowników demonstracyjnych w usłudze Microsoft Entra ID

W tej sekcji utworzymy dwóch użytkowników w usłudze Microsoft Entra ID: zwykły użytkownik z rolą domyślną oraz uprzywilejowany użytkownik, który może zatwierdzać lub odrzucać żądania just in time od normalnego użytkownika.

  1. Utwórz normalnego użytkownika przy użyciu az ad user create polecenia .

    DOMAIN=contoso.com
    PASSWORD=Password1
    
    NUSER_ID=$(az ad user create \
        --display-name n01 \
        --password ${PASSWORD} \
        --user-principal-name n01@${DOMAIN} \
        --query id \
        --output tsv)
    
  2. Dodaj normalnego użytkownika do grupy domyślnej az ad group member add przy użyciu polecenia .

    az ad group member add \
        --group $DEFAULT_ID \
        --member-id $NUSER_ID
    
  3. Utwórz uprzywilejowanego użytkownika przy użyciu az ad user create polecenia .

    PUSER_ID=$(az ad user create \
        --display-name p01 \
        --password ${PASSWORD} \
        --user-principal-name p01@${DOMAIN} \
        --query id \
        --output tsv)
    
  4. Dodaj uprzywilejowanego użytkownika do grupy osoby zatwierdzającej przy użyciu az ad group member add polecenia .

    az ad group member add \
        --group $APPROVER_ID \
        --member-id $PUSER_ID
    

Włączanie usługi Privileged Identity Management (PIM) dla grupy administracyjnej

  1. Na stronie głównej witryny Azure Portal wybierz pozycję Microsoft Entra ID.
  2. W menu usługi w obszarze Zarządzanie wybierz pozycję Grupy, a następnie wybierz grupę administratorów.
  3. W menu usługi w obszarze Działanie wybierz pozycję Privileged Identity Management, a następnie wybierz pozycję Włącz usługę PIM dla tej grupy.

Ustawianie osoby zatwierdzającej dla grupy administracyjnej

  1. Na stronie głównej witryny Azure Portal wyszukaj i wybierz pozycję Privileged Identity Management.

  2. W menu usługi w obszarze Zarządzanie wybierz pozycję Grupy, a następnie wybierz grupę administratorów.

  3. W menu usługi w obszarze Zarządzanie wybierz pozycję Przypisania>Dodaj przypisania.

  4. Na karcie Członkostwo na stronie Dodawanie przypisań wybierz pozycję Członek jako wybraną rolę i wartość domyślną jako wybrany element członkowski, a następnie wybierz przycisk Dalej.

  5. Na karcie Ustawienia wybierz pozycję Kwalifikujące się jako typ przypisania, a następnie wybierz pozycję Przypisz.

  6. W menu usługi w obszarze Zarządzanie wybierz pozycję Ustawienia>Edytuj członka>.

  7. Na stronie Edytowanie ustawienia roli — członek zaznacz pole wyboru Wymagaj zatwierdzenia, aby aktywować, a następnie dodaj grupę osoby zatwierdzającej jako wybraną osoba zatwierdzającą.

    Uwaga

    Jeśli nie zaznaczysz pola wyboru Wymagaj zatwierdzenia do aktywowania, użytkownicy w grupie domyślnej mogą samodzielnie aktywować rolę, aby uzyskać dostęp just in time do klastra usługi AKS bez zatwierdzenia. Użytkownik w grupie osoby zatwierdzającej musi być członkiem grupy. Nawet jeśli użytkownik jest ustawiony jako właściciel, nadal nie może przeglądać żądań just in time, ponieważ właściciel grupy ma tylko uprawnienia administracyjne do grupy, a nie przypisanie roli. Możesz ustawić użytkownika jako członka i właściciela tej samej grupy bez konfliktu.

  8. Wprowadź inne niezbędne zmiany, a następnie wybierz pozycję Aktualizuj.

Aby uzyskać więcej informacji na temat konfiguracji usługi PIM, zobacz Konfigurowanie usługi PIM dla grup.

Interakcja z zasobami klastra przy użyciu roli domyślnej

Teraz możemy spróbować uzyskać dostęp do klastra usługi AKS przy użyciu normalnego użytkownika, który jest członkiem grupy domyślnej.

  1. Zaloguj się do witryny Azure Portal jako zwykły użytkownik przy użyciu az login polecenia .

    az login --username n01@$DOMAIN --password ${PASSWORD}
    
  2. Uzyskaj poświadczenia użytkownika, aby uzyskać dostęp do klastra az aks get-credentials przy użyciu polecenia .

    az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
    
  3. Spróbuj uzyskać dostęp do zasobników klastra przy użyciu kubectl get polecenia .

    kubectl get pods --namespace kube-system
    

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych, które pokazują zasobniki w kube-system przestrzeni nazw:

    NAME                                   READY   STATUS    RESTARTS   AGE
    azure-ip-masq-agent-2rdd9              1/1     Running   0          30h
    azure-policy-767c9d9d9d-886rf          1/1     Running   0          31h
    cloud-node-manager-92t6h               1/1     Running   0          30h
    coredns-789789675-b2dhg                1/1     Running   0          31h
    coredns-autoscaler-77bbc46446-pgt92    1/1     Running   0          31h
    csi-azuredisk-node-lnzrf               3/3     Running   0          30h
    csi-azurefile-node-lhbxr               3/3     Running   0          31h
    konnectivity-agent-7645d94b-9wqct      1/1     Running   0          30h
    kube-proxy-lkx4w                       1/1     Running   0          31h
    metrics-server-5955767688-lpbjb        2/2     Running   0          30h
    
  4. Spróbuj uzyskać dostęp do wpisów tajnych klastra kubectl get przy użyciu polecenia .

    kubectl get secrets --namespace kube-system
    

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych, które pokazują komunikat o błędzie, ponieważ użytkownik nie ma uprawnień dostępu do wpisów tajnych:

    Error from server (Forbidden): secrets is forbidden: User "[email protected]" cannot list resource "secrets" in API group "" in the namespace "kube-system": User does not have access to the resource in Azure. Update role assignment to allow access.
    

    Rola Azure Kubernetes Service RBAC Reader nie ma uprawnień dostępu do wpisów tajnych, więc ten błąd jest oczekiwany.

Żądanie dostępu just in time do klastra usługi AKS

Tym razem możemy zażądać dostępu just in time jako tymczasowego Azure Kubernetes Service RBAC Admin , wykonując kroki opisane w temacie Aktywowanie członkostwa w grupie lub własności w usłudze Privileged Identity Management. Aby dowiedzieć się, jak zatwierdzać lub odrzucać żądania jako osoba zatwierdzająca, zobacz Zatwierdzanie żądań aktywacji dla członków grupy i właścicieli.

Interakcja z zasobami klastra przy użyciu roli administratora

Po tymczasowym Azure Kubernetes Service RBAC Admin dodaniu roli możesz uzyskać dostęp do zasobów klastra, które wymagają uprawnień administratora.

  1. Usuń istniejące przechowywane tokeny przy użyciu następującego kubelogin polecenia:

    kubelogin remove-tokens
    

    Uwaga

    Jeśli wystąpi błąd z powodu braku uprawnień, zaloguj się, aby odświeżyć uprawnienia przy użyciu az login polecenia .

  2. Spróbuj ponownie uzyskać dostęp do wpisów tajnych klastra kubectl get secrets przy użyciu polecenia .

    kubectl get secrets --namespace kube-system
    

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych, które pokazują wpisy tajne w kube-system przestrzeni nazw:

    NAME                     TYPE                            DATA   AGE
    bootstrap-token-sw3rck   bootstrap.kubernetes.io/token   4      35h
    konnectivity-certs       Opaque                          3      35h
    

    Użytkownik może teraz uzyskać dostęp do wpisów tajnych, ponieważ ma rolę Azure Kubernetes Service RBAC Admin .

Zagadnienia dotyczące okresu istnienia tokenu

Ze względu na projekt okresu istnienia tokenu, jeśli udzielasz ról użytkownikom korzystającym z narzędzi interfejsu wiersza polecenia, takich jak kubectl lub kubelogin, czas trwania aktywacji technicznie nie może być krótszy niż 60 minut. Nawet jeśli czas trwania jest ustawiony na krótszy niż 60 minut, rzeczywisty obowiązujący czas trwania pozostaje z przedziału od 60 do 75 minut.

Podczas kubelogin próby pobrania tokenów z Platforma tożsamości Microsoftaccess_token i refresh_token są zwracane do dalszego użycia. Funkcja access_token wysyła żądania do interfejsu API, a refresh_token element jest używany do pobierania nowego access_token , gdy bieżący wygaśnie. access_token Nie można odwołać elementu po wygenerowaniu, ale refresh_token można go odwołać. Jeśli element refresh_token zostanie odwołany, użytkownik musi ponownie uwierzytelnić, aby uzyskać nowy refresh_tokenelement . Aby ręcznie odwołać element refresh_token, możesz użyć polecenia Revoke-AzureADUserAllRefreshToken.

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące artykuły: