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 za pomocą zakresów autoryzowanych adresów IP serwera interfejsu API ograniczyć, które adresy IP i ciDR mogą uzyskiwać dostęp do punktów końcowych płaszczyzny kontroli dla obciążeń usługi Azure Kubernetes Service (AKS).

Wymagania wstępne

Wskazówka

W portalu Azure użyj Azure Copilot, aby zmienić adresy IP, które mogą uzyskiwać dostęp do klastra. Aby uzyskać więcej informacji, zobacz Praca z klastrami AKS wydajnie przy użyciu rozwiązania Azure Copilot.

Ograniczenia i zagadnienia

  • Usługa AKS obsługuje tę funkcję tylko w przypadku modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Usługa AKS nie obsługuje już modułu równoważenia obciążenia jednostki SKU w warstwie Podstawowa. Jeśli masz istniejący klaster, który używa jednostki SKU w warstwie Podstawowa, przeprowadź migrację do jednostki SKU w warstwie Standardowa. Migracja wymaga przestoju i ma dodatkowe wymagania wstępne.
  • Tej funkcji nie można używać z klastrami prywatnymi.
  • W przypadku klastrów korzystających z publicznych adresów IP węzłów każda pula węzłów z publicznymi adresami IP musi używać prefiksów publicznych adresów IP. Dodaj te prefiksy jako autoryzowane zakresy.
  • Można określić maksymalnie 200 autoryzowanych zakresów adresów IP. Aby przejść poza ten limit, rozważ użycie integracji z siecią wirtualną serwera API Server, która obsługuje maksymalnie 2000 autoryzowanych zakresów adresów IP.

Omówienie zakresów autoryzowanych adresów IP serwera interfejsu API

Serwer interfejsu API Kubernetes uwidacznia bazowe interfejsy API platformy Kubernetes. Narzędzia do zarządzania, takie jak kubectl i pulpit nawigacyjny platformy Kubernetes, współdziałają z klastrem za pośrednictwem tego serwera interfejsu API. Usługa AKS udostępnia płaszczyznę sterowania z jedną dzierżawą z dedykowanym serwerem interfejsu API i domyślnie przypisuje serwer publiczny adres IP. Dostęp można kontrolować przy użyciu kontroli dostępu opartej na rolach platformy Kubernetes (Kubernetes RBAC) lub Azure kontroli dostępu opartej na rolach.

Aby zabezpieczyć serwer interfejsu API płaszczyzny sterowania usługi AKS w inny sposób dostępny publicznie, włącz autoryzowane zakresy adresów IP. Autoryzowane zakresy adresów IP umożliwiają komunikowanie się z serwerem interfejsu API tylko zdefiniowanymi zakresami adresów IP. Serwer interfejsu API blokuje żądania z adresów IP, które nie są uwzględnione w autoryzowanych zakresach. Propagacja reguł może potrwać do dwóch minut. Poczekaj do dwóch minut przed rozpoczęciem testowania połączenia.

Zalecamy uwzględnienie następujących zakresów adresów IP w konfiguracji autoryzowanych zakresów adresów IP serwera interfejsu API:

  • Adres wyjściowy IP klastra (zapora, brama NAT lub inny adres, w zależności od typu ruchu wychodzącego).
  • Zakresy adresów IP dla sieci używanych do administrowania klastrem.

Tworzenie klastra AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API

Uwaga / Notatka

Po włączeniu autoryzowanych zakresów adresów IP serwera interfejsu API podczas tworzenia klastra usługa AKS dodaje publiczny adres IP serwera interfejsu API i wychodzący publiczny adres IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa do listy autoryzowanych zakresów adresów IP, oprócz określonych zakresów.

Przypadek specjalny — 0.0.0.0/320.0.0.0/32 symbol zastępczy informuje usługę AKS o umożliwieniu dostępu do serwera interfejsu API tylko wychodzącego publicznego adresu IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Symbol zastępczy ma następujące zachowania:

Behavior Description
Dodatkowe zakresy adresów IP klienta Wyłącza domyślne zachowanie zezwalania na dodatkowe zakresy adresów IP klienta.
Dostęp do serwera interfejsu API Ogranicza dostęp serwera interfejsu API tylko do wychodzącego adresu IP należącego do klastra.
Samoobsługowe zarządzanie Umożliwia klastrowi samodzielne zarządzanie, blokując dostęp zewnętrzny.

Aby utworzyć klaster z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API, podaj listę autoryzowanych zakresów publicznych adresów IP. W przypadku zakresu CIDR użyj adresu sieciowego, który jest pierwszym adresem IP w zakresie. Aby na przykład zezwolić zakresowi 137.117.106.88 na 137.117.106.95wartość , określ wartość 137.117.106.88/29.

az aks create Użyj polecenia z parametrem --api-server-authorized-ip-ranges , aby utworzyć klaster usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup i umożliwia zakresowi 73.140.245.0/24 adresów IP dostęp do serwera interfejsu API:

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

New-AzAksCluster Użyj polecenia cmdlet z parametrem -ApiServerAccessAuthorizedIpRange , aby utworzyć klaster usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup i umożliwia zakresowi 73.140.245.0/24 adresów IP dostęp do serwera interfejsu API:

New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '73.140.245.0/24' -GenerateSshKey
  1. Na stronie głównej witryny Azure Portal wybierz pozycję Utwórz zasób>Kontenery>usługi Azure Kubernetes Service (AKS).
  2. Skonfiguruj ustawienia klastra zgodnie z potrzebami.
  3. W sekcji Sieć w obszarze Dostęp publiczny wybierz pozycję Ustaw autoryzowane zakresy adresów IP.
  4. W polu Określ zakresy adresów IP wprowadź zakresy adresów IP, które chcesz autoryzować w celu uzyskania dostępu do serwera interfejsu API.
  5. Skonfiguruj pozostałe ustawienia klastra zgodnie z potrzebami.
  6. Gdy wszystko będzie gotowe, wybierz pozycję Przejrzyj i utwórz>Utwórz aby utworzyć klaster.

Określanie wychodzących adresów IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa przy użyciu Azure CLI

Podczas tworzenia klastra z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API można również określić jego wychodzące adresy IP lub prefiksy przy użyciu --load-balancer-outbound-ips parametrów lub --load-balancer-outbound-ip-prefixes . Usługa AKS umożliwia te adresy IP oprócz adresów IP w parametrze --api-server-authorized-ip-ranges .

Użyj parametru --load-balancer-outbound-ips , aby utworzyć klaster usługi AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API i określić wychodzące adresy IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup, umożliwia 73.140.245.0/24 dostęp do serwera interfejsu API i określa dwa wychodzące adresy IP dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Zastąp <public-ip-id-1> wartości i <public-ip-id-2> identyfikatorami zasobów publicznych adresów IP.

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 wychodzący Standardowego SKU równoważenia obciążenia

Użyj parametru --api-server-authorized-ip-ranges , aby utworzyć klaster usługi AKS, który umożliwia dostęp do serwera interfejsu API tylko wychodzącym publicznym adresem IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

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

Użyj parametru -ApiServerAccessAuthorizedIpRange , aby utworzyć klaster usługi AKS, który umożliwia dostęp do serwera interfejsu API tylko wychodzącym publicznym adresem IP modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '0.0.0.0/32' -GenerateSshKey
  1. Na stronie głównej witryny Azure Portal wybierz pozycję Utwórz zasób>Kontenery>usługi Azure Kubernetes Service (AKS).
  2. Skonfiguruj ustawienia klastra zgodnie z potrzebami.
  3. W sekcji Sieć w obszarze Dostęp publiczny wybierz pozycję Ustaw autoryzowane zakresy adresów IP.
  4. W polu Określ zakresy adresów IP wprowadź wartość 0.0.0.0/32. To ustawienie zezwala tylko na wychodzący publiczny adres IP standardowego modułu równoważenia obciążenia SKU.
  5. Skonfiguruj pozostałe ustawienia klastra zgodnie z potrzebami.
  6. Gdy wszystko będzie gotowe, wybierz pozycję Przejrzyj i utwórz>Utwórz aby utworzyć klaster.

Aktualizowanie autoryzowanych zakresów adresów IP serwera interfejsu API w istniejącym klastrze

az aks update Użyj polecenia z parametrem --api-server-authorized-ip-ranges , aby zaktualizować autoryzowane zakresy adresów IP serwera interfejsu API klastra. Poniższy przykład ustawia autoryzowany zakres dla 73.140.245.0/24 klastra o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24

Zezwalaj na wiele zakresów adresów IP przy użyciu Azure CLI

Aby zezwolić na wiele zakresów adresów IP, rozdziel je przecinkami.

az aks update Użyj polecenia z parametrem , --api-server-authorized-ip-ranges aby autoryzować wiele zakresów adresów IP. Poniższy przykład aktualizuje klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

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

Set-AzAksCluster Użyj polecenia cmdlet z parametrem -ApiServerAccessAuthorizedIpRange , aby zaktualizować autoryzowane zakresy adresów IP serwera interfejsu API klastra. Poniższy przykład ustawia autoryzowany zakres dla 73.140.245.0/24 klastra o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange '73.140.245.0/24'
  1. Przejdź do witryny Azure Portal i wybierz klaster usługi AKS, który chcesz zaktualizować.
  2. Z menu usługi w obszarze Ustawienia wybierz pozycję Sieć.
  3. W obszarze Ustawienia zasobów wybierz pozycję Zarządzaj.
  4. Na stronie Autoryzowane zakresy adresów IP zaktualizuj zakresy autoryzowanych adresów IP zgodnie z potrzebami .
  5. Po zakończeniu wybierz opcję Zapisz.

