Condividi tramite


Accedere a un server API del servizio Azure Kubernetes

Azure Bastion
Azure ExpressRoute
Servizio Azure Kubernetes
Collegamento privato di Azure
Gateway VPN di Azure

Questo articolo illustra le opzioni per la connessione al server API del cluster del servizio Azure Kubernetes. In un cluster del servizio Azure Kubernetes standard il server API viene esposto tramite Internet. In un cluster del servizio Azure Kubernetes privato è possibile connettersi a Internet solo da un dispositivo con accesso di rete al cluster privato.

La pianificazione dell'accesso al server API è un'attività giornaliera e il modo in cui si accede al server dipende dallo scenario di distribuzione.

Accesso al server API del servizio Azure Kubernetes

Per gestire un cluster del servizio Azure Kubernetes, interagire con il relativo server API. È essenziale limitare l'accesso del server API solo agli utenti necessari. È possibile fornire un accesso granulare integrando il cluster del servizio Azure Kubernetes con Microsoft Entra ID. Gli amministratori possono gestire l'accesso usando il controllo degli accessi in base al ruolo. Possono anche inserire utenti e identità nei gruppi di Microsoft Entra e assegnare ruoli e autorizzazioni appropriati. L'autenticazione Di Microsoft Entra è abilitata nei cluster del servizio Azure Kubernetes tramite OpenID Connect. Per altre informazioni, vedere le risorse seguenti:

Nota

È possibile migliorare la sicurezza del cluster del servizio Azure Kubernetes consentendo solo intervalli di indirizzi IP autorizzati di accedere al server API.

Protezione DDoS di Azure, insieme alle procedure consigliate per la progettazione delle applicazioni, offre funzionalità di mitigazione avanzate contro gli attacchi DDoS (Distributed Denial of Service). Abilitare protezione DDoS in ogni rete virtuale perimetrale.

Accedere a un cluster del servizio Azure Kubernetes tramite Internet

Quando si crea un cluster non privato che si risolve nel nome di dominio completo (FQDN) del server API, viene assegnato un indirizzo IP pubblico per impostazione predefinita. È possibile connettersi al cluster usando il portale di Azure o una shell, ad esempio l'interfaccia della riga di comando di Azure, PowerShell o il prompt dei comandi.

Nota

È possibile usare la kubectl client della riga di comando di Kubernetes per connettersi a un cluster tramite Internet.

Cloud Shell

azure Cloud Shell è una shell incorporata nel portale di Azure. È possibile gestire e connettersi alle risorse di Azure da Cloud Shell, come è possibile usare PowerShell o l'interfaccia della riga di comando di Azure.

Accedere a un cluster privato del servizio Azure Kubernetes

Esistono diversi modi per connettersi a un cluster privato del servizio Azure Kubernetes. La pianificazione dell'accesso è un'attività giornaliera che si basa sulle esigenze e sulle limitazioni dello scenario. È possibile connettersi al cluster privato usando i componenti e i servizi seguenti:

  • Una jump box distribuita in una subnet come workstation operativa: Questa configurazione può essere di macchine virtuali permanenti autonome in un set di disponibilità o set di scalabilità di macchine virtuali di Azure.

  • Istanze di Azure Container e un client compatibile con OpenSSH : Distribuire un'istanza del contenitore che esegue un server Secure Shell (SSH) e quindi usare il client compatibile con OpenSSH per accedere al contenitore. Questo contenitore funge da jumpbox all'interno della rete per raggiungere il cluster privato.

  • Azure Bastion: Usare Azure Bastion per stabilire un accesso remoto più sicuro basato su browser alle macchine virtuali o ai jump box all'interno della rete virtuale di Azure. Questo accesso consente di connettersi in modo più sicuro a endpoint privati come il server API del servizio Azure Kubernetes.

  • rete privata virtuale (VPN): Creare una connessione VPN sicura che estende la rete locale o remota nella rete virtuale. Questa connessione consente di accedere al cluster privato come si è connessi in locale.

  • azure ExpressRoute: Usare ExpressRoute per creare una connessione privata dedicata tra la rete locale e Azure. Questa connessione consente di garantire un accesso più sicuro e affidabile al cluster privato senza usare la rete Internet pubblica.

  • l'interfaccia della riga di comando di Azure comando az aks invoke: Eseguire comandi direttamente nel cluster del servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure con il comando az aks command invoke. Questo comando interagisce con il cluster senza esporre più endpoint di rete.

  • 'istanza di Cloud Shell distribuita in una subnet connessa al server API per il cluster: Distribuire Cloud Shell in una subnet collegata al server API del cluster. Questo approccio offre un ambiente della riga di comando gestito più sicuro per gestire il cluster privato.

  • Desktop virtuale Azure: Accedere a Desktop virtuale Azure per usare desktop Windows o Linux come jumpbox per gestire in modo più sicuro il cluster privato da quasi ovunque.

