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 określonych grup, aby uzyskiwać dostęp do klastrów AKS lub wykonywać operacje na nich w oparciu o członkostwo w grupach Microsoft Entra.
  • Konfigurowanie podstawowych ról na potrzeby uzyskiwania dostępu do klastrów usługi AKS.
  • Aktywuj role samodzielnie, aby uzyskać dostęp na żądanie 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) posiada funkcje Microsoft Entra ID P2 lub Identyfikacja Zarządzania Microsoft Entra wymagające jednostki SKU Premium P2. Aby uzyskać więcej informacji, zobacz podstawy licencjonowania zarządzania tożsamościami Microsoft Entra ID oraz przewodnik cenowy.

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 admin, 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 AKS za pomocą polecenia az aks show.

    AKS_ID=$(az aks show \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --query id \
        --output tsv)
    
  2. Uzyskaj identyfikator grupy zasobów klastra AKS za pomocą polecenia az group show.

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

    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, używając polecenia az role assignment create.

    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 w zakresie klastra AKS i zapewnia podstawowy, tylko do odczytu, dostęp 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 tej 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ę admin przy użyciu polecenia az ad group create.

    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ę zatwierdzających 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 użytkownika normalnego przy użyciu poleceniaaz ad user create.

    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 użytkownika uprzywilejowanego przy użyciu polecenia az ad user create.

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

    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 portalu Azure wyszukaj i wybierz 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ę >.

  4. Na karcie Członkostwo na stronie Dodawanie przypisań wybierz Członek jako wybraną rolę i domyślną jako wybranego członka, a następnie wybierz 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>Członek>Edytuj.

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

    Uwaga

    Jeśli nie zaznaczysz pola wyboru Wymagaj zatwierdzenia do aktywowania, użytkownicy w grupie domyślnejmogą samodzielnie aktywować rolę, aby uzyskać dostęp just in time do klastra usługi AKS bez zatwierdzenia. Użytkownik w grupie zatwierdzających musi być jej członkiem. 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, używając użytkownika normalnego, 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ą pody 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 sekretów klastra przy użyciu polecenia kubectl get.

    kubectl get secrets --namespace kube-system
    

    Dane wyjściowe powinny wyglądać podobnie do następującego przykładu, który pokazuje komunikat o błędzie, ponieważ użytkownik nie ma uprawnień dostępu do sekretów.

    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 tajemnic, więc ten błąd jest przewidywany.

Żądanie dostępu na żądanie do klastra usługi AKS

Tym razem możemy zażądać tymczasowego dostępu just-in-time jako 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 tajnych danych klastra przy użyciu polecenia kubectl get secrets.

    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 tajemnic, 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.

Gdy kubelogin próbuje pobrania tokenów z platformy tożsamości Microsoft, access_token i refresh_token są zwracane do dalszego użycia. Funkcja access_token wysyła żądania do interfejsu API, a element refresh_token jest używany do pobierania nowego access_token , gdy obecny 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: