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

V Kubernetes přijímá server rozhraní API požadavky na provedení akcí v clusteru, například k vytvoření prostředků nebo škálování počtu uzlů. Server rozhraní API je centrální způsob, jak pracovat s clusterem a spravovat ho. Aby se zlepšilo zabezpečení clusteru a minimalizovaly útoky, měl by být server rozhraní API přístupný jenom z omezené sady rozsahů IP adres.

Tento článek ukazuje, jak pomocí rozsahů IP adres autorizovaných serverem rozhraní API omezit, které IP adresy a soubory CIDR mají přístup k rovině řízení.

Než začnete

Tento článek ukazuje, jak vytvořit cluster AKS pomocí Azure CLI.

Potřebujete mít nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 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.

Omezení

Funkce Autorizované rozsahy IP adres serveru rozhraní API má následující omezení:

  • V clusterech vytvořených po přesunu rozsahů IP adres autorizovaných serverem API z verze Preview v říjnu 2019 se rozsahy IP adres autorizovaných serverem API podporují pouze v nástroji pro vyrovnávání zatížení se standardními SKU. Stávající clustery, které mají nakonfigurované rozsahy IP adres autorizované pro SKU Basic a server rozhraní API, budou dál fungovat tak, jak jsou, ale ne je možné je migrovat na nástroj pro vyrovnávání zatížení se standardní SKU. Tyto stávající clustery budou i nadále fungovat, pokud se upgradují jejich verze nebo řídicí rovina Kubernetes. Rozsahy IP adres autorizované serverem rozhraní API se pro privátní clustery nepodporují.
  • Při použití této funkce s clustery, které používají veřejnou IPadresu na uzel, musí tyto fondy uzlů s povolenou veřejnou IP adresou na uzel používat předpony veřejných IP adres a tyto předpony musí být přidány jako autorizované rozsahy.

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

Server rozhraní Kubernetes API je způsob, jakým se základní rozhraní API Kubernetes zveřejňuje. Tato komponenta poskytuje interakci pro nástroje pro správu, jako kubectl je nebo řídicí panel Kubernetes. AKS poskytuje řídicí rovinu clusteru s jedním tenantem s vyhrazeným serverem rozhraní API. Ve výchozím nastavení se serveru rozhraní API přiřadí veřejná IP adresa a přístup byste měli ří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 se serverem rozhraní API pouze definovaným rozsahům IP adres. Požadavek na server rozhraní API z IP adresy, která není součástí těchto autorizovaných rozsahů IP adres, je blokovaný. Dál používejte Kubernetes RBAC nebo Azure RBAC k autorizaci uživatelů a akcí, které si vyžádá.

Další informace o serveru rozhraní API a dalších komponentách clusteru najdete v tématu Základní koncepty Kubernetes pro AKS.

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

Vytvořte cluster pomocí příkazu az aks create a zadáním parametru zadejte seznam autorizovaných --api-server-authorized-ip-ranges rozsahů IP adres. Tyto rozsahy IP adres jsou obvykle rozsahy adres používané místními sítěmi nebo veřejnými IP adresami. Když zadáte rozsah CIDR, začněte první IP adresou v rozsahu. Například 137.117.106.90/29 je platný rozsah, ale nezapomeňte zadat první IP adresu v rozsahu, například 137.117.106.88/29.

Důležité

Ve výchozím nastavení cluster používá nástroj pro vyrovnávání zatížení standardní SKU, který můžete použít ke konfiguraci odchozí brány. Když při vytváření clusteru povolíte rozsahy IP adres autorizované serverem rozhraní API, kromě rozsahů, které zadáte, se ve výchozím nastavení povolí také veřejná IP adresa vašeho clusteru. Pokud pro zadáte "" nebo žádnou hodnotu , rozsahy IP adres autorizované --api-server-authorized-ip-ranges serverem rozhraní API budou zakázané. Pokud používáte PowerShell, použijte (se znaménkem rovná se), abyste se vyhnuli --api-server-authorized-ip-ranges="" problémům s parsací.

Následující příklad vytvoří cluster s jedním uzlem myAKSCluster ve skupině prostředků myResourceGroup s povolenými rozsahy IP adres autorizovanými serverem rozhraní API. Povolené rozsahy IP adres jsou 73.140.245.0/24:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --api-server-authorized-ip-ranges 73.140.245.0/24 \
    --generate-ssh-keys

Poznámka

Tyto rozsahy byste měli přidat do seznamu povolení:

  • Veřejná IP adresa brány firewall
  • Libovolný rozsah, který představuje sítě, ze které budete cluster spravovat

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

Rozšíření pravidel může trvat až 2 minut. Počkejte prosím až do té doby při testování připojení.

Určení odchozích IP adresy pro nástroj pro vyrovnávání zatížení se standardními SKU

