Proteggere l'accesso al server API usando gli intervalli di indirizzi IP autorizzati in servizio Azure Kubernetes (servizio Azure Kubernetes)

Il server API Kubernetes è il core del piano di controllo Kubernetes ed è il modo centrale per interagire con e gestire i cluster. Per migliorare la sicurezza dei cluster e ridurre al minimo il rischio di attacchi, è consigliabile limitare gli intervalli di indirizzi IP che possono accedere al server API. A tale scopo, è possibile usare la funzionalità intervalli IP autorizzati del server API .

Questo articolo illustra come usare le funzionalità degli intervalli di indirizzi IP autorizzati del server API per limitare gli indirizzi IP e i CIDR che possono accedere al piano di controllo.

Prima di iniziare

  • È necessario che sia installata e configurata l'interfaccia della riga di comando di Azure 2.0.76 o versioni successive. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
  • Per informazioni sugli indirizzi IP da includere durante l'integrazione del cluster del servizio Azure Kubernetes con Azure DevOps, vedere l'articolo URL IP consentiti e indirizzi IP consentiti di Azure DevOps.

Limitazioni

La funzionalità intervalli IP autorizzati del server API presenta le limitazioni seguenti:

  • La funzionalità intervalli IP autorizzati del server API è stata spostata in anteprima nell'ottobre 2019. Per i cluster creati dopo che la funzionalità è stata spostata in anteprima, questa funzionalità è supportata solo nel servizio di bilanciamento del carico SKU Standard . Qualsiasi cluster esistente nel servizio di bilanciamento del carico SKU di base con la funzionalità intervalli IP autorizzati del server API abilitata continuerà a funzionare così come è. Tuttavia, questi cluster non possono essere migrati a un servizio di bilanciamento del carico SKU Standard . I cluster esistenti continueranno a funzionare se la versione di Kubernetes e il piano di controllo vengono aggiornati.
  • La funzionalità intervalli IP autorizzati del server API non è supportata nei cluster privati.
  • Quando si usa questa funzionalità con i cluster che usano l'indirizzo IP pubblico del nodo, i pool di nodi che usano Node Public IP devono usare prefissi IP pubblici. I prefissi IP pubblici devono essere aggiunti come intervalli autorizzati.

Panoramica degli intervalli IP autorizzati del server API

Il server API Kubernetes è il modo in cui vengono esposte le API Kubernetes sottostanti. Questo componente fornisce l'interazione per gli strumenti di gestione, ad esempio kubectl o il dashboard di Kubernetes. Il servizio Azure Kubernetes fornisce un piano di controllo cluster a tenant singolo, con un server API dedicato. Per impostazione predefinita, il server API viene assegnato a un indirizzo IP pubblico e è necessario controllare l'accesso usando il controllo degli accessi in base al ruolo (Kubernetes RBAC) o il controllo degli accessi in base al ruolo di Azure.

Per proteggere l'accesso al piano di controllo del servizio Azure Kubernetes o al server API accessibile pubblicamente, è possibile abilitare e usare intervalli IP autorizzati. Questi intervalli IP autorizzati consentono solo agli intervalli di indirizzi IP definiti di comunicare con il server API. Una richiesta effettuata al server API da un indirizzo IP che non fa parte di questi intervalli IP autorizzati viene bloccata. Continuare a usare il controllo degli accessi in base al ruolo di Kubernetes o il controllo degli accessi in base al ruolo di Azure per autorizzare gli utenti e le azioni richieste.

Per altre informazioni sul server API e altri componenti del cluster, vedere Concetti di base di Kubernetes per il servizio Azure Kubernetes.

Creare un cluster del servizio Azure Kubernetes con intervalli IP autorizzati del server API abilitati

Creare un cluster usando e az aks create specificare il --api-server-authorized-ip-ranges parametro per specificare un elenco di intervalli di indirizzi IP pubblici autorizzati. Quando si specifica un intervallo CIDR, iniziare con il primo indirizzo IP nell'intervallo. Ad esempio, 137.117.106.90/29 è un intervallo valido, ma assicurarsi di specificare il primo indirizzo IP nell'intervallo, ad esempio 137.117.106.88/29.

Importante

Per impostazione predefinita, il cluster usa il servizio di bilanciamento del carico SKU Standard che è possibile usare per configurare il gateway in uscita. Quando si abilitano gli intervalli IP autorizzati del server API durante la creazione del cluster, l'INDIRIZZO IP pubblico per il cluster è consentito anche per impostazione predefinita oltre agli intervalli specificati. Se si specifica "" o nessun valore per , gli intervalli IP autorizzati del --api-server-authorized-ip-rangesserver API verranno disabilitati. Si noti che se si usa PowerShell, usare --api-server-authorized-ip-ranges="" (con segno uguale) per evitare eventuali problemi di analisi.

Nell'esempio seguente viene creato un cluster a nodo singolo denominato myAKSCluster nel gruppo di risorse denominato myResourceGroup con intervalli IP autorizzati del server API abilitati. Gli intervalli di indirizzi IP consentiti sono 73.140.245.0/24:

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

Nota

È necessario aggiungere questi intervalli a un elenco consentito:

  • Indirizzo IP in uscita del cluster (firewall, gateway NAT o altro indirizzo, a seconda del tipo in uscita).
  • Qualsiasi intervallo che rappresenta le reti che verranno amministrate dal cluster

Il limite superiore per il numero di intervalli IP che è possibile specificare è 200.

Le regole possono richiedere fino a due minuti per propagare. Consentire fino a quel momento durante il test della connessione.

Specificare gli INDIRIZZI IP in uscita per il servizio di bilanciamento del carico SKU Standard

Durante la creazione di un cluster del servizio Azure Kubernetes, se si specificano anche gli indirizzi IP in uscita o i prefissi per il cluster, sono consentiti. Ad esempio:

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

Nell'esempio precedente tutti gli INDIRIZZI IP forniti nel parametro --load-balancer-outbound-ip-prefixes sono consentiti insieme agli INDIRIZZI IP nel --api-server-authorized-ip-ranges parametro.

È invece possibile specificare il --load-balancer-outbound-ip-prefixes parametro per consentire prefissi IP del servizio di bilanciamento del carico in uscita.

Consenti solo l'INDIRIZZO IP pubblico in uscita del servizio di bilanciamento del carico SKU Standard

Quando si abilitano gli intervalli IP autorizzati del server API durante la creazione del cluster, l'INDIRIZZO IP pubblico in uscita per il servizio di bilanciamento del carico SKU Standard per il cluster è consentito anche per impostazione predefinita oltre agli intervalli specificati. Per consentire solo l'INDIRIZZO IP pubblico in uscita del servizio di bilanciamento del carico SKU Standard, usare 0.0.0.0/32 quando si specifica il --api-server-authorized-ip-ranges parametro.

Nell'esempio seguente è consentito solo l'INDIRIZZO IP pubblico in uscita del servizio di bilanciamento del carico SKU Standard e è possibile accedere solo al server API dai nodi all'interno del cluster.

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

Aggiornare gli intervalli IP autorizzati del server API di un cluster

Per aggiornare gli intervalli IP autorizzati del server API in un cluster esistente, usare il comando e usare az aks update i --api-server-authorized-ip-rangesparametri , --load-balancer-outbound-ip-prefixes, --load-balancer-outbound-ipso --load-balancer-outbound-ip-prefixes .

Nell'esempio seguente vengono aggiornati gli intervalli IP autorizzati del server API nel cluster denominato myAKSCluster nel gruppo di risorse denominato myResourceGroup. L'intervallo di indirizzi IP da autorizzare è 73.140.245.0/24:

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

È anche possibile usare 0.0.0.0/32 quando si specifica il parametro per consentire solo l'INDIRIZZO --api-server-authorized-ip-ranges IP pubblico del servizio di bilanciamento del carico SKU Standard.

Disabilitare gli intervalli IP autorizzati

Per disabilitare gli intervalli IP autorizzati, usare az aks update e specificare un intervallo vuoto per disabilitare gli intervalli IP autorizzati del server API. Ad esempio:

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

Importante

Quando si esegue questo comando usando PowerShell in Azure Cloud Shell o dal computer locale, il valore della stringa di virgolette doppie per l'argomento --api-authorized-ip-rangers deve essere racchiuso tra virgolette singole. In caso contrario, viene restituito un messaggio di errore che indica che manca un argomento previsto.

Trovare gli intervalli IP autorizzati esistenti

Per trovare intervalli IP autorizzati, usare az aks show e specificare il nome e il gruppo di risorse del cluster. Ad esempio:

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

Aggiornare, disabilitare e trovare intervalli IP autorizzati usando portale di Azure

Le operazioni precedenti di aggiunta, aggiornamento, ricerca e disabilitazione degli intervalli IP autorizzati possono essere eseguite anche nella portale di Azure. Per accedere, passare a Rete in Impostazioni nel pannello del menu della risorsa del cluster.

In un browser vengono visualizzate le impostazioni di rete della risorsa del cluster portale di Azure pagina. Le opzioni 'set specificato intervallo IP' e 'Intervalli IP specificati' sono evidenziati.

Come trovare l'indirizzo IP da includere in --api-server-authorized-ip-ranges?

È necessario aggiungere computer di sviluppo, strumenti o indirizzi IP di automazione all'elenco cluster del servizio Azure Kubernetes approvato per accedere al server API da qui.

Un'altra opzione consiste nel configurare un jumpbox con gli strumenti necessari all'interno di una subnet separata nella rete virtuale del firewall. Ciò presuppone che l'ambiente disponga di un firewall con la rispettiva rete e che siano stati aggiunti gli INDIRIZZI IP del firewall agli intervalli autorizzati. Analogamente, se è stato forzato il tunneling dalla subnet del servizio Azure Kubernetes alla subnet del firewall, la jumpbox nella subnet del cluster è anche ok.

Per aggiungere un altro indirizzo IP agli intervalli approvati, usare i comandi seguenti.

# 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/24,73.140.245.0/24

Nota

Nell'esempio precedente viene aggiunto un altro indirizzo IP agli intervalli approvati. Si noti che include ancora l'indirizzo IP da Aggiornare gli intervalli IP autorizzati del server API di un cluster. Se non si include l'indirizzo IP esistente, questo comando lo sostituirà con quello nuovo anziché aggiungerlo agli intervalli autorizzati. Per disabilitare gli intervalli IP autorizzati, usare az aks update e specificare un intervallo vuoto "".

Un'altra opzione consiste nell'usare il comando seguente nei sistemi Windows per ottenere l'indirizzo IPv4 pubblico oppure seguire la procedura descritta in Trovare l'indirizzo IP.

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

È anche possibile trovare questo indirizzo cercando su ciò che è il mio indirizzo IP in un browser Internet.

Passaggi successivi

In questo articolo è stato abilitato l'intervallo IP autorizzato del server API. Questo approccio è una parte di come è possibile eseguire in modo sicuro un cluster del servizio Azure Kubernetes. Per altre informazioni, vedere Concetti di sicurezza per applicazioni e cluster nel servizio Azure Kubernetes e Procedure consigliate per la sicurezza e gli aggiornamenti del cluster nel servizio Azure Kubernetes.