Nota

Tutto il traffico verso il server API viene trasmesso tramite Transmission Control Protocol alla porta 443 tramite HTTPS. I gruppi di sicurezza di rete (NSG) o altri firewall di rete devono consentire il traffico dall'origine al nome di dominio completo del server API sulla porta 443 per HTTPS. Le quote di traffico devono essere limitate in modo specifico al nome di dominio completo per il server API del cluster.

Azure Bastion

Azure Bastion è una piattaforma distribuita come servizio che consente connessioni REMOTE Desktop Protocol (RDP) o SSH sicure a una macchina virtuale all'interno della rete virtuale che non richiede un indirizzo IP pubblico nella macchina virtuale. Quando ci si connette a un cluster del servizio Azure Kubernetes privato, usare Azure Bastion per accedere a una jump box nella rete virtuale hub.

In alternativa, è possibile usare SSH, RDP e Servizi Desktop remoto per controllare in remoto i jumpbox. Il cluster del servizio Azure Kubernetes si trova in una rete spoke, che lo separa dalla jump box. Il peering di rete virtuale connette le reti hub-spoke. Il jumpbox può risolvere il nome di dominio completo del server API del servizio Azure Kubernetes usando l'endpoint privato di Azure, una zona DNS privata e un record A DNS. Questa configurazione garantisce che il nome di dominio completo del server API sia risolvibile solo all'interno della rete virtuale. Questa configurazione fornisce una connessione attendibile al cluster del servizio Azure Kubernetes privato.

Nota

Per l'accesso continuo al cluster del servizio Azure Kubernetes privato, la disponibilità e la ridondanza dei jumpbox sono fondamentali. Per garantire questa affidabilità, posizionare i jumpbox nei set di disponibilità e usare set di scalabilità di macchine virtuali con poche istanze di macchina virtuale. Per altre informazioni, vedere le risorse seguenti:

Diagramma dell'architettura che mostra la route del traffico da un utente a un cluster del servizio Azure Kubernetes privato. Il traffico passa attraverso Azure Bastion e un jump box.

Scaricare un file di Visio di questa architettura.

Flusso

  1. Un utente tenta di connettersi a una jump box usando Azure Bastion e un browser HTML5 con la crittografia Transport Layer Security.

  2. L'utente sceglie dal portale se usare RDP o SSH per connettersi alla jump box.

  3. L'utente accede al jump box tramite Azure Bastion. Il tentativo di connessione al cluster privato del servizio Azure Kubernetes viene eseguito da questa jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata del servizio Azure Kubernetes per risolvere il nome di dominio completo del cluster privato.

  4. La rete virtuale hub e la rete virtuale spoke comunicano tra loro usando il peering di rete virtuale.

  5. Per raggiungere il cluster del servizio Azure Kubernetes privato, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata isolata al cluster del servizio Azure Kubernetes privato.

  6. Il traffico raggiunge il server API del cluster del servizio Azure Kubernetes privato. L'utente può quindi gestire pod, nodi e applicazioni.

Nota

Il nome di dominio completo del cluster privato può essere risolto dall'esterno della rete virtuale se non si disabilitare il nome di dominio completo pubblico in un cluster esistente.

Risolvere i problemi di connessione

Se non è possibile connettersi al cluster privato:

  • Controllare il peering di rete virtuale. Questo meccanismo fornisce connettività da rete a rete tra due reti virtuali. Per consentire il flusso del traffico tra queste due reti, è necessario stabilire il peering di rete virtuale tra di essi. Quando si stabilisce un peering di rete virtuale, viene inserita una route nella tabella di route di sistema della rete virtuale. Tale route fornisce un percorso per raggiungere lo spazio degli indirizzi di destinazione. Per altre informazioni sulla risoluzione dei problemi relativi ai peering di rete virtuale, vedere Creare, modificare o eliminare un peering di rete virtuale.

    Nota

    Non è necessario un peering di rete virtuale se il jump box si trova nella stessa rete virtuale dell'endpoint privato e del cluster privato del servizio Azure Kubernetes.

  • Controllare il collegamento alla rete virtuale alla zona DNS privata. I collegamenti di rete virtuale consentono alle macchine virtuali che si trovano all'interno di reti virtuali di connettersi a una zona DNS privata e risolvere i record DNS all'interno della zona. Se non è possibile connettersi al cluster del servizio Azure Kubernetes privato o non è possibile risolvere il nome di dominio completo del cluster privato, verificare se la rete virtuale ha un collegamento di rete virtuale alla zona DNS privata. Il nome della zona DNS privata deve avere il formato privatelink.<region>.azmk8s.io.

    Per altre informazioni su come risolvere i problemi relativi ai collegamenti di rete virtuale, vedere le risorse seguenti:

    Nota

    Quando si crea un cluster del servizio Azure Kubernetes privato, viene creata una zona DNS privata con un collegamento di rete virtuale alla rete virtuale che ospita il cluster del servizio Azure Kubernetes privato.

Migliorare la sicurezza

Per proteggere i carichi di lavoro del servizio Azure Kubernetes e i jumpbox, usare l'accesso JIT (Just-In-Time) e una workstation paw (Privileged Access Workstation). L'accesso JIT fa parte di Microsoft Defender for Cloud. Può contribuire a ridurre al minimo la potenziale superficie di attacco e le vulnerabilità bloccando il traffico in ingresso verso la jump box e consentendo l'accesso solo per un periodo di tempo specificato quando necessario. Dopo la scadenza, l'accesso viene revocato automaticamente. Per altre informazioni, vedere accesso just-in-time alle macchine.

Le workstation PAW sono dispositivi con protezione avanzata che forniscono sicurezza elevata per gli operatori bloccando vettori di attacco comuni come posta elettronica e esplorazione Web. Per altre informazioni, vedere Dispositivi protetti come parte della storia di accesso con privilegi.

Rete Privata Virtuale (VPN)

Una connessione VPN offre connettività ibrida dall'ambiente locale ad Azure. Questa connettività consente l'accesso a un cluster del servizio Azure Kubernetes privato. Il server API del cluster privato non è raggiungibile all'esterno delle reti virtuali. Con una VPN è possibile connettersi alla rete virtuale in Azure tramite un tunnel crittografato, accedere alla jump box e quindi connettersi al server API del cluster privato.

Diagramma dell'architettura che mostra il flusso del traffico da un utente a un cluster del servizio Azure Kubernetes privato. La route include un gateway VPN, un tunnel di sicurezza del protocollo Internet e una jump box.

Scaricare un file di Visio di questa architettura.

Flusso

  1. Un utente avvia il traffico RDP o SSH verso la jump box da una workstation locale.

  2. Il traffico jump box lascia i router perimetrali del cliente e l'appliance VPN. Il traffico usa un tunnel di sicurezza protocollo Internet crittografato per attraversare Internet.

  3. Il traffico jump box raggiunge il gateway di rete virtuale in Azure, che è sia il punto di ingresso che quello in uscita dell'infrastruttura di rete virtuale di Azure.

  4. Dopo che il traffico si sposta oltre il gateway di rete virtuale, raggiunge la jump box. Il tentativo di connessione al cluster privato del servizio Azure Kubernetes viene eseguito dal jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata del servizio Azure Kubernetes per risolvere il nome di dominio completo del cluster privato.

  5. La rete virtuale hub e la rete virtuale spoke comunicano tra loro usando un peering di rete virtuale.

  6. Per raggiungere il cluster del servizio Azure Kubernetes privato, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata isolata al cluster del servizio Azure Kubernetes privato.

  7. Il traffico raggiunge il server API del cluster del servizio Azure Kubernetes privato. L'utente può quindi gestire pod, nodi e applicazioni.

ExpressRoute

ExpressRoute offre connettività al cluster privato del servizio Azure Kubernetes da un ambiente locale. ExpressRoute usa border gateway protocol per scambiare route tra la rete locale e Azure. Questa connessione crea un percorso sicuro tra le risorse dell'infrastruttura distribuita come servizio e le workstation locali. ExpressRoute offre una connessione dedicata isolata con larghezza di banda e latenza coerenti, che lo rende ideale per gli ambienti aziendali.

Diagramma dell'architettura che mostra la route del traffico da un utente a un cluster del servizio Azure Kubernetes privato. La route include ExpressRoute e un jump box.

Scaricare un file di Visio di questa architettura.

Flusso

  1. Un utente avvia il traffico RDP o SSH verso la jump box da una workstation locale.

  2. Il traffico jump box lascia i router perimetrali del cliente e viaggia su una connessione fiber alla posizione in cui risiede il circuito ExpressRoute. Il traffico raggiunge i dispositivi Microsoft Enterprise Edge (MSEE) lì. Quindi entra nell'infrastruttura di Azure.

  3. Il traffico jumpbox raggiunge il gateway ExpressRoute, che è sia il punto di ingresso che quello in uscita dell'infrastruttura di rete virtuale di Azure.

  4. Il traffico raggiunge la jump box. Il tentativo di connessione al cluster privato del servizio Azure Kubernetes viene eseguito dal jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata del servizio Azure Kubernetes per risolvere il nome di dominio completo del cluster privato.

  5. La rete virtuale hub e la rete virtuale spoke comunicano tra loro usando un peering di rete virtuale.

  6. Per raggiungere il cluster del servizio Azure Kubernetes privato, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata isolata al cluster del servizio Azure Kubernetes privato.

  7. Il traffico raggiunge il server API del cluster del servizio Azure Kubernetes privato. L'utente può quindi gestire pod, nodi e applicazioni.

