Udostępnij przez


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 witrynie Azure Portal możesz użyć usługi Azure Copilot, aby wprowadzić zmiany w adresach 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

  • Ta funkcja jest obsługiwana tylko w module równoważenia obciążenia jednostki SKU w warstwie Standardowa dla klastrów utworzonych po październiku 2019 r. Wszystkie istniejące klastry na load balancerze SKU Basic z włączoną funkcją powinny nadal działać prawidłowo, jeśli wersja Kubernetes i płaszczyzna kontrolna zostaną zaktualizowane. Nie można jednak migrować tych klastrów do równoważnika obciążenia Standard SKU.
  • Tej funkcji nie można używać z klastrami prywatnymi.
  • W przypadku korzystania z tej funkcji z klastrami, które używają publicznych adresów IP węzłów, pule węzłów korzystające z tych adresów muszą używać prefiksów publicznych adresów IP. Należy dodać prefiksy publicznych adresów IP 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 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 jednodzierżawową płaszczyznę sterowania klastra z dedykowanym serwerem API. Serwer interfejsu API ma 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 publicznie dostępnej płaszczyzny kontrolnej/serwera 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. Propagacja reguł może potrwać do dwóch minut. Poczekaj do tego czasu podczas 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).
  • Dowolny zakres reprezentujący sieci, z których będziesz administrować 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, zarówno publiczny adres IP serwera interfejsu API, jak i publiczny adres IP ruchu wychodzącego dla modułu równoważenia obciążenia Standard SKU są domyślnie dozwolone oprócz wszelkich zakresów, które określisz.

Przypadek specjalny — 0.0.0.0/32jest to specjalna wartość, która informuje usługę AKS, aby umożliwić dostęp do serwera API wyłącznie przez wychodzący publiczny adres IP modułu równoważenia obciążenia typu Standard SKU. Wartość 0.0.0.0/32 działa jako symbol zastępczy, który:

  • Wyłącza domyślne zachowanie zezwalania na dodatkowe zakresy adresów IP klienta.
  • Ogranicza dostęp serwera interfejsu API tylko do wychodzącego adresu IP należącego do klastra.
  • Jest przydatny w scenariuszach, w których klaster ma zarządzać samodzielnie, ale blokować dostęp zewnętrzny.

Podczas tworzenia klastra z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API należy podać listę autoryzowanych zakresów publicznych adresów IP. Po określeniu zakresu CIDR należy użyć adresu sieciowego (pierwszego adresu IP w zakresie). Jeśli na przykład chcesz zezwolić zakresowi od 137.117.106.88 do 137.117.106.95, musisz określić 137.117.106.88/29.

  • Utwórz klaster AKS, w którym włączono autoryzowane zakresy adresów IP serwera API, używając polecenia az aks create 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 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
    
  • Utwórz klaster AKS z włączonymi autoryzowanymi zakresami adresów IP serwera interfejsu API, korzystając z polecenia cmdlet New-AzAksCluster i parametru -ApiServerAccessAuthorizedIpRange. 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 load balancera Standard SKU

Podczas tworzenia klastra, w którym włączone są autoryzowane zakresy adresów IP serwera interfejsu API, można również określić wychodzące adresy IP lub prefiksy dla klastra za pomocą parametrów --load-balancer-outbound-ips 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 AKS z włączonymi autoryzowanymi zakresami adresów IP dla serwera interfejsu API i określ adresy IP wychodzące dla standardowego modułu równoważenia obciążenia przy użyciu parametru --load-balancer-outbound-ips. Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup, umożliwia zakresowi 73.140.245.0/24 adresów IP dostęp do serwera interfejsu API i określa dwa adresy IP do komunikacji wychodzącej dla równoważnika obciążenia w wersji SKU Standard. Pamiętaj, aby zastąpić symbole zastępcze <public-ip-id-1> i <public-ip-id-2> rzeczywistymi identyfikatorami zasobów dla swoich 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

  • Utwórz klaster AKS z włączonymi autoryzowanymi zakresami adresów IP serwera API i zezwalaj tylko na wychodzący publiczny adres IP modułu równoważenia obciążenia SKU w warstwie Standard, używając parametru --api-server-authorized-ip-ranges. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup. Włączono autoryzowane zakresy adresów IP serwera interfejsu API i zezwala się jedynie na wychodzący adres IP publiczny dla modułu równoważenia obciążenia o typie Standard SKU.

    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
    
  • Utwórz klaster AKS z włączonymi autoryzowanymi zakresami adresów IP serwera API i zezwalaj tylko na wychodzący publiczny adres IP modułu równoważenia obciążenia SKU w warstwie Standard, używając parametru -ApiServerAccessAuthorizedIpRange. W poniższym przykładzie tworzony jest klaster o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup. Włączono autoryzowane zakresy adresów IP serwera interfejsu API i zezwala się jedynie na wychodzący adres IP publiczny dla modułu równoważenia obciążenia o typie Standard SKU.

    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

  • Zaktualizuj zakresy autoryzowanych adresów IP serwera interfejsu API istniejącego klastra przy użyciu polecenia az aks update 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 i aktualizuje zakres adresów IP na 73.140.245.0/24:

    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

Aby zezwolić na wiele zakresów adresów IP, można wyświetlić kilka adresów IP rozdzielonych przecinkami.

  • Zaktualizuj autoryzowane zakresy adresów IP serwera API istniejącego klastra, aby umożliwić wiele zakresów adresów IP, używając polecenia az aks update 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 i zezwala na wiele zakresów adresów IP:

    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
    
  • Zaktualizuj autoryzowane zakresy adresów IP serwera API istniejącego klastra, używając polecenia cmdlet z parametrem Set-AzAksCluster. 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 i aktualizuje zakres adresów IP na 73.140.245.0/24:

    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.

  • Wyłącz zakresy adresów IP autoryzowane na serwerze API używając polecenia az aks update i określ pusty zakres dla parametru --api-server-authorized-ip-ranges"".

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    
  • Wyłącz autoryzowane zakresy adresów IP serwera API przy użyciu polecenia cmdlet Set-AzAksCluster i ustaw pusty zakres dla 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

  • Znajdź istniejące zakresy autoryzowanych adresów IP serwera interfejsu API przy użyciu 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"
    ]
    
  • Znajdź istniejące zakresy autoryzowanych adresów IP serwera API przy użyciu cmdlet Get-AzAksCluster.

    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ć. Istniejące zakresy autoryzowanych adresów IP serwera interfejsu API są wyświetlane w obszarze Ustawienia zasobów.

    Zrzut ekranu przedstawiający autoryzowane zakresy adresów IP serwera interfejsu API w witrynie Azure Portal.

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

Aby uzyskać dostęp do serwera API, należy dodać maszyny deweloperskie, narzędzia lub adresy IP automatyzacji do listy zatwierdzonych zakresów adresów IP klastra AKS.

Inną opcją jest skonfigurowanie "jumpboxa" z niezbędnymi narzędziami wewnątrz oddzielnej podsieci w sieci wirtualnej zapory. Ta opcja zakłada, że Twoje środowisko ma zaporę sieciową z odpowiednią siecią i że dodano adresy IP zapory sieciowej do autoryzowanych zakresów. Podobnie, jeśli wymuszono tunelowanie z podsieci AKS do podsieci zapory, umieszczenie punktu pośredniczącego w podsieci klastra również działa.

Uwaga / Notatka

W poniższym przykładzie dodano kolejny adres IP do zatwierdzonych zakresów. Nadal zawiera on istniejący adres IP. Jeśli nie dołączysz istniejącego adresu IP, to polecenie zastąpi je nowym, zamiast dodawać go do autoryzowanych zakresów.

  1. Pobierz adres IP i ustaw go na zmienną środowiskową przy użyciu następującego polecenia:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Dodaj swój adres IP do listy zatwierdzonych za pomocą polecenia az aks update z parametrem --api-server-authorized-ip-ranges. Poniższy przykład dodaje bieżący adres IP do istniejących zakresów autoryzowanych adresów IP serwera interfejsu API 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/24,73.140.245.0/24
    
  1. Pobierz adres IP i ustaw go na zmienną środowiskową przy użyciu następującego polecenia:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Dodaj swój adres IP do zatwierdzonej listy przy użyciu polecenia Set-AzAksCluster cmdlet z parametrem -ApiServerAccessAuthorizedIpRange. Poniższy przykład dodaje bieżący adres IP do istniejących zakresów autoryzowanych adresów IP serwera interfejsu API w klastrze o nazwie myAKSCluster w grupie zasobów o nazwie myResourceGroup:

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

Inną opcją jest użycie następującego polecenia w systemach Windows w celu uzyskania publicznego adresu IPv4:

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Możesz również wykonać kroki opisane w artykule 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.