Upravit

Sdílet prostřednictvím


Zabezpečení síťového přístupu k Kubernetes

Azure Bastion
Azure DNS
Azure Kubernetes Service (AKS)
Azure Private Link
Azure Virtual Network

Tento článek porovnává síťové režimy pro Azure Kubernetes Service (AKS) a Amazon Elastic Kubernetes Service (Amazon EKS). Tento článek popisuje, jak zlepšit zabezpečení připojení ke spravovanému serveru rozhraní API clusteru AKS a různé možnosti omezení přístupu k veřejné síti.

Poznámka:

Tento článek je součástí série článků, které pomáhají odborníkům, kteří jsou obeznámeni s Amazon EKS, porozumět službě Azure Kubernetes Service (AKS).

Síťové režimy Amazon EKS

S Amazon Virtual Private Cloud (Amazon VPC) můžete spouštět prostředky Amazon Web Services (AWS) do virtuální sítě složené z veřejných a privátních podsítí nebo rozsahů IP adres v nástroji VPC. Veřejná podsíť hostuje prostředky, které musí být připojené k internetu, a privátní podsíť hostuje prostředky, které nejsou připojené k veřejnému internetu. Amazon EKS může zřídit skupiny spravovaných uzlů ve veřejných i privátních podsítích.

Řízení přístupu ke koncovému bodu umožňuje nakonfigurovat, jestli je koncový bod serveru API dostupný z veřejného internetu nebo přes VPC. EKS nabízí několik způsobů řízení přístupu ke koncovému bodu clusteru. Můžete povolit výchozí veřejný koncový bod, privátní koncový bod nebo oba koncové body současně. Když povolíte veřejný koncový bod, můžete přidat omezení CIDR (Classless Inter-Domain Routing) pro omezení IP adres klientů, které se můžou připojit k veřejnému koncovému bodu.

Způsob připojení uzlů Amazon EKS ke spravované řídicí rovině Kubernetes je určen nastavením koncového bodu nakonfigurovaného pro cluster. Nastavení koncového bodu můžete kdykoli změnit prostřednictvím konzoly Amazon EKS nebo rozhraní API. Další informace najdete v tématu Řízení přístupu ke koncovým bodům clusteru Amazon EKS.

Pouze veřejný koncový bod

Zveřejnění řídicí roviny prostřednictvím veřejného koncového bodu je výchozím režimem pro nové clustery Amazon EKS. Pokud je povolený pouze veřejný koncový bod pro cluster, požadavky rozhraní API Kubernetes, které pocházejí z Amazon VPC, například pracovní uzel pro komunikaci řídicí roviny, opustí VPC, ale neopustí síť Amazonu. Aby se uzly mohly připojit k řídicí rovině, musí používat veřejnou IP adresu a trasu k internetové bráně nebo trasu k bráně překladu síťových adres (NAT), kde můžou používat veřejnou IP adresu služby NAT Gateway.

Veřejné a privátní koncové body

Pokud jsou povolené veřejné i privátní koncové body, požadavky rozhraní API Kubernetes z VPC komunikují s řídicí rovinou prostřednictvím elastických síťových rozhraní spravovaných Amazonem EKS (ENI) v nástroji VPC. Server rozhraní API clusteru je přístupný z internetu.

Pouze privátní koncový bod

Pokud je povolený pouze privátní koncový bod, musí veškerý provoz na server rozhraní API clusteru, jako jsou příkazy kubectl nebo helm, pocházet z VPC clusteru nebo připojených síťových. Veřejný přístup k serveru rozhraní API z internetu je zakázaný. Tento režim přístupu můžete implementovat pomocí AWS Virtual Private Network (AWS VPN) nebo AWS DirectConnect k VPC. Pokud chcete omezit přístup ke koncovému bodu bez AWS VPN nebo DirectConnectu, můžete do veřejného koncového bodu přidat omezení CIDR, abyste omezili připojení bez nastavení dalších sítí.

Pokud jste zakázali veřejný přístup ke koncovému bodu serveru rozhraní Kubernetes API vašeho clusteru, můžete k koncovému bodu serveru rozhraní API Kubernetes přistupovat jedním z následujících způsobů:

  • připojené síťové: Připojte síť k VPC pomocí tranzitní brány AWS nebo jiných možností připojení a pak použijte počítač v připojené síti. Musíte zajistit, aby skupina zabezpečení řídicí roviny Amazon EKS obsahovala pravidla, která povolují příchozí provoz na portu 443 z připojené sítě.
  • hostitele bastionu Amazon EC2: Instanci Amazon EC2 můžete spustit do veřejné podsítě ve vašem clusteru VPC a pak se přihlásit přes SSH do této instance, abyste mohli spouštět příkazy kubectl. Další informace najdete v tématu hostitelé bastionu linuxu v AWS. Musíte zajistit, aby vaše skupina zabezpečení řídicí roviny Amazon EKS obsahovala pravidla, která povolují příchozí provoz na portu 443 z hostitele bastionu. Další informace najdete v tématu Zobrazení požadavků skupiny zabezpečení Amazon EKS pro clustery. Při konfiguraci kubectl pro vašeho hostitele bastionu nezapomeňte použít přihlašovací údaje AWS, které jsou už namapované na konfiguraci RBAC vašeho clusteru, nebo před odebráním veřejného přístupu koncového bodu přidejte objektu zabezpečení IAM, který bude vaše bastion používat ke konfiguraci RBAC. Další informace najdete v tématu Udělení přístupu uživatelům a rolím IAM k rozhraním API Kubernetes a Neoprávněný přístup nebo odepřený přístup (kubectl).
  • integrované vývojové prostředí (IDE) AWS Cloud9: AWS Cloud9 je cloudové integrované vývojové prostředí (IDE), které umožňuje psát, spouštět a ladit kód jenom v prohlížeči. Ve VPC vašeho clusteru můžete vytvořit integrované vývojové prostředí AWS Cloud9 a pomocí integrovaného vývojového prostředí (IDE) komunikovat s vaším clusterem. Další informace naleznete v tématu Vytvoření prostředí v AWS Cloud9. Musíte zajistit, aby skupina zabezpečení řídicí roviny Amazon EKS obsahovala pravidla, která povolují příchozí provoz na portu 443 z vaší skupiny zabezpečení IDE. Další informace najdete v tématu Zobrazení požadavků skupiny zabezpečení Amazon EKS pro clustery. Při konfiguraci kubectl pro integrované vývojové prostředí AWS Cloud9 nezapomeňte použít přihlašovací údaje AWS, které jsou už namapované na konfiguraci RBAC vašeho clusteru, nebo před odebráním veřejného přístupu koncového bodu přidejte instanční objekt IAM, který bude vaše integrované vývojové prostředí používat ke konfiguraci RBAC. Další informace najdete v tématu Udělení přístupu uživatelům a rolím IAM k rozhraním API Kubernetes a Neoprávněný přístup nebo odepřený přístup (kubectl).

Další informace o možnostech připojení najdete v tématu Přístup k privátnímu pouze serveru api.

Síťový přístup AKS k serveru rozhraní API

Existují dvě možnosti zabezpečení síťového přístupu k rozhraní API Kubernetes v AKS, privátní cluster AKS nebo autorizované rozsahy IP adres.

Privátní cluster AKS

privátního clusteru AKS zajišťuje, aby síťový provoz mezi serverem rozhraní API a uzly agentů zůstal ve virtuální síti. V privátním clusteru AKS má řídicí rovina nebo server rozhraní API interní IP adresy definované v dokumentu RFC1918 – Přidělování adres pro privátní internet. Pomocí privátního clusteru můžete zajistit, aby síťový provoz mezi vaším serverem API a fondy uzlů zůstal pouze v privátní síti.

V privátním clusteru AKS má server ROZHRANÍ API interní IP adresu, která je přístupná pouze prostřednictvím privátního koncového bodu Azure ve stejné virtuální síti. Jakýkoli virtuální počítač ve stejné virtuální síti může soukromě komunikovat s řídicí rovinou prostřednictvím tohoto privátního koncového bodu. Řídicí rovina nebo server rozhraní API se hostují v předplatném spravovaném Azure, zatímco cluster AKS a jeho fondy uzlů jsou v předplatném zákazníka.

Když zřídíte privátní cluster AKS, AKS ve výchozím nastavení vytvoří privátní plně kvalifikovaný název domény s privátní zónou DNS a další veřejný plně kvalifikovaný název domény s odpovídajícím záznamem A ve veřejném DNS Azure. Uzly agenta nadále používají A záznam v privátní zóně DNS k překladu privátní IP adresy privátního koncového bodu pro komunikaci se serverem rozhraní API.

Následující diagram znázorňuje konfiguraci privátního clusteru AKS.

Diagram znázorňující privátní cluster AKS

Stáhněte si soubor aplikace Visio s touto architekturou.

Pokud chcete zřídit privátní cluster AKS, poskytovatel prostředků AKS vytvoří privátní plně kvalifikovaný název domény (FQDN) pro skupinu prostředků uzlu v privátní zóně DNS. Volitelně může AKS také vytvořit veřejný plně kvalifikovaný název domény s odpovídajícím záznamem adresy (A) ve veřejné zóně DNS Azure. Uzly agenta používají A záznam v privátní zóně DNS k překladu IP adresy privátního koncového bodu pro komunikaci se serverem rozhraní API.

Poskytovatel prostředků AKS může vytvořit privátní zónu DNS ve skupině prostředků uzlu, nebo můžete vytvořit privátní zónu DNS a předat její ID prostředku do systému zřizování. Privátní cluster můžete vytvořit při použití Terraformu s Azure, Bicepem, šablonami ARM, Azure CLI, modulem Azure PowerShellu nebo rozhraním Azure REST API k vytvoření clusteru.

Veřejný plně kvalifikovaný název domény pro server rozhraní API můžete povolit během zřizování nebo pomocí příkazu az aks update s parametrem --enable-public-fqdn v existujících clusterech. Pokud povolíte veřejný plně kvalifikovaný název domény, musí být jakýkoli virtuální počítač, který přistupuje k serveru, například agenta v místním hostování Azure DevOps nebo spouštěči v místním prostředí GitHub Actions, ve stejné virtuální síti, která je hostitelem clusteru, nebo v síti připojené prostřednictvím partnerského vztahu virtuální sítě nebo vpn typu site-to-site.

U privátního clusteru AKS zakážete veřejný plně kvalifikovaný název domény serveru rozhraní API. Aby bylo možné komunikovat s rovinou privátního řízení, musí být virtuální počítač ve stejné virtuální síti nebo v partnerské virtuální síti s propojením virtuální sítě s privátní zónou DNS. Záznam A v privátní zóně DNS přeloží plně kvalifikovaný název domény serveru ROZHRANÍ API na IP adresu privátního koncového bodu, která komunikuje s podkladovou řídicí rovinou. Další informace najdete v tématu Vytvoření privátního clusteru Azure Kubernetes Service.

Možnosti nasazení privátního clusteru

Poskytovatel prostředků AKS zveřejňuje následující parametry pro přizpůsobení nasazení privátního clusteru AKS:

  • authorizedIpRanges (řetězec) určuje povolené rozsahy IP adres ve formátu CIDR.
  • disableRunCommand (Logická hodnota) určuje, jestli se má příkaz pro cluster zakázat run nebo ne.
  • enablePrivateCluster (Logická hodnota) určuje, jestli se má cluster vytvořit jako soukromý.
  • enablePrivateClusterPublicFQDN (Logická hodnota) určuje, jestli se má vytvořit jiný veřejný plně kvalifikovaný název domény pro privátní cluster.
  • privateDnsZone (řetězec) určuje privátní zónu DNS ve skupině prostředků uzlu. Pokud nezadáte hodnotu, poskytovatel prostředků vytvoří zónu. Můžete zadat následující hodnoty:
    • System je výchozí hodnota.
    • None ve výchozím nastavení se nastaví na veřejný DNS, takže AKS nevytvoří privátní zónu DNS.
    • <Your own private DNS zone resource ID> používá privátní zónu DNS, kterou vytvoříte ve formátu privatelink.<region>.azmk8s.io nebo <subzone>.privatelink.<region>.azmk8s.io.

Následující tabulka ukazuje možnosti konfigurace DNS pro nasazení privátního clusteru AKS:

možnosti zóny Privátní DNS enablePrivateClusterPublicFQDN: true enablePrivateClusterPublicFQDN: false
Systém Uzly agenta a všechny další virtuální počítače ve virtuální síti clusteru AKS nebo jakékoli virtuální síti připojené k privátní zóně DNS použijte záznam privátní zóny A DNS k překladu privátní IP adresy privátního koncového bodu.

Jakýkoli jiný virtuální počítač používá veřejný plně kvalifikovaný název domény serveru rozhraní API.
Uzly agenta a všechny další virtuální počítače ve virtuální síti clusteru AKS nebo jakékoli virtuální síti připojené k privátní zóně DNS použijte záznam privátní zóny A DNS k překladu privátní IP adresy privátního koncového bodu.

Není k dispozici žádný plně kvalifikovaný název domény veřejného serveru api.
Nic Všechny virtuální počítače, včetně uzlů agenta, používají veřejný plně kvalifikovaný název domény serveru rozhraní API dostupný prostřednictvím A záznamu ve veřejné zóně DNS spravované v Azure. Nesprávná konfigurace. Privátní cluster AKS potřebuje alespoň veřejnou nebo privátní zónu DNS pro překlad názvů serveru API.
VLASTNÍ ID prostředku privátní zóny DNS Uzly agenta a všechny další virtuální počítače ve virtuální síti clusteru AKS nebo jakékoli virtuální síti připojené k privátní zóně DNS použijte záznam privátní zóny A DNS k překladu privátní IP adresy privátního koncového bodu.

Všechny ostatní virtuální počítače používají veřejný plně kvalifikovaný název domény serveru rozhraní API.
Uzly agenta a všechny další virtuální počítače ve virtuální síti clusteru AKS nebo jakékoli virtuální síti připojené k privátní zóně DNS použijte záznam privátní zóny A DNS k překladu privátní IP adresy privátního koncového bodu.

Není k dispozici žádný plně kvalifikovaný název domény veřejného serveru api.

Připojení a správa privátního clusteru

V privátním clusteru AKS koncový bod serveru ROZHRANÍ API nemá žádnou veřejnou IP adresu. Existuje několik možností pro vytvoření síťového připojení k privátnímu clusteru:

  1. Pomocí příkazu az vm create s příznakem --vnet-name vytvořte virtuální počítač ve stejné virtuální síti jako cluster AKS.
  2. Použijte virtuální počítač v samostatné virtuální síti a nastavte partnerské vztahy virtuálních sítí s virtuální sítí clusteru AKS.
  3. Nakonfigurujte Azure ExpressRoute nebo vpn pro připojení k virtuální síti clusteru.
  4. Vytvořte připojení privátního koncového bodu Azure v jiné virtuální síti.
  5. Použijte instanci Cloud Shell nasazenou do podsítě, která je připojená k serveru rozhraní API pro cluster.

Pomocí Azure CLI můžete použít příkaz az aks command invoke k přístupu k privátním clusterům bez nutnosti konfigurace sítě VPN nebo ExpressRoute. Tento příkaz umožňuje vzdáleně volat příkazy, jako jsou kubectl a helm, ve vašem privátním clusteru prostřednictvím rozhraní Azure API, aniž byste se museli připojovat přímo ke clusteru. Pokud chcete použít command invoke, musíte mít nastavená potřebná oprávnění pro akce Microsoft.ContainerService/managedClusters/runcommand/action a Microsoft.ContainerService/managedclusters/commandResults/read.

Na webu Azure Portal můžete pomocí funkce Run command spouštět příkazy v privátním clusteru. Tato funkce ve skutečnosti využívá funkci command invoke ke spouštění příkazů v clusteru. Pod vytvořený funkcí Run command poskytuje nástroje kubectl a helm pro správu clusteru. Kromě toho podporuje Bash s nástroji, jako jsou jq, xargs, grepa awk dostupné.

K připojení k virtuálnímu počítači pro správu jump boxů můžete použít azure Bastion ve stejné virtuální síti nebo v partnerské virtuální síti. Azure Bastion je plně spravovaná platforma jako služba (PaaS), která umožňuje připojení k virtuálnímu počítači pomocí prohlížeče a webu Azure Portal. Azure Bastion poskytuje zabezpečené a bezproblémové připojení virtuálních počítačů RDP (Remote Desktop Protocol) nebo SSH (Secure Shell) přes protokol TLS (Transport Layer Security) přímo z webu Azure Portal. Když se virtuální počítače připojují přes Azure Bastion, nepotřebují veřejnou IP adresu, agenta ani speciální klientský software.

Integrace virtuální sítě serveru API

Cluster Azure Kubernetes Service (AKS) nakonfigurovaný s integrace virtuální sítě API Serveru projektuje koncový bod serveru ROZHRANÍ API přímo do delegované podsítě ve virtuální síti, ve které je nasazená služba AKS. Integrace virtuální sítě API Serveru umožňuje síťovou komunikaci mezi serverem ROZHRANÍ API a uzly clusteru bez nutnosti privátního propojení nebo tunelu. Server rozhraní API je k dispozici za interní VIRTUÁLNÍ IP sadou nástroje pro vyrovnávání zatížení v delegované podsíti, kterou jsou uzly nakonfigurované tak, aby využívaly. Pomocí integrace virtuální sítě serveru API můžete zajistit, aby síťový provoz mezi vaším serverem API a fondy uzlů zůstal pouze v privátní síti.

Řídicí rovina nebo server rozhraní API se nachází v předplatném Azure spravovaném službou AKS. Váš cluster nebo fond uzlů je ve vašem předplatném Azure. Server a virtuální počítače, které tvoří uzly clusteru, spolu můžou komunikovat prostřednictvím VIRTUÁLNÍ IP adresy serveru rozhraní API a IP adres podů, které se promítnou do delegované podsítě.

Integrace virtuální sítě API Serveru je podporována pro veřejné nebo privátní clustery. Po zřízení clusteru můžete přidat nebo odebrat veřejný přístup. Na rozdíl od integrovaných clusterů mimo virtuální síť vždy uzly agenta komunikují přímo s privátní IP adresou interního nástroje pro vyrovnávání zatížení (ILB) serveru API bez použití DNS. Veškerý provoz serveru api na server se uchovává v privátních sítích a pro připojení k uzlu se nevyžaduje žádný tunel. Klienti mimo cluster, kteří potřebují komunikovat se serverem rozhraní API, to můžou dělat normálně, pokud je povolený přístup k veřejné síti. Pokud je přístup k veřejné síti zakázaný, měli byste postupovat podle stejné metodologie nastavení privátního DNS jako standardní privátní clustery. Další informace najdete v tématu Vytvoření clusteru Azure Kubernetes Service s integrací virtuální sítě API Serveru.

Autorizované rozsahy IP adres

Druhou možností zlepšení zabezpečení clusteru a minimalizace útoků na server rozhraní API je použití autorizovaných rozsahů IP adres. Autorizované IP adresy omezují přístup k řídicí rovině veřejného clusteru AKS na známý seznam IP adres a identifikátorůCIDR. Když použijete tuto možnost, server rozhraní API je stále veřejně přístupný, ale přístup je omezený. Další informace najdete v tématu Zabezpečení přístupu k serveru rozhraní API pomocí autorizovaných rozsahů IP adres ve službě Azure Kubernetes Service (AKS).

Následující az aks update příkaz Azure CLI autorizuje rozsahy IP adres:

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

Důležité informace o připojení AKS

Při zvažování připojení AKS je potřeba vzít v úvahu několik důležitých aspektů. Tady je několik klíčových bodů, o nichž je potřeba vědět:

  • Privátní cluster AKS nabízí lepší zabezpečení a izolaci v porovnání s autorizovanými IP adresami. Existující veřejný cluster AKS ale není možné převést na privátní cluster. Místo toho je možné autorizované IP adresy povolit pro jakýkoli existující cluster AKS.
  • Autorizované rozsahy IP adres nelze použít na koncový bod privátního serveru rozhraní API. Vztahují se pouze na veřejný server rozhraní API.
  • Privátní clustery nepodporují agenty hostované v Azure DevOps. Místo toho doporučujeme používat agenty v místním prostředí.
  • Aby služba Azure Container Registry fungovala s privátním clusterem AKS, musí být pro registr kontejneru ve virtuální síti clusteru nastaven privátní propojení. Alternativně je možné vytvořit partnerský vztah mezi virtuální sítí Container Registry a virtuální sítí privátního clusteru.
  • Omezení služby Azure Private Link platí pro privátní clustery.
  • Pokud se privátní koncový bod v podsíti zákazníka privátního clusteru odstraní nebo upraví, cluster přestane fungovat.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autoři:

Další přispěvatelé:

Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.

Další kroky

Následující odkazy obsahují odkazy na ukázky dokumentace a automatizace pro nasazení clusterů AKS se zabezpečeným rozhraním API: