Bewerken

Delen via


Netwerktoegang tot Kubernetes beveiligen

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

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

Notitie

Dit artikel maakt deel uit van een reeks artikelen die professionals helpen die bekend zijn met Amazon EKS om inzicht te krijgen in Azure Kubernetes Service (AKS).

Amazon EKS-netwerkmodi

Met Amazon Virtual Private Cloud (Amazon VPC) kunt u Amazon Web Services-resources (AWS) starten in een virtueel netwerk dat bestaat uit openbare en privésubnetten, of bereiken van IP-adressen in de VPC. Een openbaar subnet host resources die moeten zijn verbonden met internet en een privésubnet host 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 vanaf 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 blootstellen 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 de Kubernetes-API-aanvragen die afkomstig zijn van binnen de Amazon VPC, zoals werkknooppunt voor communicatie met het besturingsvlak, de VPC, maar verlaten ze het netwerk van Amazon niet. Voor knooppunten om verbinding te maken met het besturingsvlak, moeten 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 de openbare als de privé-eindpunten zijn ingeschakeld, communiceren Kubernetes-API-aanvragen vanuit de VPC met het besturingsvlak via de door Amazon EKS beheerde Elastic Network Interfaces (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 opdrachten helm , afkomstig zijn van de VPC van het cluster of een verbonden netwerk. Openbare toegang tot de API-server vanaf internet is uitgeschakeld. U kunt deze toegangsmodus implementeren met behulp van AWS Virtual Private Network (AWS VPN) of AWS DirectConnect naar 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 Toegang tot een alleen-privé-API-server 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 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 FQDN (Private Fully Qualified Domain Name) voor de knooppuntresourcegroep in een privé-DNS-zone. AKS kan 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 in de knooppuntresourcegroep maken 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 tijdens het inrichten een openbare FQDN inschakelen voor de API-server 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 virtuele machine die toegang heeft tot de server, zoals een zelf-hostende Agent van Azure DevOps of een zelf-hostende GitHub Actions-runner, zich in hetzelfde virtuele netwerk bevinden dat als host fungeert voor het cluster of in een netwerk dat is verbonden via peering van virtuele netwerken 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 virtuele machine zich in hetzelfde virtuele netwerk bevinden of in een gekoppeld virtueel netwerk met een koppeling naar de privé-DNS-zone. Met A de record in de privé-DNS-zone wordt de FQDN van de API-server omgezet in het IP-adres van het privé-eindpunt dat communiceert met het onderliggende besturingsvlak. Zie Een privé Azure Kubernetes Service-cluster maken voor meer informatie.

Opties voor privéclusterimplementatie

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 run opdracht voor het cluster al dan niet moet worden uitgeschakeld.
  • enablePrivateCluster (Booleaanse waarde) geeft aan of het cluster al dan niet als privé moet worden gemaakt.
  • enablePrivateClusterPublicFQDN (Booleaanse waarde) geeft aan of er al dan niet 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 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 AKS-clusternetwerk of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de privé-DNS-zonerecord A om het privé-IP-adres van het privé-eindpunt om te zetten.

Elke andere VM maakt gebruik van de openbare FQDN van de API-server.
Agentknooppunten en andere VM's in het virtuele AKS-clusternetwerk of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de privé-DNS-zonerecord 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 AKS-clusternetwerk of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de privé-DNS-zonerecord 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 AKS-clusternetwerk of een virtueel netwerk dat is verbonden met de privé-DNS-zone, gebruiken de privé-DNS-zonerecord 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 netwerkconnectiviteit met het privécluster.

  • Virtuele machines maken in hetzelfde virtuele netwerk als het AKS-cluster.

  • Gebruik VM's in een afzonderlijk virtueel netwerk en stel peering van virtuele netwerken in met het virtuele netwerk van het AKS-cluster.

  • Gebruik een Azure ExpressRoute- of VPN-verbinding .

  • Gebruik de Azure CLI-opdracht az aks command invoke om uit te voeren kubectl en helm opdrachten op het privécluster zonder rechtstreeks verbinding te maken met het cluster.

  • Gebruik een Azure-privé-eindpuntverbinding .

U kunt een privé-AKS-cluster beheren met behulp van het opdrachtregelprogramma kubectl van 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 platform als een service (PaaS) waarmee u verbinding kunt maken met een virtuele machine met behulp van uw browser en Azure Portal. Azure Bastion biedt veilige en naadloze RDP-connectiviteit (Remote Desktop Protocol) of SSH-VM-connectiviteit (Secure Shell) via Transport Layer Security (TLS) rechtstreeks vanuit Azure Portal. Wanneer VM's verbinding maken via Azure Bastion, hebben ze geen openbaar IP-adres, agent of speciale clientsoftware nodig.

U kunt az aks-opdracht ook gebruiken om uit te voeren kubectl of helm opdrachten op uw privé-AKS-cluster zonder verbinding te hoeven 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 CIDR'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 behulp van 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 AKS-privécluster biedt een hogere beveiliging en isolatie dan geautoriseerde IP-adressen. U kunt echter geen bestaand openbaar AKS-cluster 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 om zelf-hostende agents te gebruiken.

  • Als u wilt dat Azure Container Registry kan werken met een privé-AKS-cluster, stelt u een privékoppeling in voor het containerregister in het virtuele clusternetwerk. Of stel peering in tussen het virtuele Container Registry-netwerk 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. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

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: