Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą
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)
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)
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)
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
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)
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ę 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.
Utwórz użytkownika normalnego przy użyciu polecenia
az 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)
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 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)
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
- 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 portalu Azure wyszukaj i wybierz 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ę >.
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.
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>Członek>Edytuj.
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.
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.
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ą 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
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.
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 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_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