Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Standardmäßig können alle Pods, die in einem Azure Kubernetes Service (AKS)-Cluster ausgeführt werden, auf den Azure Instance Metadata Service (IMDS)-Endpunkt zugreifen. Sie können jetzt optional den Zugriff auf den IMDS-Endpunkt von Ihren Azure Kubernetes Service (AKS)-Clustern einschränken, um die Sicherheit (Vorschau) zu verbessern.
Wichtig
AKS-Previewfunktionen sind im Selbstbedienungsmodus auf Opt-in-Basis verfügbar. Vorschauversionen werden in der jeweils verfügbaren Form bereitgestellt und sind nicht Bestandteil der Service-Level-Agreements und der beschränkten Garantie. AKS-Vorschauversionen werden vom Kundensupport nach bestem Bemühen teilweise unterstützt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Informationen zur IMDS-Einschränkung für AKS-Cluster
Azure IMDS ist eine REST-API, die Informationen zu derzeit ausgeführten Instanzen virtueller Computer bereitstellt. Hierzu gehören die SKU, der Speicher, Netzwerkkonfigurationen und bevorstehende Wartungsereignisse.
Die IMDS-REST-API ist in einer bekannten, nicht routingfähigen IP-Adresse (169.254.169.254) verfügbar, auf die standardmäßig von allen Pods zugegriffen werden kann, die in einem AKS-Cluster ausgeführt werden. Dieser Standardzugriff führt zu bestimmten Sicherheitsrisiken für einen AKS-Cluster:
- Böswillige benutzende Personen können den Dienst ausnutzen, um vertrauliche Informationen wie Token und andere Plattforminformationen zu erhalten, was zu Informationslecks führt.
- Potenzielle Authentifizierungsrisiken werden dann verfügbar gemacht, da Anwendungen diese Anmeldeinformationen missbrauchen könnten.
Sie können jetzt festlegen, den Zugriff auf den IMDS-Endpunkt für Pods zu beschränken, die in Ihrem Cluster ausgeführt werden und nicht das Hostnetzwerk verwenden. Pods ohne Host-Netzwerk haben hostNetwork in ihren Spezifikationen auf false gesetzt. Wenn die IMDS-Einschränkung aktiviert ist, können nicht hostbasierte Netzwerkpods nicht auf den IMDS-Endpunkt zugreifen oder OAuth 2.0-Token für die Autorisierung durch eine verwaltete Identität erwerben. Pods, die nicht das Hostnetzwerk verwenden, sollten Microsoft Entra Workload ID verwenden, sobald die IMDS-Einschränkung aktiviert ist.
Pods mit Hostnetzwerk haben in ihren Spezifikationen hostNetwork auf true gesetzt. Pods im Hostnetzwerk können auch nach Aktivierung der IMDS-Einschränkung weiterhin auf den IMDS-Endpunkt zugreifen, da sie sich denselben Netzwerk-Namespace mit den Hostprozessen teilen. Lokale Prozesse in Knoten können den IMDS-Endpunkt verwenden, um Instanzmetadaten abzurufen, sodass sie nach der Aktivierung der IMDS-Einschränkung auf den Endpunkt zugreifen dürfen.
Bevor Sie beginnen
Vergewissern Sie sich, dass mindestens die Version 2.61.0 der Azure CLI installiert ist. Führen Sie
az --versionaus, um die Version zu finden. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.Installieren Sie die
aks-previewAzure CLI-Erweiterung in Version 7.0.0b2 oder höher.Wenn Sie noch nicht über die Erweiterung
aks-previewverfügen, installieren Sie sie mit dem Befehlaz extension add.az extension add --name aks-previewWenn Sie bereits über die Erweiterung
aks-previewverfügen, aktualisieren Sie sie über den Befehlaz extension update, um sicherzustellen, dass Sie die neueste Version haben.az extension update --name aks-preview
Registrieren Sie das Featureflag
IMDSRestrictionPreviewmithilfe des Befehls az feature register.az feature register --namespace Microsoft.ContainerService --name IMDSRestrictionPreviewÜberprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature show. Es dauert einige Minuten, bis der Status Registriert angezeigt wird:
az feature show --namespace Microsoft.ContainerService --name IMDSRestrictionPreviewWenn der Zustand Registered (Registriert) lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls az provider register:
az provider register --namespace Microsoft.ContainerServiceAktivieren Sie den OIDC-Aussteller auf Ihrem AKS-Cluster. Um einen neuen Cluster zu erstellen oder einen bestehenden Cluster zu aktualisieren, siehe Konfigurieren eines AKS-Clusters mit OIDC-Aussteller.
Begrenzungen
Bestimmte Add-Ons, die auf den IMDS-Endpunkt zugreifen müssen, werden mit IMDS-Einschränkungen nicht unterstützt. Wenn diese Add-Ons in Ihrem Cluster installiert sind, können Sie die IMDS-Einschränkung nicht aktivieren. Wenn die IMDS-Einschränkung aktiviert ist, können Sie umgekehrt diese Add-Ons nicht installieren. Nicht unterstützte Add-Ons umfassen:
- Application Gateway-Eingangscontroller
- Azure Monitor für Container (Einblicke in Container)
- Virtuelle Knoten
- Azure Policy
- Clustererweiterungen: Flux (GitOps), Dapr, Azure App Configuration, Azure Machine Learning, Azure Container Storage, Azure Backup
- KI-Toolchain-Betreiber (Vorschau)
- Weiterleitung von Bewerbungen
- Routing für HTTP-Anwendungen
- Webanwendungs-Routing
- Analyse der Azure-Kosten
Der Azure Key Vault-Anbieter für den CSI-Treiber (Secrets Store Container Storage Interface) unterstützt jetzt den Workload-Identitätsauthentifizierungsmodus und kann daher mit aktivierter IMDS-Einschränkung arbeiten.
Darüber hinaus werden Windows-Knotenpools derzeit nicht mit IMDS-Einschränkungen unterstützt.
Achtung
Das Aktivieren von IMDS-Einschränkungen für einen Cluster, der nicht unterstützte Add-Ons verwendet, führt zu einem Fehler.
Wichtige Hinweise
Wenn die IMDS-Einschränkung aktiviert ist, verwaltet AKS die IPTables-Regeln auf dem Knoten. Beachten Sie die folgenden Punkte, um zu verhindern, dass die IPTables-Regeln versehentlich entfernt oder manipuliert werden:
- Die iptables-Regeln können mit SSH oder der Node-Shell geändert werden. Daher empfehlen wir, SSH zu deaktivieren oder eine Richtlinie zu verwenden, um privilegierte Pods zu deaktivieren.
- Die IPTables-Regeln, die den Zugriff auf IMDS einschränken, werden wiederhergestellt, wenn der Knoten neu abgebildet oder neu gestartet wird.
Aktivieren der IMDS-Einschränkung für einen neuen Cluster
Um die IMDS-Einschränkung für einen neuen Cluster zu aktivieren und den gesamten Datenverkehr von nicht hostbasierten Netzwerkpods an den IMDS-Endpunkt zu blockieren, rufen Sie den Befehl az aks create mit dem Parameter --enable-imds-restriction auf.
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--enable-imds-restriction
Aktivieren der IMDS-Einschränkung für einen vorhandenen Cluster
Um die IMDS-Einschränkung für einen bestehenden Cluster zu aktivieren und den gesamten Datenverkehr von nicht hostbasierten Netzwerkpods an den IMDS-Endpunkt zu blockieren, rufen Sie den Befehl az aks update mit dem Parameter --enable-imds-restriction auf.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--enable-imds-restriction
Nachdem Sie den Cluster aktualisiert haben, müssen Sie die Knoten in Ihrem Cluster neu aufsetzen mit az aks upgrade --node-image-only, um den Datenverkehr zu den Pods des Clusters zu blockieren.
Überprüfen des Datenverkehrs in einem Cluster mit aktivierter IMDS-Einschränkung
Um zu überprüfen, dass die IMDS-Einschränkung wirksam ist, testen Sie den Datenverkehr zu Pods ohne Host-Netzwerk sowie zu Pods mit Host-Netzwerk.
Überprüfen Sie den Datenverkehr auf einem Pod, der nicht das Host-Netzwerk verwendet.
Erstellen Sie einen Pod mit
hostNetwork: false. Wenn Sie nicht über einen Testpod mithostNetwork: falseverfügen, können Sie den folgenden Befehl ausführen, um einen zu erstellen.cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: non-host-nw spec: hostNetwork: false containers: - name: non-host-nw image: mcr.microsoft.com/azurelinux/base/nginx:1 command: ["sleep", "infinity"] EOFStellen Sie mit
kubectl execeine Verbindung zur Shell im Pod her.kubectl exec -it non-host-nw -- /bin/bashTesten Sie den Datenverkehr vom Pod zum IMDS-Endpunkt.
curl -s -H Metadata:true --connect-timeout 10 --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15"
Warten Sie ca. 10 Sekunden, und beachten Sie, dass der Befehl nichts zurückgibt. Dies bedeutet, dass bei der Verbindung eine Zeitüberschreitung aufgetreten ist und der Pod nicht auf den IMDS-Endpunkt zugreifen kann.
Bereinigen Sie danach den Pod mit kubectl delete pod non-host-nw.
Überprüfen Sie den Datenverkehr eines Pods im Host-Netzwerk
Erstellen Sie einen Pod mit
hostNetwork: true. Wenn Sie nicht über einen Testpod mithostNetwork: trueverfügen, können Sie den folgenden Befehl ausführen, um einen zu erstellen.cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: host-nw spec: hostNetwork: true containers: - name: host-nw image: mcr.microsoft.com/azurelinux/base/nginx:1 command: ["sleep", "infinity"] EOFVerbinden Sie sich mit der Shell im Pod mit
kubectl exec.kubectl exec -it host-nw -- /bin/bashTesten Sie den Datenverkehr vom Pod zum IMDS-Endpunkt
curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15"
Beachten Sie, dass der Befehl die Ergebnisse zurückgibt, was bedeutet, dass der Pod erwartungsgemäß auf IMDS-Endpunkte zugreifen kann.
Bereinigen Sie danach den Pod mit kubectl delete pod host-nw.
Deaktivieren der IMDS-Einschränkung für einen Cluster
Um die IMDS-Einschränkung für einen vorhandenen Cluster zu deaktivieren und den gesamten Datenverkehr aller Pods an den IMDS-Endpunkt zuzulassen, rufen Sie den Befehl az aks update mit dem Parameter --disable-imds-restriction auf.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--disable-imds-restriction
Nachdem Sie den Cluster aktualisiert haben, müssen Sie die Knoten in Ihrem Cluster neu aufsetzen, damit der gesamte Datenverkehr zu den Pods des Clusters zugelassen wird.