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ą
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)
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)
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)
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
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)
Azure Kubernetes Service RBAC Admin
Przypisz rolę do grupy administracyjnejaz 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.
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)
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
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)
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
- Na stronie głównej witryny Azure Portal wybierz pozycję Microsoft Entra ID.
- W menu usługi w obszarze Zarządzanie wybierz pozycję Grupy, a następnie wybierz grupę administratorów.
- 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
Na stronie głównej witryny Azure Portal wyszukaj i wybierz pozycję Privileged Identity Management.
W menu usługi w obszarze Zarządzanie wybierz pozycję Grupy, a następnie wybierz grupę administratorów.
W menu usługi w obszarze Zarządzanie wybierz pozycję Przypisania>Dodaj przypisania.
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.
Na karcie Ustawienia wybierz pozycję Kwalifikujące się jako typ przypisania, a następnie wybierz pozycję Przypisz.
W menu usługi w obszarze Zarządzanie wybierz pozycję Ustawienia>Edytuj członka>.
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.
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.
Zaloguj się do witryny Azure Portal jako zwykły użytkownik przy użyciu
az login
polecenia .az login --username n01@$DOMAIN --password ${PASSWORD}
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>
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
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.
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 .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_token
element . 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:
- Kontrolowanie dostępu do klastra przy użyciu dostępu warunkowego za pomocą integracji z usługą AKS firmy Microsoft Entra
- Omówienie usługi Microsoft Entra Privileged Identity Management
- Używanie kontroli dostępu opartej na rolach platformy Kubernetes z identyfikatorem Entra firmy Microsoft w usłudze AKS
Azure Kubernetes Service