Nota

ExpressRoute richiede un provider di connettività non Microsoft per fornire una connessione di peering ai router MSEE. traffico ExpressRoute non è crittografato.

Eseguire il comando del servizio Azure Kubernetes invoke

Con un cluster privato del servizio Azure Kubernetes è possibile connettersi da una macchina virtuale che ha accesso al server API. Usare il comando aks command invoke dell'interfaccia della riga di comando di Azure per eseguire comandi come kubectl o helm in remoto tramite l'API di Azure. Questo approccio crea un pod temporaneo nel cluster, che dura solo durante il comando. Il comando aks command invoke funge da metodo di connessione alternativo se manca una rete virtuale VPN, ExpressRoute o con peering. Assicurarsi che il cluster e il pool di nodi dispongano di risorse sufficienti per creare il pod temporaneo.

Per altre informazioni, vedere Usare command invoke per accedere a un cluster del servizio Azure Kubernetes privato.

Connettere Cloud Shell a una subnet

Quando si distribuisce Cloud Shell in una rete virtuale che si controlla, è possibile interagire con le risorse all'interno di tale rete. La distribuzione di Cloud Shell in una subnet gestita consente la connettività al server API di un cluster privato del servizio Azure Kubernetes. Questa distribuzione consente di connettersi al cluster privato. Per altre informazioni, vedere Distribuire Cloud Shell in una rete virtuale di Azure.

Usare SSH e Visual Studio Code per il test

SSH gestisce e accede in modo sicuro ai file in un host remoto usando coppie di chiavi pubbliche-private. Dal computer locale è possibile usare SSH con l'estensione Remote - SSH di Visual Studio Code per connettersi a una jump box nella rete virtuale. Il tunnel SSH crittografato termina all'indirizzo IP pubblico della jump box, semplificando la modifica dei file manifesto di Kubernetes.

Per informazioni su come connettersi alla jump box tramite SSH, vedere Sviluppo remoto tramite SSH.

Se non è possibile connettersi alla macchina virtuale tramite SSH per gestire il cluster privato:

  • Controllare la regola del gruppo di sicurezza di rete in ingresso per la subnet della macchina virtuale. La regola del gruppo di sicurezza di rete predefinita blocca tutto il traffico in ingresso dall'esterno di Azure, quindi creare una nuova regola che consenta il traffico SSH dall'indirizzo IP pubblico del computer locale.

  • Controllare il percorso del certificato e verificare la corretta posizione dei certificati. Assicurarsi che la chiave privata si trovi nella directory C:\Users\User\.ssh\id_rsa nel computer locale e che la chiave pubblica si trovi nel file ~/.ssh/id_rsa.pub nella macchina virtuale in Azure.

Nota

È consigliabile:

  • Evitare di usare un indirizzo IP pubblico per connettersi alle risorse negli ambienti di produzione. Usare solo indirizzi IP pubblici in ambienti di sviluppo o test. In questi scenari creare una regola del gruppo di sicurezza di rete in ingresso per consentire il traffico dall'indirizzo IP pubblico del computer locale. Per altre informazioni sulle regole del gruppo di sicurezza di rete, vedere Creare, modificare o eliminare un gruppo di sicurezza di rete.

  • Evitare di usare SSH per connettersi direttamente ai nodi o ai contenitori del servizio Azure Kubernetes. Usare invece una soluzione di gestione esterna dedicata. Questa procedura è particolarmente importante quando si usa il comando aks command invoke, che crea un pod temporaneo all'interno del cluster per l'accesso tramite proxy.

Conclusione

  • È possibile accedere al server API del cluster del servizio Azure Kubernetes tramite Internet se il nome di dominio completo pubblico è abilitato.

  • Cloud Shell è una shell della riga di comando predefinita nel portale di Azure che è possibile usare per connettersi a un cluster del servizio Azure Kubernetes.

  • Per un accesso più sicuro, usare Azure Bastion e un endpoint privato.

  • VPN ed ExpressRoute forniscono connettività ibrida al cluster del servizio Azure Kubernetes privato.

  • Se non è disponibile alcuna soluzione di connettività esterna, è possibile usare aks command invoke in remoto.

  • È possibile distribuire Cloud Shell direttamente in una rete virtuale gestita per accedere al cluster privato.

  • È possibile usare Visual Studio Code con SSH in una jump box per crittografare la connessione e semplificare la modifica del file manifesto. Tuttavia, questo approccio espone un indirizzo IP pubblico nell'ambiente.

Contributori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autori principali:

Altri collaboratori:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi