I den här artikeln jämförs nätverkslägen för Azure Kubernetes Service (AKS) och Amazon Elastic Kubernetes Service (Amazon EKS). Artikeln beskriver hur du förbättrar anslutningssäkerheten till den hanterade API-servern i ett AKS-kluster och de olika alternativen för att begränsa åtkomsten till det offentliga nätverket.
Kommentar
Den här artikeln är en del av en serie artiklar som hjälper proffs som är bekanta med Amazon EKS att förstå Azure Kubernetes Service (AKS).
Amazon EKS-nätverkslägen
Med Amazon Virtual Private Cloud (Amazon VPC) kan du starta AWS-resurser (Amazon Web Services) till ett virtuellt nätverk som består av offentliga och privata undernät eller intervall med IP-adresser i VPC. Ett offentligt undernät är värd för resurser som måste vara anslutna till Internet och ett privat undernät är värd för resurser som inte är anslutna till det offentliga Internet. Amazon EKS kan etablera hanterade nodgrupper i både offentliga och privata undernät.
Med åtkomstkontroll för slutpunkter kan du konfigurera om API Server-slutpunkten kan nås från det offentliga Internet eller via VPC. EKS tillhandahåller flera sätt att styra åtkomsten till klusterslutpunkten. Du kan aktivera den offentliga standardslutpunkten, en privat slutpunkt eller båda slutpunkterna samtidigt. När du aktiverar den offentliga slutpunkten kan du lägga till CIDR-begränsningar (Classless Inter-Domain Routing) för att begränsa klientens IP-adresser som kan ansluta till den offentliga slutpunkten.
Hur Amazon EKS-noder ansluter till det hanterade Kubernetes-kontrollplanet bestäms av vilken slutpunktsinställning som har konfigurerats för klustret. Du kan ändra slutpunktsinställningarna när som helst via Amazon EKS-konsolen eller API:et. Mer information finns i Åtkomstkontroll för Amazon EKS-klusterslutpunkt.
Endast offentlig slutpunkt
Att exponera kontrollplanet via en offentlig slutpunkt är standardläget för nya Amazon EKS-kluster. När endast den offentliga slutpunkten för klustret är aktiverad lämnar Kubernetes API-begäranden som kommer från Amazon VPC, till exempel arbetsnoden för att styra flygplanskommunikationen, VPC:n men lämnar inte Amazons nätverk. För att noder ska kunna ansluta till kontrollplanet måste de använda en offentlig IP-adress och en väg till en internetgateway, eller en väg till en NAT-gateway (Network Address Translation) där de kan använda NAT-gatewayens offentliga IP-adress.
Offentliga och privata slutpunkter
När både de offentliga och privata slutpunkterna är aktiverade kommunicerar Kubernetes API-begäranden inifrån VPC till kontrollplanet via Amazon EKS-hanterade Elastic Network Interfaces (ENIs) i VPC.When both the public and private endpoints are enabled, Kubernetes API requests from the VPC communicate to the control plane via the Amazon EKS-managed Elastic Network Interfaces (ENIs) in the VPC. Kluster-API-servern är tillgänglig från Internet.
Endast privat slutpunkt
När endast den privata slutpunkten är aktiverad måste all trafik till kluster-API-servern, till exempel kubectl
eller helm
kommandon, komma inifrån klustrets VPC eller ett anslutet nätverk. Offentlig åtkomst till API-servern från Internet är inaktiverad. Du kan implementera det här åtkomstläget med hjälp av AWS Virtual Private Network (AWS VPN) eller AWS DirectConnect till VPC. Om du vill begränsa åtkomsten till slutpunkten utan AWS VPN eller DirectConnect kan du lägga till CIDR-begränsningar till den offentliga slutpunkten för att begränsa anslutningar utan att konfigurera fler nätverk.
Mer information om anslutningsalternativ finns i Accessing a Private Only API Server (Åtkomst till en API-server med endast privat).
AKS-nätverksåtkomst till API-servern
Det finns två alternativ för att skydda nätverksåtkomsten till Kubernetes API i AKS, ett privat AKS-kluster eller auktoriserade IP-intervall.
Privat AKS-kluster
Ett privat AKS-kluster säkerställer att nätverkstrafik mellan API-servern och nodpoolerna finns kvar i det virtuella nätverket. I ett privat AKS-kluster har kontrollplanet eller API-servern en intern IP-adress som endast är tillgänglig via en privat Azure-slutpunkt i samma virtuella nätverk. Alla virtuella datorer (VM) i samma virtuella nätverk kan kommunicera privat med kontrollplanet via den privata slutpunkten. Kontrollplanet eller API-servern finns i den Azure-hanterade prenumerationen, medan AKS-klustret och dess nodpooler finns i kundens prenumeration.
Följande diagram illustrerar en konfiguration av privata kluster.
Ladda ned en Visio-fil med den här arkitekturen.
För att etablera ett privat AKS-kluster skapar AKS-resursprovidern ett privat fullständigt domännamn (FQDN) för nodresursgruppen i en privat DNS-zon. Om du vill kan AKS också skapa ett offentligt FQDN med en motsvarande adresspost (A
) i Azures offentliga DNS-zon. Agentnoderna använder A
posten i den privata DNS-zonen för att matcha IP-adressen för den privata slutpunkten för kommunikation till API-servern.
AKS-resursprovidern kan skapa den privata DNS-zonen i nodresursgruppen, eller så kan du skapa den privata DNS-zonen och skicka dess resurs-ID till etableringssystemet. Du kan skapa ett privat kluster när du använder Terraform med Azure, Bicep, ARM-mallar, Azure CLI, Azure PowerShell-modulen eller Azure REST API för att skapa klustret.
Du kan aktivera ett offentligt FQDN för API-servern under etableringen eller genom att använda kommandot az aks update med parametern --enable-public-fqdn
på befintliga kluster. Om du aktiverar det offentliga fullständiga domännamnet måste alla virtuella datorer som har åtkomst till servern, till exempel en lokalt installerad Azure DevOps-agent eller en självhanterad GitHub Actions-löpare, finnas i samma virtuella nätverk som är värd för klustret eller i ett nätverk som är anslutet via virtuell nätverkspeering eller plats-till-plats-VPN.
För ett privat AKS-kluster inaktiverar du det offentliga fullständiga domännamnet för API-servern. För att kunna kommunicera med det privata kontrollplanet måste en virtuell dator finnas i samma virtuella nätverk eller i ett peer-kopplat virtuellt nätverk med en virtuell nätverkslänk till den privata DNS-zonen. Posten A
i den privata DNS-zonen löser det fullständiga domännamnet för API-servern till den privata slutpunkts-IP-adressen som kommunicerar med det underliggande kontrollplanet. Mer information finns i Skapa ett privat Azure Kubernetes Service-kluster.
Distributionsalternativ för privata kluster
AKS-resursprovidern exponerar följande parametrar för att anpassa distributionen av privata AKS-kluster:
authorizedIpRanges
(sträng) anger tillåtna IP-intervall i CIDR-format.disableRunCommand
(Booleskt) anger om kommandot för klustret ska inaktiverasrun
eller inte.enablePrivateCluster
(Booleskt) anger om klustret ska skapas som privat eller inte.enablePrivateClusterPublicFQDN
(Booleskt) anger om du vill skapa ett annat offentligt FQDN för det privata klustret eller inte.privateDnsZone
(sträng) anger en privat DNS-zon i nodresursgruppen. Om du inte anger något värde skapar resursprovidern zonen. Du kan ange följande värden:System
är standardvärdet.None
standardvärdet är offentlig DNS, så AKS skapar inte en privat DNS-zon.<Your own private DNS zone resource ID>
använder en privat DNS-zon som du skapar i formatetprivatelink.<region>.azmk8s.io
eller<subzone>.privatelink.<region>.azmk8s.io.
I följande tabell visas DNS-konfigurationsalternativen för distribution av ett privat AKS-kluster:
Privat DNS zonalternativ | enablePrivateClusterPublicFQDN: true |
enablePrivateClusterPublicFQDN: false |
---|---|---|
System | Agentnoder och andra virtuella datorer i aks-klustrets virtuella nätverk eller något virtuellt nätverk som är anslutet till den privata DNS-zonen använder den privata DNS-zonposten A för att matcha den privata IP-adressen för den privata slutpunkten.Alla andra virtuella datorer använder det offentliga fullständiga domännamnet för API-servern. |
Agentnoder och andra virtuella datorer i aks-klustrets virtuella nätverk eller något virtuellt nätverk som är anslutet till den privata DNS-zonen använder den privata DNS-zonposten A för att matcha den privata IP-adressen för den privata slutpunkten.Det finns inget offentligt API-server-FQDN tillgängligt. |
None | Alla virtuella datorer, inklusive agentnoder, använder det offentliga fullständiga domännamnet för API-servern som är tillgängligt via en A post i en Azure-hanterad offentlig DNS-zon. |
Fel konfiguration. Det privata AKS-klustret behöver minst en offentlig eller en privat DNS-zon för api-serverns namnmatchning. |
Ditt eget resurs-ID för din privata DNS-zon | Agentnoder och andra virtuella datorer i aks-klustrets virtuella nätverk eller något virtuellt nätverk som är anslutet till den privata DNS-zonen använder den privata DNS-zonposten A för att matcha den privata IP-adressen för den privata slutpunkten.Andra virtuella datorer använder det offentliga fullständiga domännamnet för API-servern. |
Agentnoder och andra virtuella datorer i aks-klustrets virtuella nätverk eller något virtuellt nätverk som är anslutet till den privata DNS-zonen använder den privata DNS-zonposten A för att matcha den privata IP-adressen för den privata slutpunkten.Det finns inget offentligt API-server-FQDN tillgängligt. |
Anslutning och hantering av privata kluster
Det finns flera alternativ för att upprätta nätverksanslutning till det privata klustret.
Skapa virtuella datorer i samma virtuella nätverk som AKS-klustret.
Använd virtuella datorer i ett separat virtuellt nätverk och konfigurera peering för virtuella nätverk med det virtuella AKS-klustrets virtuella nätverk.
Använd en Azure ExpressRoute- eller VPN-anslutning .
Använd Azure CLI-kommandot az aks command invoke för att köra
kubectl
ochhelm
kommandon i det privata klustret utan att ansluta direkt till klustret.Använd en privat Slutpunktsanslutning i Azure.
Du kan hantera ett privat AKS-kluster med hjälp av kubectl-kommandoradsverktyget från en virtuell hanteringsdator i samma virtuella nätverk eller ett peer-kopplat virtuellt nätverk.
Du kan använda Azure Bastion i samma virtuella nätverk eller ett peer-kopplat virtuellt nätverk för att ansluta till en virtuell dator för jumpbox-hantering. Azure Bastion är en fullständigt hanterad plattform som en tjänst (PaaS) som gör att du kan ansluta till en virtuell dator med hjälp av webbläsaren och Azure Portal. Azure Bastion tillhandahåller säker och sömlös ANSLUTNING för fjärrskrivbordsprotokoll (RDP) eller SSH(Secure Shell) via TLS (Transport Layer Security) direkt från Azure Portal. När virtuella datorer ansluter via Azure Bastion behöver de ingen offentlig IP-adress, agent eller särskild klientprogramvara.
Du kan också använda kommandot az aks invoke för att köra kubectl
eller helm
kommandon i ditt privata AKS-kluster utan att behöva ansluta till en virtuell jumpbox-dator.
Auktoriserade IP-intervall
Det andra alternativet för att förbättra klustersäkerheten och minimera attacker mot API-servern är att använda auktoriserade IP-intervall. Auktoriserade IP-adresser begränsar åtkomsten till kontrollplanet för ett offentligt AKS-kluster till en känd lista över IP-adresser och CIDR:er. När du använder det här alternativet är API-servern fortfarande offentligt exponerad, men åtkomsten är begränsad. Mer information finns i Säker åtkomst till API-servern med hjälp av auktoriserade IP-adressintervall i Azure Kubernetes Service (AKS).
Följande az aks update
Azure CLI-kommando auktoriserar IP-intervall:
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges 73.140.245.0/24
Överväganden för AKS-anslutning
Ett privat AKS-kluster ger högre säkerhet och isolering än auktoriserade IP-adresser. Du kan dock inte konvertera ett befintligt offentligt AKS-kluster till ett privat kluster. Du kan aktivera auktoriserade IP-adresser för alla befintliga AKS-kluster.
Du kan inte tillämpa auktoriserade IP-intervall på en privat API-serverslutpunkt. Auktoriserade IP-adresser gäller endast för den offentliga API-servern.
Privata kluster stöder inte Azure DevOps-värdbaserade agenter. Överväg att använda lokalt installerade agenter.
Om du vill att Azure Container Registry ska fungera med ett privat AKS-kluster konfigurerar du en privat länk för containerregistret i det virtuella klustrets nätverk. Eller konfigurera peering mellan det virtuella containerregistrets virtuella nätverk och det privata klustrets virtuella nätverk.
Azure Private Link-tjänstens begränsningar gäller för privata kluster.
Om du tar bort eller ändrar den privata slutpunkten i kundens undernät för ett privat kluster slutar klustret att fungera.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudsakliga författare:
- Paolo Salvatori | Huvudtjänsttekniker
- Martin Gjoshevski | Senior Service Engineer
- Laura Nicolas | Senior programvarutekniker
Övriga medarbetare:
- Chad Kittel | Huvudprogramtekniker
- Ed Price | Senior Content Program Manager
- Theano Petersen | Teknisk författare
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- AKS för Amazon EKS-proffs
- Kubernetes-identitets- och åtkomsthantering
- Övervakning och loggning av Kubernetes
- Lagringsalternativ för ett Kubernetes-kluster
- Kostnadshantering för Kubernetes
- Hantering av Kubernetes-noder och nodpooler
- Klusterstyrning
Relaterade resurser
Följande referenser innehåller länkar till dokumentations- och automatiseringsexempel för att distribuera AKS-kluster med ett skyddat API:
- Skapa ett privat AKS-kluster med en offentlig DNS-zon
- Skapa ett privat Azure Kubernetes Service-kluster med Terraform och Azure DevOps
- Skapa ett offentligt eller privat Azure Kubernetes Service-kluster med Azure NAT Gateway och Azure Application Gateway
- Använda privata slutpunkter med ett privat AKS-kluster
- Introduktion till Azure Private Link
- Introduktion till säker nätverksinfrastruktur med Azure-nätverkssäkerhet