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

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.

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.

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

Die zugrunde liegenden Kubernetes-APIs werden auf dem Kubernetes-API-Server verfügbar gemacht. Diese Komponente ermöglicht die Interaktion für Verwaltungstools, z.B. kubectl oder das Kubernetes-Dashboard. AKS stellt eine Clustersteuerungsebene für Einzelmandanten mit einem dedizierten API-Server bereit. Standardmäßig wird dem API-Server eine öffentliche IP-Adresse zugewiesen, und Sie sollten den Zugriff mithilfe der rollenbasierten Kubernetes-Zugriffssteuerung (Kubernetes RBAC, Role-Based Access Control) 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. Eine Anforderung an den API-Server von einer IP-Adresse, die nicht Teil dieser autorisierten IP-Adressbereiche ist, wird blockiert. Verwenden Sie weiterhin Kubernetes RBAC oder Azure RBAC, um Benutzer und die von ihnen angeforderten Aktionen zu autorisieren.

Weitere Informationen zum API-Server und anderen Clusterkomponenten finden Sie unter Grundlegende Kubernetes-Konzepte für Azure Kubernetes Service (AKS).

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

Erstellen Sie mithilfe von az aks create einen Cluster, und geben Sie den Parameter --api-server-authorized-ip-ranges an, um eine Liste mit autorisierten IP-Adressbereichen bereitzustellen. Dabei handelt es sich in der Regel um IP-Adressbereiche, die von lokalen Netzwerken oder öffentlichen IP-Adressen verwendet werden. 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.

Wichtig

Der Cluster verwendet standardmäßig den Lastenausgleich mit einer Standard-SKU, den Sie zum Konfigurieren des Ausgangsgateways verwenden können. Wenn Sie vom API-Server autorisierte IP-Adressbereiche bei der Clustererstellung aktivieren, wird neben den von Ihnen angegebenen Bereichen standardmäßig auch die öffentliche IP-Adresse für Ihren Cluster zugelassen. Wenn Sie "" oder keinen Wert für --api-server-authorized-ip-ranges angeben, werden vom API-Server autorisierte IP-Adressbereiche deaktiviert. Beachten Sie Folgendes: Geben Sie bei Verwendung von PowerShell --api-server-authorized-ip-ranges="" (mit Gleichheitszeichen) ein, um Analysefehler zu vermeiden.

Im folgenden Beispiel wird in der Ressourcengruppe myResourceGroup ein Cluster namens myAKSCluster mit einem einzelnen Knoten und mit aktivierten vom API-Server autorisierten IP-Adressbereichen erstellt. Dabei werden die IP-Adressbereiche 73.140.245.0/24 zugelassen:

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

Hinweis

Sie sollten diese Bereiche einer Zulassungsliste hinzufügen:

  • Öffentliche IP-Adresse der Firewall
  • 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.

Angeben der ausgehenden IP-Adressen für den Lastenausgleich mit Standard-SKU

Wenn Sie beim Erstellen eines AKS-Clusters die ausgehenden IP-Adressen oder -Präfixe für den Cluster angeben, werden diese ebenfalls zugelassen. Beispiel:

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

Im obigen Beispiel sind alle im Parameter --load-balancer-outbound-ip-prefixes angegebenen IP-Adressen zulässig, ebenso wie die IP-Adressen im Parameter --api-server-authorized-ip-ranges .

Stattdessen können Sie den Parameter --load-balancer-outbound-ip-prefixes angeben, um Präfixe für ausgehende IP-Adressen des Lastenausgleichs zuzulassen.

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. Soll nur die ausgehende öffentliche IP-Adresse des Lastenausgleichs mit Standard-SKU zugelassen werden, verwenden Sie 0.0.0.0/32, wenn Sie den Parameter --api-server-authorized-ip-ranges angeben.

Im folgenden Beispiel wird nur die ausgehende öffentliche IP-Adresse des Lastenausgleichs mit Standard-SKU zugelassen, und auf den API-Server kann nur über die Knoten innerhalb des Clusters zugegriffen werden.

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

Aktualisieren der vom API-Server autorisierten IP-Adressbereiche eines Clusters

Um die autorisierten IP-Bereiche des API-Servers in einem vorhandenen Cluster zu aktualisieren, verwenden Sie den az aks update-Befehl und verwenden die --api-server-authorized-ip-ranges, --load-balancer-outbound-ip-prefixes, --load-balancer-outbound-ips oder --load-balancer-outbound-ip-prefixes-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

Um autorisierte IP-Adressbereiche zu deaktivieren, geben Sie mit az aks update einen leeren Adressbereich an, um die autorisierten IP-Adressbereiche des API-Servers zu deaktivieren. Beispiel:

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

Wichtig

Wenn Sie diesen Befehl mithilfe von PowerShell in Azure Cloud Shell oder von Ihrem lokalen Computer aus ausführen, muss die Zeichenfolge für das Argument --api-server-authorized-ip-rangers in einfache Anführungszeichen gesetzt werden. Andernfalls wird eine Fehlermeldung zurückgegeben, die besagt, dass ein erwartetes Argument fehlt.

Ermitteln vorhandener autorisierter IP-Adressbereiche

Zum Ermitteln autorisierter IP-Adressbereiche verwenden Sie az aks show und geben den Clusternamen und die Ressourcengruppe an. Beispiel:

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

Aktualisieren, Deaktivieren und Ermitteln von autorisierten IP-Adressbereichen über das Azure-Portal

Die obigen Vorgänge zum Hinzufügen, Aktualisieren, Ermitteln und Deaktivieren von autorisierten IP-Adressbereichen können auch über das Azure-Portal ausgeführt werden. Für den Zugriff wechseln Sie auf dem Blatt der Clusterressource unter Einstellungen zu Netzwerk.

Die Azure-Portalseite mit den Netzwerkeinstellungen der Clusterressource in einem Browser. Die Option zum Festlegen eines IP-Adressbereichs sowie die festgelegten IP-Adressbereiche sind hervorgehoben.

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.

Um dem Bereich der genehmigten IP-Adressen eine weitere Adresse hinzuzufügen, verwenden Sie die folgenden Befehle.

# Retrieve your IP address
CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
# Add to AKS approved list
az aks update -g $RG -n $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/32

Hinweis

Im obigen Beispiel werden die vom API-Server autorisierten IP-Adressbereiche an den Cluster angefügt. 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).