Sicherer Zugriff auf den API-Server mit autorisierten IP-Adressbereichen in Azure Kubernetes Service (AKS)

Dieser Artikel veranschaulicht die Verwendung der vom API-Server autorisierten IP-Adressbereiche. Diese werden zur Einschränkung der IP-Adressen und CIDRs verwendet, die Zugriff auf die Steuerungsebene erhalten.

Der Kubernetes-API-Server ist das Herzstück der Kubernetes-Steuerungsebene und ermöglicht es Ihnen, von einem zentralen Ort aus mit Ihren Clustern zu interagieren und sie zu verwalten. Um die Sicherheit Ihrer Cluster zu verbessern und das Risiko von Angriffen zu minimieren, empfiehlt es sich, die IP-Adressbereiche einzuschränken, über die auf den API-Server zugegriffen werden kann. Hierzu können Sie die vom API-Server autorisierten IP-Adressbereiche verwenden.

Voraussetzungen

  • Azure CLI-Version 2.0.76 oder höher muss installiert und konfiguriert sein. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.
  • Informationen dazu, welche IP-Adressen beim Integrieren Ihres AKS-Clusters in Azure DevOps einbezogen werden sollten, finden Sie im Azure DevOps-Artikel Zulässige IP-Adressen und Domänen-URLs.

Einschränkungen

Für die vom API-Server autorisierten IP-Adressbereiche gelten folgende Einschränkungen:

  • Die Vorschauphase der vom API-Server autorisierten IP-Adressbereiche endete im Oktober 2019. Bei Clustern, die nach dem Ende der Vorschauphase erstellt wurden, wird dieses Feature nur im Lastenausgleich der SKU Standard unterstützt. Alle bereits vorhandenen Cluster mit Lastenausgleich der SKU Basic, bei denen die vom API-Server autorisierten IP-Adressbereiche aktiviert sind, funktionieren weiterhin unverändert. Diese Cluster können jedoch nicht zu einem Lastenausgleich der SKU Standard migriert werden. Vorhandene Cluster funktionieren weiterhin, wenn ein Upgrade für die Kubernetes-Version und für die Steuerungsebene durchgeführt wird.
  • Die vom API-Server autorisierten IP-Adressbereiche werden in privaten Clustern nicht unterstützt.
  • Wenn Sie dieses Feature mit Clustern verwenden, die die öffentliche IP-Adresse des Knotens nutzen, müssen die Knotenpools, die die öffentliche IP-Adresse des Knotens nuten, Präfixe für öffentliche IP-Adressen verwenden. Die Präfixe für öffentliche IP-Adressen müssen als autorisierte Bereiche hinzugefügt werden.

Übersicht über vom API-Server autorisierte IP-Adressbereiche

Der Kubernetes-API-Server macht zugrunde liegende Kubernetes-APIs verfügbar und stellt die Interaktion für Verwaltungstools wie kubectl und das Kubernetes-Dashboard bereit. AKS stellt eine Clustersteuerungsebene für Einzelmandanten mit einem dedizierten API-Server bereit. Dem API-Server wird standardmäßig eine öffentliche IP-Adresse zugewiesen. Sie können den Zugriff mithilfe von Kubernetes rollenbasierter Zugriffssteuerung (Kubernetes RBAC) oder Azure RBAC steuern.

Zum Absichern des Zugriffs auf AKS-Steuerungsebene/API-Server, die andernfalls öffentlich zugänglich sind, können Sie autorisierte IP-Adressbereiche aktivieren und verwenden. Diese autorisierten IP-Adressbereiche erlauben nur definierten IP-Adressbereichen die Kommunikation mit dem API-Server. Alle Anforderungen an den API-Server von einer IP-Adresse, die nicht zu diesen autorisierten IP-Bereichen gehört, werden blockiert.

Erstellen eines AKS-Clusters mit aktivierten vom API-Server autorisierten IP-Adressbereichen

Wichtig

Der Cluster verwendet standardmäßig den Lastenausgleich mit einer Standard-SKU, den Sie zum Konfigurieren des Ausgangsgateways verwenden können. Wenn Sie bei der Erstellung des Clusters autorisierte IP-Bereiche für den API-Server aktivieren, wird die öffentliche IP für Ihren Cluster standardmäßig zusätzlich zu den von Ihnen angegebenen Bereichen zugelassen. Wenn Sie „" oder keinen Wert für --api-server-authorized-ip-ranges angeben, werden die vom API-Server autorisierten IP-Bereiche deaktiviert. Beachten Sie, dass Sie, wenn Sie PowerShell verwenden, (mit Gleichheitszeichen) --api-server-authorized-ip-ranges="" verwenden, um Probleme beim Parsen zu vermeiden.

Hinweis

Sie sollten diese Bereiche einer Zulassungsliste hinzufügen:

  • Die ausgehende IP-Adresse des Clusters (Firewall, NAT-Gateway oder andere Adresse, abhängig vom ausgehenden Typ)
  • Alle Bereiche mit Netzwerken, von denen aus Sie den Cluster verwalten.

Die Obergrenze für die Anzahl von IP-Adressbereichen, die Sie angeben können, ist „200“.

Die Weitergabe der Regeln kann bis zu zwei Minuten dauern. Berücksichtigen Sie dies beim Testen der Verbindung.

Beim Erstellen eines Clusters mit aktivierten API-Server-autorisierten IP-Bereichen verwenden Sie den --api-server-authorized-ip-ranges-Parameter, um eine Liste der autorisierten öffentlichen IP-Adressbereiche bereitzustellen. Wenn Sie einen CIDR-Bereich angeben, beginnen Sie mit der ersten IP-Adresse im Bereich. 137.117.106.90/29 ist z.B. ein gültiger Bereich, aber stellen Sie sicher, dass Sie die erste IP-Adresse im Bereich angeben, z.B. 137.117.106.88/29.

  • Erstellen Sie einen AKS-Cluster mit autorisierten API-Server-IP-Bereichen, die mit dem az aks create-Befehl mit dem --api-server-authorized-ip-ranges-Parameter aktiviert sind. Das folgende Beispiel erstellt einen Cluster mit dem Namen myAKSCluster in der Ressourcengruppe mit dem Namen myResourceGroup mit aktivierten autorisierten IP-Bereichen des API-Servers. Dabei werden die IP-Adressbereiche 73.140.245.0/24 zugelassen:

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

Angeben ausgehender IPs für ein Standard-SKU-Lastenausgleichsmodul

Wenn Sie einen Cluster mit aktivierten autorisierten IP-Bereichen des API-Servers erstellen, können Sie auch die ausgehenden IP-Adressen oder Präfixe für den Cluster mit den --load-balancer-outbound-ips oder --load-balancer-outbound-ip-prefixes-Parametern angeben. Alle in den Parametern bereitgestellten IPs sind zusammen mit den IPs im --api-server-authorized-ip-ranges-Parameter zulässig.

  • Erstellen Sie einen AKS-Cluster mit aktivierten API-Server-IP-Bereichen und geben Sie die ausgehenden IP-Adressen für den Standard-SKU-Lastenausgleich mithilfe des --load-balancer-outbound-ips-Parameters an. Das folgende Beispiel erstellt einen Cluster mit dem Namen myAKSCluster in der Ressourcengruppe mit dem Namen myResourceGroup mit aktivierten autorisierten IP-Bereichen des API-Servers und den ausgehenden IP-Adressen <public-ip-id-1> und <public-ip-id-2>:

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

Ausschließliches Zulassen der ausgehenden öffentlichen IP-Adresse des Lastenausgleichs mit Standard-SKU

Wenn Sie vom API-Server autorisierte IP-Adressbereiche bei der Clustererstellung aktivieren, wird neben den von Ihnen angegebenen Bereichen standardmäßig auch die ausgehende öffentliche IP-Adresse des Lastenausgleichs mit Standard-SKU für Ihren Cluster zugelassen. Um nur die ausgehende öffentliche IP des Standard SKU-Lastenausgleichs zuzulassen, verwenden Sie 0.0.0.0/32, wenn Sie den --api-server-authorized-ip-ranges-Parameter angeben.

  • Erstellen Sie einen AKS-Cluster mit aktivierten autorisierten IP-Bereichen des API-Servers und erlauben Sie mit dem --api-server-authorized-ip-ranges-Parameter nur die ausgehende öffentliche IP des Standard SKU-Lastenausgleichs. Das folgende Beispiel erstellt einen Cluster mit dem Namen myAKSCluster in der Ressourcengruppe mit dem Namen myResourceGroup mit aktivierten autorisierten IP-Bereichen des API-Servers und erlaubt nur die ausgehende öffentliche IP des Standard SKU-Lastenausgleichs:

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

Aktualisieren der autorisierten IP-Bereiche eines vorhandenen Clusters auf dem API-Server

  • Aktualisieren Sie den API-Server eines vorhandenen Clusters mit autorisierten IP-Bereichen mithilfe des az aks update-Befehls mit dem --api-server-authorized-ip-ranges-Parameter. Im folgenden Beispiel werden vom API-Server autorisierte IP-Adressbereiche für den Cluster namens myAKSCluster in der Ressourcengruppe myResourceGroup aktualisiert. Der zu autorisierende IP-Adressbereich lautet 73.140.245.0/24:

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

    Sie können auch 0.0.0.0/32 verwenden, wenn Sie den Parameter --api-server-authorized-ip-ranges angeben, um nur die öffentliche IP-Adresse des Lastenausgleichs mit Standard-SKU zuzulassen.

Deaktivieren autorisierter IP-Adressbereiche

  • Deaktivieren Sie autorisierte IP-Bereiche mithilfe des az aks update-Befehls und geben Sie einen leeren Bereich "" für den --api-server-authorized-ip-ranges-Parameter an.

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

Ermitteln vorhandener autorisierter IP-Adressbereiche

  • Suchen Sie vorhandene autorisierte IP-Bereiche mithilfe des az aks show-Befehls, auf den der --query-Parameter apiServerAccessProfile.authorizedIpRanges festgelegt ist.

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

Wie finde ich meine in --api-server-authorized-ip-ranges aufzunehmende IP-Adresse?

Sie müssen Ihre Entwicklungscomputer, Tools oder Automatisierungs-IP-Adressen der AKS-Clusterliste mit genehmigten IP-Adressbereichen hinzufügen, um von dort aus auf den API-Server zugreifen zu können.

Eine andere Möglichkeit besteht darin, in einem separaten Subnetz innerhalb des virtuellen Netzwerks der Firewall eine Jumpbox mit den erforderlichen Tools zu konfigurieren. Dies setzt voraus, dass Ihre Umgebung über eine Firewall mit dem entsprechenden Netzwerk verfügt und dass Sie die Firewall-IP-Adressen zu den autorisierten Bereichen hinzugefügt haben. Wenn das Tunneln aus dem AKS-Subnetz in das Firewallsubnetz erzwungen wurde, kann sich die Jumpbox ebenfalls im Clustersubnetz befinden.

  1. Rufen Sie Ihre IP-Adresse mit dem folgenden Befehl ab:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Fügen Sie Ihre IP-Adresse mithilfe von Azure CLI oder Azure PowerShell zur genehmigten Liste hinzu:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Hinweis

Im obigen Beispiel wird den genehmigten Bereichen eine weitere IP-Adresse hinzugefügt. Beachten Sie, dass sie weiterhin die IP-Adresse aus Aktualisieren der vom API-Server autorisierten IP-Adressbereiche eines Clusters enthält. Wenn Sie Ihre vorhandene IP-Adresse nicht angeben, ersetzt dieser Befehl sie durch die neue, anstatt sie den autorisierten Bereichen hinzuzufügen. Um autorisierte IP-Adressbereiche zu deaktivieren, verwenden Sie az aks update, und geben Sie einen leeren Adressbereich an („“).

Eine weitere Möglichkeit besteht darin, den folgenden Befehl auf Windows-Systemen zu verwenden, um die öffentliche IPv4-Adresse abzurufen. Sie können auch die Schritte unter Suchen Sie Ihre IP-Adresse ausführen.

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

Sie finden diese Adresse auch, indem Sie in einem Internetbrowser nach Wie lautet meine IP-Adresse suchen.

Nächste Schritte

In diesem Artikel haben Sie vom API-Server autorisierte IP-Adressbereiche aktiviert. Diese Vorgehensweise ist ein Aspekt der sicheren Ausführung eines AKS-Clusters. Weitere Informationen finden Sie unter Sicherheitskonzepte für Anwendungen und Cluster in Azure Kubernetes Service (AKS) und Best Practices für Clustersicherheit und Upgrades in Azure Kubernetes Service (AKS).