Condividi tramite


Proteggere l'accesso al server API tramite intervalli di indirizzi IP autorizzati nel servizio Azure Kubernetes

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

Il server API Kubernetes è il nucleo del piano di controllo Kubernetes ed è il modo centrale per interagire 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.

Operazioni preliminari

  • È 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 di dominio e indirizzi IP consentiti di Azure DevOps.

Limiti

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

  • La funzionalità Intervalli IP autorizzati del server API è stata rimossa dall’anteprima nell'ottobre 2019. Per i cluster creati dopo che la funzionalità è stata rimossa dall'anteprima, questa funzionalità è supportata solo nel servizio di bilanciamento del carico dello SKU Standard. Tutti i cluster esistenti nel servizio di bilanciamento del carico SKU Basic con la funzionalità Intervalli IP autorizzati del server API abilitata continueranno a funzionare così come sono. Tuttavia, non è possibile eseguire la migrazione di questi cluster a un servizio di bilanciamento del carico dello 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 cluster che utilizzano l'IP pubblico del nodo, i pool di nodi che usano l'IP pubblico del nodo devono usare prefissi IP pubblici. I prefissi IP pubblici devono essere aggiunti come intervalli autorizzati.

Panoramica degli intervalli IP autorizzati per il server API

Il server API Kubernetes espone le API Kubernetes sottostanti e fornisce l'interazione per gli strumenti di gestione come kubectl e il dashboard Kubernetes. Il servizio Azure Kubernetes fornisce un piano di controllo del cluster a tenant singolo con un server API dedicato. Al server API viene assegnato un indirizzo IP pubblico per impostazione predefinita. È possibile controllare l'accesso usando il controllo degli accessi in base al ruolo di Kubernetes o il controllo degli accessi in base al ruolo di Azure.

Per proteggere l'accesso al server API o al piano di controllo del servizio Azure Kubernetes 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. Qualunque richiesta inviata al server API da un indirizzo IP che non fa parte di questi intervalli IP autorizzati viene bloccata.

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

Importante

Per impostazione predefinita, il cluster usa il servizio di bilanciamento del carico dello 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'IP pubblico per il cluster è consentito per impostazione predefinita oltre agli intervalli specificati. Se si specifica "" o nessun valore per --api-server-authorized-ip-ranges, gli intervalli IP autorizzati del server API vengono disabilitati. Si noti che se si usa PowerShell, usare --api-server-authorized-ip-ranges="" (con segni di uguale) per evitare eventuali problemi di analisi.

Nota

È consigliabile aggiungere questi intervalli a un elenco di elementi consentiti:

  • Indirizzo IP in uscita del cluster (firewall, gateway NAT o altro indirizzo, a seconda del tipo in uscita).
  • Qualsiasi intervallo che rappresenta le reti da cui si amministra il cluster.

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

La propagazione delle regole può richiedere fino a due minuti. Attendere fino a quel momento durante il test della connessione.

Quando si crea un cluster con gli intervalli IP autorizzati del server API abilitati, usare il parametro --api-server-authorized-ip-ranges per fornire 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.

  • Creare un cluster del servizio Azure Kubernetes con intervalli IP autorizzati del server API abilitati usando il comando az aks create con il parametro --api-server-authorized-ip-ranges. L'esempio seguente crea un cluster denominato myAKSCluster nel gruppo di risorse denominato myResourceGroup con gli 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 --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    

Specificare gli indirizzi IP in uscita per un servizio di bilanciamento del carico dello SKU Standard

Quando si crea un cluster con gli intervalli IP autorizzati del server API abilitati, è anche possibile specificare gli indirizzi IP in uscita o i prefissi per il cluster usando i parametri --load-balancer-outbound-ips o --load-balancer-outbound-ip-prefixes. Sono consentiti tutti gli IP forniti nei parametri insieme agli IP nel parametro --api-server-authorized-ip-ranges.

  • Creare un cluster del servizio Azure Kubernetes con intervalli IP autorizzati del server API abilitati e specificare gli indirizzi IP in uscita per il servizio di bilanciamento del carico dello SKU Standard usando il parametro --load-balancer-outbound-ips. L'esempio seguente crea un cluster denominato myAKSCluster nel gruppo di risorse denominato myResourceGroup con gli intervalli IP autorizzati del server API abilitati e gli indirizzi IP in uscita <public-ip-id-1> e <public-ip-id-2>:

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

Consentire solo l'IP pubblico in uscita del servizio di bilanciamento del carico dello SKU Standard

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

  • Creare un cluster del servizio Azure Kubernetes con intervalli IP autorizzati del server API abilitati e consentire solo l'indirizzo IP pubblico in uscita del servizio di bilanciamento del carico dello SKU Standard usando il parametro --api-server-authorized-ip-ranges. L'esempio seguente crea un cluster denominato myAKSCluster nel gruppo di risorse denominato myResourceGroup con intervalli IP autorizzati del server API abilitati e consente solo l'IP pubblico in uscita del servizio di bilanciamento del carico SKU Standard:

    az aks create --resource-group myResourceGroup --name myAKSCluster --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 per il server API di un cluster esistente

  • Aggiornare gli intervalli IP autorizzati del server API di un cluster esistente usando il comando az aks update con il parametro --api-server-authorized-ip-ranges. L'esempio seguente aggiorna gli intervalli IP autorizzati per il server API sul 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
    
  • Per consentire più intervalli di indirizzi IP, è possibile elencare diversi indirizzi IP separati da virgole.

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

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

Disabilitare gli intervalli IP autorizzati

  • Disabilitare gli intervalli IP autorizzati usando il comando az aks update e specificare un intervallo vuoto "" per il parametro --api-server-authorized-ip-ranges.

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

Trovare intervalli IP autorizzati esistenti

  • Trovare gli intervalli IP autorizzati esistenti usando il comando az aks show con il parametro --query impostato su apiServerAccessProfile.authorizedIpRanges.

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

Indicazioni per trovare l'indirizzo IP da includere in --api-server-authorized-ip-ranges

È necessario aggiungere indirizzi IP di computer per sviluppatori, di strumenti o di automazioni all'elenco di intervalli IP approvati del cluster del servizio Azure Kubernetes per potervi accedere al server API.

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 abbia 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, è corretto anche avere il jumpbox nella subnet del cluster.

  1. Recuperare l'indirizzo IP usando il comando seguente:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Aggiungere l'indirizzo IP all'elenco approvato usando l'interfaccia della riga di comando di Azure o Azure PowerShell:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$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

È possibile trovare questo indirizzo anche cercando qual è il mio indirizzo IP in un browser Internet.

Usare i tag del servizio per gli intervalli IP autorizzati del server API - (anteprima)

I tag di servizio sono un modo pratico per specificare un gruppo di indirizzi IP corrispondenti a un servizio Kubernetes. È possibile usare i tag del servizio per specificare gli indirizzi IP dei servizi Kubernetes e gli indirizzi IP specifici negli intervalli IP autorizzati per il server API separandoli con una virgola.

Limiti

  • Questa funzionalità non è compatibile con l'integrazione rete virtuale del server API.

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:

Installare l'estensione di anteprima dell'interfaccia della riga di comando di Azure

  1. Installare l'estensione di anteprima dell'interfaccia della riga di comando di Azure usando il comando [az extension add][az-extension-add].

    az extension add --name aks-preview
    
  2. Aggiornare l'estensione per assicurarsi di avere la versione più recente usando il comando [az extension update][az-extension-update].

    az extension update --name aks-preview
    

Registrare il flag di funzionalità IP autorizzato tag di servizio

  1. Registrare il flag di funzionalità EnableServiceTagAuthorizedIPPreview usando il comando [az feature register][az-feature-register].

    az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

    Per completare la registrazione sono necessari alcuni minuti.

  2. Verificare la registrazione usando il comando [az feature show][az-feature-show].

    az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

Creare un cluster del servizio Azure Kubernetes con intervalli IP autorizzati con tag di servizio

Creare un cluster con intervalli IP autorizzati con tag di servizio usando il parametro con il --api-server-authorized-ip-ranges tag AzureCloud del servizio per consentire a tutti i servizi di Azure di accedere al server API e specificare un indirizzo IP aggiuntivo.

Nota

Nel parametro è consentito un solo tag di --api-server-authorized-ip-ranges servizio. Non è possibile specificare più tag di servizio.

az aks create --resource-group myResourceGroup \
  --name myAKSCluster \
  --api-server-authorized-ip-ranges AzureCloud,20.20.20.20

Dovrebbe essere possibile curl il server API da una macchina virtuale di Azure o da un servizio di Azure che fa parte del tag del AzureCloud servizio.

Passaggi successivi

In questo articolo sono stati abilitati intervalli IP autorizzati del server API. Questo approccio fa 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.