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 servizio Azure Kubernetes (AKS) possono accedere all'endpoint del servizio metadati dell'istanza di Azure (IMDS). È ora possibile limitare facoltativamente l'accesso all'endpoint IMDS dai cluster servizio Azure Kubernetes (servizio Azure Kubernetes) per migliorare la sicurezza (anteprima).
Importante
Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza 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 del servizio Azure Kubernetes
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 di rete non host sono hostNetwork impostati su false nelle 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 di rete host sono hostNetwork impostati 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 dell'interfaccia della
aks-previewriga 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
Registrare il flag di
IMDSRestrictionPreviewfunzionalità usando 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, vedere Configurare un cluster del servizio Azure Kubernetes con autorità di certificazione 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 toolchain di intelligenza artificiale (anteprima)
- Reindirizzamento domande di lavoro
- Routing dell'applicazione 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, il servizio Azure Kubernetes gestisce le regole iptables nel 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 attiva, testare il traffico verso i pod di rete non host e host.
Verificare il traffico in un pod di rete non host
Creare 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"] EOFConnettersi alla shell nel pod con
kubectl exec.kubectl exec -it non-host-nw -- /bin/bashTestare 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 il timeout della connessione e il pod non è in grado di accedere all'endpoint IMDS.
Successivamente, pulire il pod con kubectl delete pod non-host-nw.
Verificare il traffico in un pod di rete host
Creare 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"] EOFConnettersi 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.
Successivamente, 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