Pokud při vytváření clusteru AKS zadáte odchozí IP adresy nebo předpony clusteru, budou povoleny také tyto adresy nebo předpony. Příklad:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --api-server-authorized-ip-ranges 73.140.245.0/24 \
    --load-balancer-outbound-ips <publicIpId1>,<publicIpId2> \
    --generate-ssh-keys

Ve výše uvedeném příkladu jsou povolené všechny IP adresy zadané v parametru spolu s --load-balancer-outbound-ip-prefixes IP uvedenými IP uvedenými v --api-server-authorized-ip-ranges parametru .

Místo toho můžete zadat parametr --load-balancer-outbound-ip-prefixes , který povolí předpony IP odchozího nástroje pro vyrovnávání zatížení.

Povolit pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení standardní SKU

Když při vytváření clusteru povolíte rozsahy IP adres autorizované serverem rozhraní API, odchozí veřejná IP adresa pro nástroj pro vyrovnávání zatížení standardní SKU pro váš cluster je ve výchozím nastavení povolená kromě rozsahů, které zadáte. Pokud chcete povolit pouze odchozí veřejnou IP adresu nástroje pro vyrovnávání zatížení standardní SKU, při zadávání parametru použijte 0.0.0.0/32. --api-server-authorized-ip-ranges

V následujícím příkladu je povolená pouze odchozí veřejná IP adresa nástroje pro vyrovnávání zatížení standardní SKU a k serveru rozhraní API můžete přistupovat pouze z uzlů v rámci clusteru.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --api-server-authorized-ip-ranges 0.0.0.0/32 \
    --generate-ssh-keys

Aktualizace rozsahů IP adres autorizovaných serverem rozhraní API clusteru

Pokud chcete aktualizovat rozsahy IP adres autorizované serverem rozhraní API v existujícím clusteru, použijte příkaz az aks update a použijte parametry --api-server-authorized-ip-ranges ,--load-balancer-outbound-ip-prefixes , --load-balancer-outbound-ips nebo--load-balancer-outbound-ip-prefixes.

Následující příklad aktualizuje rozsahy IP adres autorizované serverem rozhraní API v clusteru myAKSCluster ve skupině prostředků myResourceGroup. Rozsah IP adres pro autorizaci je 73.140.245.0/24:

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

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

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

Pokud chcete zakázat autorizované rozsahy IP adres, pomocí příkazu az aks update a zadáním prázdného rozsahu zakažte rozsahy IP adres autorizované serverem rozhraní API. Příklad:

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

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

K vyhledání autorizovaných rozsahů IP adres použijte příkaz az aks show a zadejte název a skupinu prostředků clusteru. Příklad:

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

Aktualizace, zakázání a vyhledání autorizovaných rozsahů IP adres pomocí Azure Portal

Výše uvedené operace přidávání, aktualizace, hledání a zakazování autorizovaných rozsahů IP adres je možné provádět také v Azure Portal. Pokud chcete získat přístup, v Nastavení v okně nabídky vašeho prostředku clusteru přejděte do části Sítě.

V prohlížeči se zobrazí nastavení sítě prostředku clusteru Azure Portal stránce. Možnosti Nastavit zadaný rozsah IP adres a Zadané rozsahy IP adres jsou zvýrazněné.

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

Pokud chcete získat přístup k serveru rozhraní API, musíte do seznamu schválených rozsahů IP adres AKS přidat vývojové počítače, nástroje nebo IP adresy pro automatizaci.

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ředpokladem je, že vaše prostředí má bránu firewall s příslušnou sítí a že jste IP adresy brány firewall přidali do autorizovaných rozsahů. Podobně, pokud jste vynutili tunelování z podsítě AKS do podsítě brány firewall, než mít jumpbox v podsíti clusteru, je také v pořádku.

Pomocí následujícího příkazu přidejte do schválených rozsahů další IP adresu.

# Retrieve your IP address
CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
# Add to AKS approved list
az aks update -g $RG -n $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/32

Poznámka

Výše uvedený příklad připojí autorizované rozsahy IP adres serveru rozhraní API v clusteru. Pokud chcete zakázat autorizované rozsahy IP adres, použijte příkaz az aks update a zadejte prázdný rozsah .

Další možností je pomocí následujícího příkazu v Windows získat veřejnou adresu IPv4, nebo můžete použít postup v části Vyhledání IP adresy.

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

Tuto adresu najdete také tak, že v internetovém prohlížeči vyhledáte "what is my IP address" (jaká je moje IP adresa).

Další kroky

V tomto článku jste povolili rozsahy IP adres autorizované serverem rozhraní API. Tento přístup je jednou z částí, jak můžete spustit zabezpečený 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í clusteru a upgrady v AKS.