Netwerktoegang tot Kubernetes beveiligen

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

In dit artikel worden de netwerkmodi voor Azure Kubernetes Service (AKS) en Amazon Elastic Kubernetes Service (Amazon EKS) vergeleken. In het artikel wordt beschreven hoe u de verbindingsbeveiliging met de beheerde API-server van een AKS-cluster en de verschillende opties voor het beperken van openbare netwerktoegang kunt verbeteren.

Notitie

Dit artikel maakt deel uit van een reeks artikelen waarmee professionals die bekend zijn met Amazon EKS , inzicht krijgen in AKS.

Amazon EKS-netwerkmodi

Met Amazon Virtual Private Cloud (Amazon VPC) kunt u AWS-resources (Amazon Web Services) starten in een virtueel netwerk dat bestaat uit openbare en persoonlijke subnetten, of bereiken van IP-adressen in de VPC. Een openbaar subnet host resources die moeten zijn verbonden met internet en een privésubnet fungeert als host voor resources die niet zijn verbonden met het openbare internet. Amazon EKS kan beheerde knooppuntgroepen inrichten in zowel openbare als privésubnetten.

Met toegangsbeheer voor eindpunten kunt u configureren of het API Server-eindpunt bereikbaar is via het openbare internet of via de VPC. EKS biedt verschillende manieren om de toegang tot het clustereindpunt te beheren. U kunt het standaard openbare eindpunt, een privé-eindpunt of beide eindpunten tegelijk inschakelen. Wanneer u het openbare eindpunt inschakelt, kunt u CIDR-beperkingen (Classless Inter-Domain Routing) toevoegen om de CLIENT-IP-adressen te beperken die verbinding kunnen maken met het openbare eindpunt.

Hoe Amazon EKS-knooppunten verbinding maken met het beheerde Kubernetes-besturingsvlak, wordt bepaald door welke eindpuntinstelling voor het cluster is geconfigureerd. U kunt de eindpuntinstellingen op elk gewenst moment wijzigen via de Amazon EKS-console of de API. Zie Toegangsbeheer voor Amazon EKS-clustereindpunten voor meer informatie.

Alleen openbaar eindpunt

Het beschikbaar maken van het besturingsvlak via een openbaar eindpunt is de standaardmodus voor nieuwe Amazon EKS-clusters. Wanneer alleen het openbare eindpunt voor het cluster is ingeschakeld, verlaten Kubernetes API-aanvragen die afkomstig zijn van de Amazon-VPC, zoals het werkknooppunt voor het beheren van de communicatie op het vlak, de VPC, maar verlaten ze het amazonenetwerk niet. Knooppunten kunnen alleen verbinding maken met het besturingsvlak als ze een openbaar IP-adres en een route naar een internetgateway gebruiken, of een route naar een NAT-gateway (Network Address Translation), waar ze het openbare IP-adres van de NAT-gateway kunnen gebruiken.

Openbare en privé-eindpunten

Wanneer zowel het openbare als het privé-eindpunt zijn ingeschakeld, communiceren Kubernetes API-aanvragen vanuit de VPC met het besturingsvlak via de door Amazon EKS beheerde elastische netwerkinterfaces (ENIs) in de VPC. De cluster-API-server is toegankelijk via internet.

Alleen privé-eindpunt

Wanneer alleen het privé-eindpunt is ingeschakeld, moet al het verkeer naar de cluster-API-server, zoals kubectl of helm opdrachten, afkomstig zijn van de VPC van het cluster of een verbonden netwerk. Openbare toegang tot de API-server via internet is uitgeschakeld. U kunt deze toegangsmodus implementeren met behulp van AWS Virtual Private Network (AWS VPN) of AWS DirectConnect met de VPC. Als u de toegang tot het eindpunt wilt beperken zonder AWS VPN of DirectConnect, kunt u CIDR-beperkingen toevoegen aan het openbare eindpunt om verbindingen te beperken zonder meer netwerken in te stellen.

Zie Accessing a Private Only API Server (Toegang tot een api-server met alleen privétoegang) voor meer informatie over connectiviteitsopties.

AKS-netwerktoegang tot de API-server

Er zijn twee opties voor het beveiligen van netwerktoegang tot de Kubernetes-API in AKS, een privé-AKS-cluster of geautoriseerde IP-bereiken.

Privé-AKS-cluster

Een privécluster van AKS zorgt ervoor dat het netwerkverkeer tussen de API-server en de knooppuntgroepen binnen het virtuele netwerk blijft. In een privé-AKS-cluster heeft het besturingsvlak of de API-server een intern IP-adres dat alleen toegankelijk is via een privé-eindpunt van Azure dat zich in hetzelfde virtuele netwerk bevindt. Elke virtuele machine (VM) in hetzelfde virtuele netwerk kan privé communiceren met het besturingsvlak via het privé-eindpunt. Het besturingsvlak of de API-server wordt gehost in het door Azure beheerde abonnement, terwijl het AKS-cluster en de bijbehorende knooppuntgroepen zich in het abonnement van de klant bevinden.

In het volgende diagram ziet u een configuratie van een privécluster.

Diagram met een privé-AKS-cluster.

Een Visio-bestand van deze architectuur downloaden.

Als u een privé-AKS-cluster wilt inrichten, maakt de AKS-resourceprovider een privé FQDN (Fully Qualified Domain Name) voor de knooppuntresourcegroep in een privé-DNS-zone. Optioneel kan AKS ook een openbare FQDN maken met een bijbehorende adresrecord (A) in de openbare DNS-zone van Azure. De agentknooppunten gebruiken de A record in de privé-DNS-zone om het IP-adres van het privé-eindpunt om te zetten voor communicatie met de API-server.

De AKS-resourceprovider kan de privé-DNS-zone maken in de knooppuntresourcegroep of u kunt de privé-DNS-zone maken en de resource-id doorgeven aan het inrichtingssysteem. U kunt een privécluster maken wanneer u Terraform gebruikt met Azure, Bicep, ARM-sjablonen, Azure CLI, Azure PowerShell-module of Azure REST API om het cluster te maken.

U kunt een openbare FQDN inschakelen voor de API-server tijdens het inrichten of met behulp van de opdracht az aks update met de --enable-public-fqdn parameter op bestaande clusters. Als u de openbare FQDN inschakelt, moet elke VM die toegang heeft tot de server, zoals een zelf-hostende Agent van Azure DevOps of een GitHub Actions zelf-hostende runner, zich in hetzelfde virtuele netwerk bevinden dat als host fungeert voor het cluster of in een netwerk dat is verbonden via peering van het virtuele netwerk of site-naar-site-VPN.

Voor een privé-AKS-cluster schakelt u de openbare FQDN van de API-server uit. Als u wilt communiceren met het privébesturingsvlak, moet een VM zich in hetzelfde virtuele netwerk bevinden of in een gekoppeld virtueel netwerk met een virtuele netwerkkoppeling naar de privé-DNS-zone. De A record in de privé-DNS-zone zet de FQDN van de API-server om naar het IP-adres van het privé-eindpunt dat communiceert met het onderliggende besturingsvlak. Zie Een privé Azure Kubernetes Service-cluster maken voor meer informatie.

Implementatieopties voor privéclusters

De AKS-resourceprovider maakt de volgende parameters beschikbaar om de implementatie van een privé-AKS-cluster aan te passen:

  • authorizedIpRanges (tekenreeks) geeft toegestane IP-bereiken op in CIDR-indeling.
  • disableRunCommand (booleaanse waarde) geeft aan of de opdracht voor het run cluster moet worden uitgeschakeld.
  • enablePrivateCluster (booleaanse waarde) geeft aan of het cluster als privé moet worden gemaakt.
  • enablePrivateClusterPublicFQDN (booleaanse waarde) geeft aan of een andere, openbare FQDN voor het privécluster moet worden gemaakt.
  • privateDnsZone (tekenreeks) geeft een privé-DNS-zone op in de knooppuntresourcegroep. Als u geen waarde opgeeft, maakt de resourceprovider de zone. U kunt de volgende waarden opgeven:
    • System is de standaardwaarde.
    • None is standaard ingesteld op openbare DNS, zodat AKS geen privé-DNS-zone maakt.
    • <Your own private DNS zone resource ID> maakt gebruik van een privé-DNS-zone die u maakt in de indeling privatelink.<region>.azmk8s.io of <subzone>.privatelink.<region>.azmk8s.io.

In de volgende tabel ziet u de DNS-configuratieopties voor het implementeren van een privé-AKS-cluster:

opties voor Privé-DNS zone enablePrivateClusterPublicFQDN: true enablePrivateClusterPublicFQDN: false
Systeem Agentknooppunten en andere VM's in het virtuele netwerk van het AKS-cluster of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de record van de privé-DNS-zone A om het privé-IP-adres van het privé-eindpunt om te zetten.

Elke andere VM gebruikt de openbare FQDN van de API-server.
Agentknooppunten en andere VM's in het virtuele netwerk van het AKS-cluster of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de record van de privé-DNS-zone A om het privé-IP-adres van het privé-eindpunt om te zetten.

Er is geen openbare API-server-FQDN beschikbaar.
Geen Alle VM's, inclusief agentknooppunten, gebruiken de openbare FQDN van de API-server die beschikbaar is via een A record in een door Azure beheerde openbare DNS-zone. Verkeerde configuratie. Het privé-AKS-cluster heeft ten minste een openbare of een privé-DNS-zone nodig voor de naamomzetting van de API-server.
<Uw eigen privé-DNS-zoneresource-id> Agentknooppunten en andere VM's in het virtuele netwerk van het AKS-cluster of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de record van de privé-DNS-zone A om het privé-IP-adres van het privé-eindpunt om te zetten.

Alle andere VM's gebruiken de openbare FQDN van de API-server.
Agentknooppunten en andere VM's in het virtuele netwerk van het AKS-cluster of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de record van de privé-DNS-zone A om het privé-IP-adres van het privé-eindpunt om te zetten.

Er is geen openbare API-server-FQDN beschikbaar.

Connectiviteit en beheer van privéclusters

Er zijn verschillende opties voor het tot stand brengen van netwerkverbinding met het privécluster.

U kunt een privé-AKS-cluster beheren met behulp van het opdrachtregelprogramma kubectl vanaf een beheer-VM in hetzelfde virtuele netwerk of een gekoppeld virtueel netwerk.

U kunt Azure Bastion in hetzelfde virtuele netwerk of een gekoppeld virtueel netwerk gebruiken om verbinding te maken met een jumpbox-beheer-VM. Azure Bastion is een volledig beheerd PaaS (Platform as a Service) waarmee u verbinding kunt maken met een VM met behulp van uw browser en de Azure Portal. Azure Bastion biedt beveiligde en naadloze RDP- (Remote Desktop Protocol) of SSH-VM-connectiviteit (Secure Shell) via Tls (Transport Layer Security) rechtstreeks vanuit de Azure Portal. Wanneer VM's verbinding maken via Azure Bastion, hebben ze geen openbaar IP-adres, agent of speciale clientsoftware nodig.

U kunt ook az aks command invoke gebruiken om of helm opdrachten uit te voeren kubectl op uw privé-AKS-cluster zonder dat u verbinding hoeft te maken met een jumpbox-VM.

Geautoriseerde IP-bereiken

De tweede optie voor het verbeteren van de clusterbeveiliging en het minimaliseren van aanvallen op de API-server is het gebruik van geautoriseerde IP-bereiken. Geautoriseerde IP-adressen beperken de toegang tot het besturingsvlak van een openbaar AKS-cluster tot een bekende lijst met IP-adressen en CDR's. Wanneer u deze optie gebruikt, wordt de API-server nog steeds openbaar weergegeven, maar is de toegang beperkt. Zie Beveiligde toegang tot de API-server met geautoriseerde IP-adresbereiken in Azure Kubernetes Service (AKS) voor meer informatie.

Met de volgende az aks update Azure CLI-opdracht worden IP-bereiken geautoriseerd:

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

Overwegingen voor AKS-connectiviteit

  • Een privécluster van AKS biedt een hogere beveiliging en isolatie dan geautoriseerde IP-adressen. U kunt een bestaand openbaar AKS-cluster echter niet converteren naar een privécluster. U kunt geautoriseerde IP-adressen inschakelen voor elk bestaand AKS-cluster.

  • U kunt geen geautoriseerde IP-bereiken toepassen op een privé-API-servereindpunt. Geautoriseerde IP-adressen zijn alleen van toepassing op de openbare API-server.

  • Privéclusters bieden geen ondersteuning voor door Azure DevOps gehoste agents. Overweeg het gebruik van zelf-hostende agents.

  • Als u Azure Container Registry wilt laten werken met een privé-AKS-cluster, stelt u een privékoppeling in voor het containerregister in het virtuele clusternetwerk. U kunt ook peering instellen tussen het virtuele netwerk van Container Registry en het virtuele netwerk van het privécluster.

  • Azure Private Link servicebeperkingen zijn van toepassing op privéclusters.

  • Als u het privé-eindpunt in het klantsubnet van een privécluster verwijdert of wijzigt, werkt het cluster niet meer.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. Het is oorspronkelijk geschreven door de volgende inzenders.

Hoofdauteurs:

Andere inzenders:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen

De volgende verwijzingen bevatten koppelingen naar documentatie en automatiseringsvoorbeelden voor het implementeren van AKS-clusters met een beveiligde API: