Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostazione predefinita, tutti i pod in esecuzione in un cluster di Servizio Azure Kubernetes (AKS) possono accedere all'endpoint del Servizio metadati dell'istanza di Azure (IMDS). È ora possibile limitare opzionalmente l'accesso all'endpoint IMDS dai cluster di Servizio Azure Kubernetes (AKS) per migliorare la sicurezza (anteprima).
Importante
Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Informazioni sulla restrizione IMDS per i cluster AKS
Azure IMDS è un'API REST che fornisce informazioni sulle istanze di macchine virtuali attualmente in esecuzione. Queste informazioni includono SKU, archiviazione, configurazioni di rete e gli eventi di manutenzione previsti.
L'API REST IMDS è disponibile in un indirizzo IP non indirizzabile noto (169.254.169.254) accessibile per impostazione predefinita da tutti i pod in esecuzione in un cluster del servizio Azure Kubernetes. Questo accesso predefinito introduce alcuni rischi per la sicurezza per un cluster del servizio Azure Kubernetes:
- Gli utenti malintenzionati potrebbero sfruttare il servizio per ottenere informazioni riservate, ad esempio token e altre informazioni sulla piattaforma, causando perdite di informazioni.
- Le potenziali vulnerabilità di autenticazione vengono quindi esposte, perché le applicazioni potrebbero usare in modo improprio queste credenziali.
È ora possibile scegliere di limitare l'accesso all'endpoint IMDS per i pod di rete non host in esecuzione nel cluster. I pod che non usano la rete host hanno hostNetwork impostato su false nelle proprie specifiche. Quando la restrizione IMDS è abilitata, i pod di rete non host non sono in grado di accedere all'endpoint IMDS o di acquisire i token OAuth 2.0 per l'autorizzazione da parte di un'identità gestita. I pod di rete non host devono basarsi su ID dei carichi di lavoro di Microsoft Entra dopo l'abilitazione della restrizione IMDS.
I pod della rete host hanno hostNetwork impostato su true nelle specifiche. I pod di rete host possono continuare ad accedere all'endpoint IMDS dopo l'abilitazione della restrizione IMDS perché condividono lo stesso spazio dei nomi di rete con i processi host. I processi locali nei nodi possono usare l'endpoint IMDS per recuperare i metadati dell'istanza, in modo che possano accedere all'endpoint dopo l'abilitazione della restrizione IMDS.
Operazioni preliminari
Assicurarsi di avere installato l'interfaccia della riga di comando di Azure versione 2.61.0 o successiva. Per trovare la versione, eseguire
az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.Installare l'estensione di
aks-previewinterfaccia della riga di comando di Azure versione 7.0.0b2 o successiva.Se l'estensione
aks-previewnon è già disponibile, installarla usando ilaz extension addcomando .az extension add --name aks-previewSe l'estensione
aks-previewè già disponibile, aggiornarla per assicurarsi di avere la versione più recente usando ilaz extension updatecomando .az extension update --name aks-preview
Registra il flag di funzionalità
IMDSRestrictionPreviewcon il comando az feature register.az feature register --namespace Microsoft.ContainerService --name IMDSRestrictionPreviewVerificare lo stato della registrazione usando il comando az feature show. Sono necessari alcuni minuti per visualizzare lo stato Registrato:
az feature show --namespace Microsoft.ContainerService --name IMDSRestrictionPreviewQuando lo stato passa a Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register:
az provider register --namespace Microsoft.ContainerServiceAbilita l'emittente OIDC sul tuo cluster AKS. Per creare un nuovo cluster o aggiornare un cluster esistente, vedi Configurare un cluster AKS con emittente OIDC.
Limiti
Alcuni componenti aggiuntivi che devono accedere all'endpoint IMDS non sono supportati con la restrizione IMDS. Se questi componenti aggiuntivi sono installati nel cluster, non è possibile abilitare la restrizione IMDS. Viceversa, se la restrizione IMDS è abilitata, non è possibile installare questi componenti aggiuntivi. I componenti aggiuntivi non supportati includono:
- Controller di ingresso del gateway applicazione
- Monitoraggio di Azure per contenitori (informazioni dettagliate sul contenitore)
- Nodi virtuali
- Criteri di Azure
- Estensioni del cluster: Flux (GitOps), Dapr, app Azure Configuration, Azure Machine Learning, Archiviazione contenitori di Azure, Backup di Azure
- Operatore della toolchain di intelligenza artificiale (anteprima)
- Instradamento delle applicazioni
- Instradamento delle applicazioni HTTP
- Routing delle applicazioni Web
- Analisi dei costi di Azure
Il provider di Azure Key Vault per il driver CSI (Secrets Store Container Storage Interface) supporta ora la modalità di autenticazione dell'identità del carico di lavoro e pertanto può funzionare con la restrizione IMDS abilitata.
Inoltre, i pool di nodi di Windows non sono attualmente supportati con la restrizione IMDS.
Attenzione
L'abilitazione delle restrizioni IMDS per un cluster che usa componenti aggiuntivi non supportati genera un errore.
Considerazioni importanti
Quando la restrizione IMDS è abilitata, AKS gestisce le regole iptables sul nodo. Tenere presente quanto segue per impedire che le regole iptables vengano accidentalmente rimosse o manomesse:
- Le regole iptables possono essere modificate con SSH o node-shell, quindi è consigliabile usare Disable SSH o usare un criterio per disabilitare i pod con privilegi.
- Le regole iptables che limitano l'accesso a IMDS vengono ripristinate quando il nodo viene ricreato o riavviato.
Abilitare la restrizione IMDS in un nuovo cluster
Per abilitare la restrizione IMDS in un nuovo cluster e bloccare tutto il traffico dai pod di rete non host all'endpoint IMDS, eseguire il az aks create comando con il --enable-imds-restriction parametro .
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--enable-imds-restriction
Abilitare la restrizione IMDS in un cluster esistente
Per abilitare la restrizione IMDS in un cluster esistente e bloccare tutto il traffico dai pod di rete non host all'endpoint IMDS, eseguire il az aks update comando con il --enable-imds-restriction parametro .
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--enable-imds-restriction
Dopo aver aggiornato il cluster, è necessario creare nuovamente l'immagine dei nodi nel cluster con az aks upgrade --node-image-only per iniziare a bloccare il traffico verso i pod del cluster.
Verificare il traffico in un cluster con restrizione IMDS abilitata
Per verificare che la restrizione IMDS sia in vigore, verifica il traffico verso entrambi i pod di rete, host e non host.
Verificare il traffico in un pod di rete non host
Crea un pod con
hostNetwork: false. Se non si dispone di un pod di test conhostNetwork: false, è possibile eseguire il comando seguente per crearne uno.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"] EOFConnettiti alla shell nel pod con
kubectl exec.kubectl exec -it non-host-nw -- /bin/bashVerificare il traffico dal pod all'endpoint IMDS.
curl -s -H Metadata:true --connect-timeout 10 --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15"
Attendere circa 10 secondi e osservare che il comando non restituisce nulla, il che significa che la connessione è andata in timeout e che il pod non è in grado di accedere all'endpoint IMDS.
Dopodiché, pulisci il pod con kubectl delete pod non-host-nw.
Verificare il traffico in un pod di rete host
Crea un pod con
hostNetwork: true. Se non si dispone di un pod di test conhostNetwork: true, è possibile eseguire il comando seguente per crearne uno.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"] EOFConnettiti alla shell nel pod con
kubectl exec.kubectl exec -it host-nw -- /bin/bashTestare il traffico dal pod all'endpoint IMDS
curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15"
Osservare che il comando restituisce i risultati, il che significa che il pod può accedere agli endpoint IMDS come previsto.
Dopodiché, pulire il pod con kubectl delete pod host-nw.
Disabilitare la restrizione IMDS per un cluster
Per disabilitare la restrizione IMDS in un cluster esistente e consentire tutto il traffico da qualsiasi pod all'endpoint IMDS, eseguire il az aks update comando con il --disable-imds-restriction parametro .
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--disable-imds-restriction
Dopo aver aggiornato il cluster, è necessario creare nuovamente l'immagine dei nodi nel cluster per iniziare a consentire tutto il traffico verso i pod del cluster.
Vedi anche
Servizio metadati dell'istanza di Azure per le macchine virtuali