Zabezpečený přístup k serveru rozhraní API pomocí autorizovaných rozsahů IP adres ve službě Azure Kubernetes Service (AKS)

V tomto článku se dozvíte, jak pomocí funkce rozsahů IP adres autorizovaných serverem API omezit, které IP adresy a identifikátoryCIDR mají přístup k rovině řízení přístupu.

Server rozhraní API Kubernetes je jádrem řídicí roviny Kubernetes a je centrálním způsobem interakce a správy clusterů. Pokud chcete zlepšit zabezpečení clusterů a minimalizovat riziko útoků, doporučujeme omezit rozsahy IP adres, které mají přístup k serveru rozhraní API. K tomu můžete použít funkci autorizovaného rozsahu IP adres serveru rozhraní API.

Než začnete

  • Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.0.76 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Informace o IP adresách, které se mají zahrnout při integraci clusteru AKS s Azure DevOps, najdete v článku o povolených IP adresách Azure DevOps a adresách URL domény.

Omezení

Funkce autorizovaných rozsahů IP adres serveru api má následující omezení:

  • Funkce autorizovaných rozsahů IP adres serveru API byla v říjnu 2019 přesunuta z verze Preview. U clusterů vytvořených po přesunutí funkce z verze Preview se tato funkce podporuje jenom v nástroji pro vyrovnávání zatížení skladové položky Standard . Všechny existující clustery v nástroji pro vyrovnávání zatížení skladové položky Basic s povolenými funkcemi rozsahů IP adres serveru API budou dál fungovat stejně jako v případě. Tyto clustery ale není možné migrovat do nástroje pro vyrovnávání zatížení skladové položky Standard . Stávající clustery budou dál fungovat, pokud se upgraduje verze Kubernetes a rovina řízení.
  • Funkce rozsahů IP adres autorizovaného serverem ROZHRANÍ API není v privátních clusterech podporovaná.
  • Při použití této funkce u clusterů, které používají veřejnou IP adresu uzlu, musí fondy uzlů používající veřejnou IP adresu používat předpony veřejných IP adres. Předpony veřejných IP adres musí být přidány jako autorizované rozsahy.

Přehled rozsahů IP adres autorizovaných serverem rozhraní API

Server rozhraní Kubernetes API zveřejňuje základní rozhraní API Kubernetes a poskytuje interakci pro nástroje pro správu, jako je kubectl řídicí panel Kubernetes. AKS poskytuje řídicí rovinu clusteru s jedním tenantem s vyhrazeným serverem rozhraní API. Server rozhraní API má ve výchozím nastavení přiřazenou veřejnou IP adresu. Přístup můžete řídit pomocí řízení přístupu na základě role Kubernetes (Kubernetes RBAC) nebo Azure RBAC.

Pokud chcete zabezpečit přístup k jinak veřejně přístupné řídicí rovině AKS nebo serveru API, můžete povolit a používat autorizované rozsahy IP adres. Tyto autorizované rozsahy IP adres umožňují komunikaci jenom s definovanými rozsahy IP adres se serverem rozhraní API. Všechny požadavky na server rozhraní API z IP adresy, která není součástí těchto autorizovaných rozsahů IP adres, jsou blokované.

Vytvoření clusteru AKS s povolenými rozsahy IP adres autorizovanými serverem API

Důležité

Ve výchozím nastavení váš cluster používá nástroj pro vyrovnávání zatížení skladové položky Standard, který můžete použít ke konfiguraci odchozí brány. Když povolíte rozsahy IP adres autorizovaných serverem ROZHRANÍ API během vytváření clusteru, je veřejná IP adresa vašeho clusteru standardně povolená kromě zadaných rozsahů. Pokud zadáte "" nebo žádnou hodnotu , --api-server-authorized-ip-rangesjsou zakázané rozsahy IP adres autorizovaných serverem API. Mějte na paměti, že pokud používáte PowerShell, použijte --api-server-authorized-ip-ranges="" (se znaménkem rovná se), abyste se vyhnuli problémům s analýzou.

Poznámka:

Do seznamu povolených položek byste měli přidat tyto oblasti:

  • Výchozí IP adresa clusteru (brána firewall, brána NAT nebo jiná adresa v závislosti na typu odchozí komunikace).
  • Jakákoli oblast, která představuje sítě, ze které cluster spravujete.

Horní limit počtu rozsahů IP adres, které můžete zadat, je 200.

Rozšíření pravidel může trvat až dvě minuty. Při testování připojení počkejte až do té doby.

Při vytváření clusteru s povolenými rozsahy IP adres autorizovanými serverem API použijete --api-server-authorized-ip-ranges parametr k zadání seznamu autorizovaných rozsahů veřejných IP adres. Když zadáte rozsah CIDR, začněte první IP adresou v rozsahu. Například 137.117.106.90/29 je platný rozsah, ale ujistěte se, že v rozsahu zadáte první IP adresu, například 137.117.106.88/29.

  • Vytvořte cluster AKS s povolenými rozsahy IP adres autorizovanými serverem API pomocí az aks create příkazu s parametrem --api-server-authorized-ip-ranges . Následující příklad vytvoří cluster s názvem myAKSCluster ve skupině prostředků myResourceGroup s povolenými rozsahy IP adres autorizovanými serverem API. Povolené rozsahy IP adres jsou 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
    

Určení odchozích IP adres pro nástroj pro vyrovnávání zatížení skladové položky Standard

Při vytváření clusteru s povolenými rozsahy IP adres autorizovanými serverem API můžete také zadat odchozí IP adresy nebo předpony clusteru --load-balancer-outbound-ips pomocí parametrů nebo --load-balancer-outbound-ip-prefixes parametrů. Všechny IP adresy zadané v parametrech jsou povolené spolu s IP adresami v parametru --api-server-authorized-ip-ranges .

  • Vytvořte cluster AKS s povolenými rozsahy IP adres autorizovanými serverem API a pomocí parametru zadejte odchozí IP adresy pro nástroj pro vyrovnávání zatížení skladové --load-balancer-outbound-ips položky Standard. Následující příklad vytvoří cluster myAKSCluster ve skupině prostředků myResourceGroup s povolenými rozsahy IP adres autorizovanými serverem API a odchozíMI IP adresami <public-ip-id-1> a <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
    

Povolit pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení skladové položky Standard

Když povolíte rozsahy IP adres autorizovaných serverem API během vytváření clusteru, je kromě vámi zadaných rozsahů povolená i odchozí veřejná IP adresa nástroje pro vyrovnávání zatížení skladové položky Standard pro váš cluster. Pokud chcete povolit pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení skladové položky Standard, při zadávání parametru --api-server-authorized-ip-ranges použijete 0.0.0.0/32.

  • Vytvořte cluster AKS s povolenými rozsahy IP adres autorizovanými serverem API a povolte pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení skladové položky Standard pomocí parametru --api-server-authorized-ip-ranges . Následující příklad vytvoří cluster myAKSCluster ve skupině prostředků myResourceGroup s povolenými rozsahy IP adres autorizovanými serverem rozhraní API a povolí pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení skladové položky Standard:

    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
    

Aktualizace autorizovaných rozsahů IP adres serveru rozhraní API existujícího clusteru

  • Pomocí příkazu s az aks update parametrem aktualizujte autorizované rozsahy IP adres existujícího serveru rozhraní API clusteru --api-server-authorized-ip-ranges . Následující příklad aktualizuje rozsahy IP adres autorizovaného serverem ROZHRANÍ API v clusteru s názvem myAKSCluster ve skupině prostředků myResourceGroup. Rozsah IP adres, který se má autorizovat, je 73.140.245.0/24:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
    
  • Pokud chcete povolit více rozsahů IP adres, můžete uvést několik IP adres oddělených čárkami.

    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
    

    Při zadávání --api-server-authorized-ip-ranges parametru můžete použít také hodnotu 0.0.0.0/32, která povolí pouze veřejnou IP adresu nástroje pro vyrovnávání zatížení skladové položky Standard.

Zakázání autorizovaných rozsahů IP adres

  • Pomocí příkazu zakažte autorizované rozsahy az aks update IP adres a zadejte prázdný rozsah "" parametru --api-server-authorized-ip-ranges .

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    

Vyhledání existujících autorizovaných rozsahů IP adres

  • Pomocí příkazu s nastaveným apiServerAccessProfile.authorizedIpRangesparametrem az aks show --query vyhledejte existující autorizované rozsahy IP adres .

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

Jak najít moji IP adresu, do které se má zahrnout --api-server-authorized-ip-ranges?

Abyste mohli přistupovat k serveru rozhraní API, musíte přidat vývojové počítače, nástroje nebo ip adresy automatizace do seznamu clusterů AKS se schválenými rozsahy IP adres.

Další možností je nakonfigurovat jumpbox s potřebnými nástroji uvnitř samostatné podsítě ve virtuální síti brány firewall. Předpokládá se, že vaše prostředí má bránu firewall s příslušnou sítí a přidali jste IP adresy brány firewall do autorizovaných rozsahů. Podobně platí, že pokud jste vynutili tunelování z podsítě AKS do podsítě brány firewall, bude mít jumpbox v podsíti clusteru také v pořádku.

  1. Pomocí následujícího příkazu načtěte svoji IP adresu:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Přidejte ip adresu do schváleného seznamu pomocí Azure CLI nebo Azure PowerShellu:

    # 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'
    

Poznámka:

Výše uvedený příklad přidá do schválených rozsahů další IP adresu. Mějte na paměti, že stále obsahuje IP adresu z aktualizace rozsahů IP adres autorizovaného serverem rozhraní API clusteru. Pokud stávající IP adresu nezahrnete, tento příkaz ji nahradí novým, místo abyste ji přidali do autorizovaných rozsahů. Chcete-li zakázat autorizované rozsahy IP adres, použijte az aks update a zadejte prázdný rozsah "".

Další možností je použít následující příkaz v systémech Windows k získání veřejné IPv4 adresy, nebo můžete postupovat podle pokynů v části Najít IP adresu.

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

Tuto adresu můžete najít také tak, že vyhledáte , co je moje IP adresa v internetovém prohlížeči.

Použití značek služeb pro rozsahy IP adres autorizovaných serverem API – (Preview)

Značky služeb představují pohodlný způsob, jak určit skupinu IP adres odpovídající službě Kubernetes Service. Značky služeb můžete použít k určení IP adres služeb Kubernetes a konkrétních IP adres v autorizovaných rozsahech IP adres pro server rozhraní API tak, že je oddělíte čárkou.

Omezení

  • Tato funkce není kompatibilní s integrací virtuální sítě serveru API.

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Instalace rozšíření Azure CLI preview

  1. Nainstalujte rozšíření Azure CLI preview pomocí příkazu [az extension add][az-extension-add].

    az extension add --name aks-preview
    
  2. Pomocí příkazu [az extension update][az-extension-update] aktualizujte rozšíření, abyste měli jistotu, že máte nejnovější verzi.

    az extension update --name aks-preview
    

Registrace příznaku funkce autorizované IP adresy značky služby

  1. Pomocí příkazu az feature register zaregistrujte příznak funkce EnableServiceTagAuthorizedIPPreview.

    az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

    Dokončení registrace trvá několik minut.

  2. Pomocí příkazu az feature show ověřte registraci.

    az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

Vytvoření clusteru AKS s autorizovanými rozsahy IP adres značky služeb

Vytvořte cluster s autorizovanými rozsahy IP adres značky služeb pomocí --api-server-authorized-ip-ranges parametru se značkou AzureCloud služby, aby všechny služby Azure mohly přistupovat k serveru rozhraní API a zadat další IP adresu.

Poznámka:

V parametru --api-server-authorized-ip-ranges je povolena pouze jedna značka služby. Nelze zadat více značek služeb.

az aks create --resource-group myResourceGroup \
  --name myAKSCluster \
  --api-server-authorized-ip-ranges AzureCloud,20.20.20.20

Server rozhraní API byste měli být schopni curlovat z virtuálního počítače Azure nebo služby Azure, která je součástí značky AzureCloud služby.

Další kroky

V tomto článku jste povolili rozsahy IP adres autorizovaných serverem rozhraní API. Tento přístup je jednou z částí toho, jak bezpečně spustit cluster AKS. Další informace najdete v tématu Koncepty zabezpečení pro aplikace a clustery v AKS a osvědčené postupy pro zabezpečení a upgrady clusterů v AKS.