Bezpieczny dostęp do serwera interfejsu API przy użyciu autoryzowanych zakresów adresów IP w usłudze Azure Kubernetes Service (AKS)
W tym artykule pokazano, jak używać funkcji zakresów autoryzowanych adresów IP serwera interfejsu API, aby ograniczyć, które adresy IP i CIDR mogą mieć płaszczyznę kontroli dostępu.
Serwer interfejsu API Kubernetes jest rdzeniem płaszczyzny sterowania platformy Kubernetes i jest centralnym sposobem interakcji z klastrami i zarządzania nimi. Aby zwiększyć bezpieczeństwo klastrów i zminimalizować ryzyko ataków, zalecamy ograniczenie zakresów adresów IP, które mogą uzyskiwać dostęp do serwera interfejsu API. W tym celu można użyć funkcji autoryzowanych zakresów adresów IP serwera interfejsu API.
Zanim rozpoczniesz
- Musisz zainstalować i skonfigurować interfejs wiersza polecenia platformy Azure w wersji 2.0.76 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Aby dowiedzieć się, jakie adresy IP należy uwzględnić podczas integrowania klastra usługi AKS z usługą Azure DevOps, zobacz artykuł Dozwolone adresy IP i adresy URL domeny usługi Azure DevOps.
Ograniczenia
Funkcja autoryzowanych zakresów adresów IP serwera interfejsu API ma następujące ograniczenia:
- Funkcja autoryzowanych zakresów adresów IP serwera interfejsu API została przeniesiona z wersji zapoznawczej w październiku 2019 r. W przypadku klastrów utworzonych po przeniesieniu funkcji z wersji zapoznawczej ta funkcja jest obsługiwana tylko w module równoważenia obciążenia jednostki SKU w warstwie Standardowa . Wszystkie istniejące klastry w module równoważenia obciążenia jednostki SKU w warstwie Podstawowa z włączoną funkcją zakresów adresów IP autoryzowanych przez serwer interfejsu API będą nadal działać zgodnie z oczekiwaniami. Nie można jednak migrować tych klastrów do modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa . Istniejące klastry będą nadal działać, jeśli wersja i płaszczyzna sterowania platformy Kubernetes zostaną uaktualnione.
- Funkcja zakresów adresów IP autoryzowanych przez serwer interfejsu API nie jest obsługiwana w klastrach prywatnych.
- W przypadku korzystania z tej funkcji z klastrami korzystającymi z publicznego adresu IP węzła pule węzłów korzystające z publicznego adresu IP węzła muszą używać prefiksów publicznych adresów IP. Prefiksy publicznych adresów IP należy dodać jako autoryzowane zakresy.
Omówienie zakresów autoryzowanych adresów IP serwera interfejsu API
Serwer interfejsu API Platformy Kubernetes uwidacznia podstawowe interfejsy API platformy Kubernetes i zapewnia interakcję z narzędziami do zarządzania, takimi jak kubectl
i pulpit nawigacyjny platformy Kubernetes. Usługa AKS udostępnia płaszczyznę sterowania klastra z jedną dzierżawą z dedykowanym serwerem interfejsu API. Serwer interfejsu API jest domyślnie przypisany publiczny adres IP. Dostęp można kontrolować przy użyciu kontroli dostępu opartej na rolach platformy Kubernetes (Kubernetes RBAC) lub kontroli dostępu opartej na rolach platformy Azure.
Aby zabezpieczyć dostęp do inaczej dostępnej publicznie płaszczyzny sterowania/serwera interfejsu API usługi AKS, możesz włączyć i użyć autoryzowanych zakresów adresów IP. Te autoryzowane zakresy adresów IP zezwalają tylko zdefiniowanym zakresom adresów IP na komunikację z serwerem interfejsu API. Wszystkie żądania wysyłane do serwera interfejsu API z adresu IP, który nie jest częścią tych autoryzowanych zakresów adresów IP, są blokowane.
Tworzenie klastra usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API
Ważne
Domyślnie klaster używa modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa, którego można użyć do skonfigurowania bramy ruchu wychodzącego. Po włączeniu autoryzowanych zakresów adresów IP serwera interfejsu API podczas tworzenia klastra publiczny adres IP klastra jest domyślnie dozwolony poza określonymi zakresami. Jeśli określisz wartość "" lub nie określono wartości --api-server-authorized-ip-ranges
, zakresy autoryzowanych adresów IP serwera interfejsu API są wyłączone. Pamiętaj, że jeśli używasz programu PowerShell, użyj polecenia --api-server-authorized-ip-ranges=""
(z znakami równości), aby uniknąć problemów z analizowaniem.
Uwaga
Należy dodać te zakresy do listy dozwolonych:
- Adres IP ruchu wychodzącego klastra (zapora, brama translatora adresów sieciowych lub inny adres, w zależności od typu ruchu wychodzącego).
- Dowolny zakres reprezentujący sieci, z których będziesz administrować klastrem.
Górny limit liczby zakresów adresów IP, które można określić, to 200.
Propagacja reguł może potrwać do dwóch minut. Poczekaj do tego czasu podczas testowania połączenia.
Podczas tworzenia klastra z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API można --api-server-authorized-ip-ranges
podać listę autoryzowanych zakresów publicznych adresów IP. Po określeniu zakresu CIDR zacznij od pierwszego adresu IP w zakresie. Na przykład 137.117.106.90/29 jest prawidłowym zakresem, ale upewnij się, że określono pierwszy adres IP w zakresie, na przykład 137.117.106.88/29.
Utwórz klaster usługi AKS z autoryzowanymi zakresami adresów IP serwera interfejsu API, używając
az aks create
polecenia z parametrem--api-server-authorized-ip-ranges
. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API. Dozwolone zakresy adresów IP to 73.140.245.0/24:az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
Określanie wychodzących adresów IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa
Podczas tworzenia klastra z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API można również określić wychodzące adresy IP lub prefiksy dla klastra przy użyciu --load-balancer-outbound-ips
parametrów lub --load-balancer-outbound-ip-prefixes
. Wszystkie adresy IP podane w parametrach są dozwolone wraz z adresami IP w parametrze --api-server-authorized-ip-ranges
.
Utwórz klaster usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API i określ wychodzące adresy IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa przy użyciu parametru
--load-balancer-outbound-ips
. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API oraz wychodzącymi adresami<public-ip-id-1>
IP i<public-ip-id-2>
:az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
Zezwalaj tylko na publiczny adres IP ruchu wychodzącego modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa
Po włączeniu autoryzowanych zakresów adresów IP serwera interfejsu API podczas tworzenia klastra publiczny adres IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa jest również domyślnie dozwolony oprócz określonych zakresów. Aby zezwolić tylko na publiczny adres IP ruchu wychodzącego modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa, podczas określania parametru należy użyć wartości 0.0.0.0/32.--api-server-authorized-ip-ranges
Utwórz klaster usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API i zezwalaj tylko na wychodzący publiczny adres IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa przy użyciu parametru
--api-server-authorized-ip-ranges
. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API i zezwala tylko na wychodzący publiczny adres IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa:az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
Aktualizowanie autoryzowanych zakresów adresów IP serwera interfejsu API istniejącego klastra
Zaktualizuj zakresy adresów IP autoryzowanych przez serwer interfejsu API istniejącego klastra przy użyciu
az aks update
polecenia z parametrem--api-server-authorized-ip-ranges
. Poniższy przykład aktualizuje autoryzowane zakresy adresów IP serwera interfejsu API w klastrze o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup. Zakres adresów IP do autoryzacji to 73.140.245.0/24:az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
Aby zezwolić na wiele zakresów adresów IP, można wyświetlić kilka adresów IP rozdzielonych przecinkami.
az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24,193.168.1.0/24,194.168.1.0/24
Można również użyć 0.0.0.0/32 podczas określania parametru
--api-server-authorized-ip-ranges
, aby zezwolić tylko na publiczny adres IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa.
Wyłączanie autoryzowanych zakresów adresów IP
Wyłącz autoryzowane zakresy adresów IP przy użyciu
az aks update
polecenia i określ pusty zakres""
parametru--api-server-authorized-ip-ranges
.az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
Znajdowanie istniejących autoryzowanych zakresów adresów IP
Znajdź istniejące autoryzowane zakresy adresów IP przy użyciu
az aks show
polecenia z parametrem ustawionym--query
naapiServerAccessProfile.authorizedIpRanges
.az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
Jak znaleźć mój adres IP do uwzględnienia w --api-server-authorized-ip-ranges
?
Aby uzyskać dostęp do serwera interfejsu API, należy dodać maszyny programistyczne, narzędzia lub adresy IP automatyzacji do listy zatwierdzonych zakresów adresów IP usługi AKS.
Inną opcją jest skonfigurowanie serwera przesiadkowego przy użyciu niezbędnych narzędzi wewnątrz oddzielnej podsieci w sieci wirtualnej zapory. Zakłada się, że środowisko ma zaporę z odpowiednią siecią i dodano adresy IP zapory do autoryzowanych zakresów. Podobnie, jeśli wymuszono tunelowanie z podsieci usługi AKS do podsieci zapory, posiadanie serwera przesiadkowego w podsieci klastra również jest w porządku.
Pobierz swój adres IP przy użyciu następującego polecenia:
# Retrieve your IP address CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
Dodaj swój adres IP do listy zatwierdzonych przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell:
# Add to AKS approved list using Azure CLI az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24 # Add to AKS approved list using Azure PowerShell Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
Uwaga
W powyższym przykładzie dodano kolejny adres IP do zatwierdzonych zakresów. Należy pamiętać, że nadal zawiera adres IP z sekcji Aktualizowanie autoryzowanych zakresów adresów IP serwera interfejsu API klastra. Jeśli nie dołączysz istniejącego adresu IP, to polecenie zastąpi je nowym, zamiast dodawać go do autoryzowanych zakresów. Aby wyłączyć autoryzowane zakresy adresów IP, użyj az aks update
i określ pusty zakres "".
Inną opcją jest użycie następującego polecenia w systemach Windows, aby uzyskać publiczny adres IPv4, lub możesz wykonać kroki opisane w temacie Znajdowanie adresu IP.
Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
Ten adres można również znaleźć, wyszukując mój adres IP w przeglądarce internetowej.
Używanie tagów usługi dla autoryzowanych zakresów adresów IP serwera API Server — (wersja zapoznawcza)
Tagi usługi to wygodny sposób określania grupy adresów IP odpowiadających usłudze Kubernetes Service. Za pomocą tagów usługi można określić adresy IP usług Kubernetes i określone adresy IP w autoryzowanych zakresach adresów IP dla serwera interfejsu API, oddzielając je przecinkami.
Ograniczenia
- Ta funkcja nie jest zgodna z integracją z siecią wirtualną serwera API.
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej
Zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej przy użyciu polecenia [az extension-add][az-extension-add].
az extension add --name aks-preview
Zaktualizuj rozszerzenie, aby upewnić się, że masz najnowszą wersję za pomocą polecenia [az extension update][az-extension-update].
az extension update --name aks-preview
Rejestrowanie flagi funkcji autoryzowanego adresu IP tagu usługi
Zarejestruj flagę funkcji EnableServiceTagAuthorizedIPPreview przy użyciu polecenia az feature register .
az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Ukończenie rejestracji trwa kilka minut.
Sprawdź rejestrację przy użyciu polecenia az feature show .
az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Tworzenie klastra usługi AKS przy użyciu autoryzowanych zakresów adresów IP tagu usługi
Utwórz klaster z autoryzowanymi zakresami adresów IP tagu usługi przy użyciu parametru --api-server-authorized-ip-ranges
z tagiem AzureCloud
usługi, aby zezwolić wszystkim usługom platformy Azure na dostęp do serwera interfejsu API i określić dodatkowy adres IP.
Uwaga
W parametrze --api-server-authorized-ip-ranges
dozwolony jest tylko jeden tag usługi. Nie można określić wielu tagów usługi.
az aks create --resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges AzureCloud,20.20.20.20
Powinno być możliwe curl serwera interfejsu API z maszyny wirtualnej platformy Azure lub usługi platformy Azure, która jest częścią tagu AzureCloud
usługi.
Następne kroki
W tym artykule włączono autoryzowane zakresy adresów IP serwera interfejsu API. Takie podejście jest jedną z części sposobu bezpiecznego uruchamiania klastra usługi AKS. Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące zabezpieczeń aplikacji i klastrów w usłudze AKS oraz Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze AKS.
Azure Kubernetes Service