Zdezaktywuj zakresy autoryzowanych adresów IP serwera interfejsu API w istniejącym klastrze.

Aby wyłączyć autoryzowane zakresy adresów IP serwera interfejsu API, użyj 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 ""

Aby wyłączyć autoryzowane zakresy adresów IP serwera interfejsu API, użyj Set-AzAksCluster polecenia cmdlet i określ pusty zakres '' parametru -ApiServerAccessAuthorizedIpRange .

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange ''
  1. Przejdź do witryny Azure Portal i wybierz klaster usługi AKS, który chcesz zaktualizować.
  2. Z menu usługi w obszarze Ustawienia wybierz pozycję Sieć.
  3. W obszarze Ustawienia zasobów wybierz pozycję Zarządzaj.
  4. Na stronie Autoryzowane zakresy adresów IP usuń zaznaczenie pola wyboru Ustaw autoryzowane zakresy adresów IP .
  5. Wybierz Zapisz.

Znajdowanie istniejących zakresów autoryzowanych adresów IP serwera interfejsu API

Aby znaleźć istniejące zakresy autoryzowanych adresów IP serwera interfejsu API, użyj az aks show polecenia z parametrem ustawionym --query na apiServerAccessProfile.authorizedIpRanges.

az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges

Przykładowy wynik:

[
    "73.140.245.0/24"
]

Aby znaleźć istniejące zakresy autoryzowanych adresów IP serwera interfejsu Get-AzAksCluster API, użyj polecenia cmdlet .

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster | Select-Object -ExpandProperty ApiServerAccessProfile

Przykładowy wynik:

AuthorizedIPRanges: {73.140.245.0/24}
...
  1. Przejdź do witryny Azure Portal i wybierz klaster usługi AKS.

  2. Z menu usługi w obszarze Ustawienia wybierz pozycję Sieć.

    Sekcja Ustawienia zasobów na stronie Sieć zawiera aktualnie skonfigurowane autoryzowane zakresy adresów IP.

    Zrzut ekranu przedstawiający autoryzowane zakresy adresów IP w obszarze Ustawienia zasobów w portalu Azure.

Uzyskiwanie dostępu do serwera API z maszyny deweloperskiej, narzędzi programistycznych lub oprogramowania do automatyzacji

Aby uzyskać dostęp do serwera interfejsu API z maszyny deweloperskiej, narzędzia lub systemu automatyzacji, dodaj swój publiczny adres IP do autoryzowanych zakresów adresów IP klastra.

Alternatywnie skonfiguruj serwer przesiadkowy z niezbędnym narzędziem w oddzielnej podsieci w sieci wirtualnej zapory i dodaj adresy IP zapory do autoryzowanych zakresów. Jeśli podsieć klastra usługi AKS korzysta z wymuszonego tunelowania przez zaporę, możesz umieścić ten serwer przesiadkowy w podsieci klastra usługi AKS.

Uwaga / Notatka

Poniższy przykład zachowuje istniejący autoryzowany zakres i dodaje inny adres IP. Jeśli pominięto istniejący adres IP, polecenie zastąpi go nowym zakresem.

  1. Uruchom następujące polecenie, aby pobrać adres IP i ustawić go jako zmienną środowiskową:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. az aks update Użyj polecenia z parametrem , --api-server-authorized-ip-ranges aby dodać adres IP do autoryzowanych zakresów. Poniższy przykład dodaje bieżący adres IP do istniejących zakresów w klastrze o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges $CURRENT_IP/32,73.140.245.0/24
    
  1. Uruchom następujące polecenie, aby pobrać adres IP i ustawić go jako zmienną środowiskową:

    # Retrieve your IP address
    $CURRENT_IP = (Invoke-RestMethod -Uri 'https://ipinfo.io/json').ip
    
  2. Set-AzAksCluster Użyj polecenia cmdlet z parametrem , -ApiServerAccessAuthorizedIpRange aby dodać adres IP do autoryzowanych zakresów. Poniższy przykład dodaje bieżący adres IP do istniejących zakresów w klastrze o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange "$CURRENT_IP/32", '73.140.245.0/24'
    

Aby uzyskać inny sposób identyfikowania adresu IP, zobacz Znajdowanie adresu IP lub wyszukiwanie mojego adresu IP? w przeglądarce internetowej.

Aby dowiedzieć się więcej o zabezpieczeniach w usłudze AKS, przeczytaj następujące artykuły.