Controllo accessi all'endpoint del cluster Amazon EKS - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Controllo accessi all'endpoint del cluster Amazon EKS

In questa sezione viene descritto come abilitare l'accesso privato per l'endpoint del server API Kubernetesdel cluster Amazon EKS e limitare, o disabilitare completamente, l'accesso pubblico da Internet.

Quando si crea un nuovo cluster, Amazon EKS crea un endpoint per il server API Kubernetes gestito utilizzato per comunicare con il cluster (usando strumenti di gestione Kubernetes, ad esempio kubectl). Per impostazione predefinita, questo endpoint del server API è pubblico su Internet e l'accesso al server API è protetto utilizzando una combinazione di AWS Identity and Access Management (IAM) e Role Kubernetes Based Access Control (RBAC) nativo.

Puoi abilitare l'accesso privato al server API Kubernetes in modo che tutte le comunicazioni tra i nodi e il server API rimangano all'interno del VPC. È possibile limitare gli indirizzi IP che possono accedere al server API da Internet o disabilitare completamente l'accesso a Internet al server API.

Nota

Poiché questo endpoint è destinato al server Kubernetes API e non a un AWS PrivateLink endpoint tradizionale per la comunicazione con un' AWS API, non viene visualizzato come endpoint nella console Amazon VPC.

Quando si abilita l'accesso privato all'endpoint per il cluster, Amazon EKS crea una zona ospitata privata Route 53 per conto dell'utente e la associa al VPC del cluster. Questa zona ospitata privata è gestita da Amazon EKS e non viene visualizzata nelle risorse Route 53 dell'account. Affinché la zona ospitata privata instradi correttamente il traffico verso il tuo server API, il VPC deve avere enableDnsHostnames e enableDnsSupport impostati su true e le opzioni DHCP impostate per il VPC devono includere AmazonProvidedDNS nell'elenco dei server dei nomi di dominio. Per ulteriori informazioni, consultare Visualizzazione e aggiornamento del supporto DNS per il VPC nella Guida per l'utente di Amazon VPC.

È possibile definire i requisiti di accesso all'endpoint del server API quando si crea un nuovo cluster e aggiornare l'accesso endpoint del server API per un cluster in qualsiasi momento.

Modifica dell'accesso all'endpoint del cluster

Utilizza le procedure in questa sezione per modificare l'accesso all'endpoint per un cluster esistente. La tabella seguente mostra le combinazioni di accesso all'endpoint del server API supportate e il comportamento associato.

Opzioni di accesso all'endpoint del server API
Accesso pubblico all'endpoint Accesso privato all'endpoint Comportamento
Abilitato Disabilitato
  • Questo è il comportamento di default per nuovi cluster Amazon EKS.

  • Le richieste API Kubernetes provenienti dal VPC del cluster (ad esempio, la comunicazione tra nodo e piano di controllo) lasciano il VPC ma non la rete Amazon.

  • Il server API del cluster è accessibile da Internet. È possibile, facoltativamente, limitare i blocchi CIDR che possono accedere all'endpoint pubblico. Se limiti l'accesso a blocchi CIDR specifici, è consigliabile abilitare anche l'endpoint privato o assicurarsi che i blocchi CIDR specificati includano gli indirizzi da cui i nodi e i Pods Fargate (se utilizzati) accedono all'endpoint pubblico.

Abilitato Abilitato
  • Le richieste API Kubernetes all'interno del VPC del cluster (ad esempio, la comunicazione tra nodo e piano di controllo) utilizzano l'endpoint VPC privato.

  • Il server API del cluster è accessibile da Internet. È possibile, facoltativamente, limitare i blocchi CIDR che possono accedere all'endpoint pubblico.

Disabilitato Abilitato
  • Tutto il traffico verso il server API del cluster deve provenire dal VPC del cluster o da una rete connessa.

  • Non esiste alcun accesso pubblico al server API da Internet. Tutti i comandi kubectl devono provenire dall'interno del VPC o da una rete connessa. Per le opzioni di connettività, consultare Accesso a un server API solo privato.

  • L'endpoint del server API del cluster viene risolto dai server DNS pubblici a un indirizzo IP privato dal VPC. In passato, l'endpoint poteva essere risolto solo dall'interno del VPC.

    Se l'endpoint non viene risolto in un indirizzo IP privato all'interno del VPC per un cluster esistente, è possibile:

    • Abilitare l'accesso pubblico e quindi disabilitarlo di nuovo. È necessario farlo solo una volta per un cluster e l'endpoint si risolverà in un indirizzo IP privato da quel punto in avanti.

    • Aggiornare il cluster.

Puoi modificare l'accesso agli endpoint del server API del cluster utilizzando o. AWS Management Console AWS CLI

AWS Management Console
Per modificare l'accesso agli endpoint del server API del cluster utilizzando il AWS Management Console
  1. Aprire la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home#/clusters.

  2. Scegliere il nome del cluster per visualizzare le informazioni sul cluster.

  3. Scegliere la scheda Reti, quindi Aggiorna.

  4. Per Private access (Accesso privato) scegli se attivare o disattivare l'acceso privato per l'endpoint del server API Kubernetes del cluster. Se abiliti l'accesso privato, le richieste API Kubernetes che provengono dal VPC del cluster utilizzeranno l'endpoint VPC privato. Per disabilitare l'accesso pubblico è necessario abilitare l'accesso privato.

  5. Per Public access (Accesso pubblico) scegli se attivare o disattivare l'acceso pubblico per l'endpoint del server API Kubernetes del cluster. Se disabiliti l'accesso pubblico, il server API Kubernetes del cluster potrà ricevere richieste solo dal VPC del cluster.

  6. (Facoltativo) Se è stato abilitato Accesso pubblic, è possibile specificare quali indirizzi Internet possono comunicare con l'endpoint pubblico. Selezionare Advanced settings (Impostazioni avanzate). Immettere un blocco CIDR, ad esempio 203.0.113.5/32. Il blocco non può includere indirizzi riservati. È possibile immettere blocchi aggiuntivi selezionando Add Source (Aggiungi origine). È possibile specificare un numero massimo di blocchi CIDR. Per ulteriori informazioni, consulta Service Quotas di Amazon EKS. Se non si specificano blocchi, l'endpoint del server API pubblico riceve richieste da tutti gli indirizzi IP (0.0.0.0/0). Se limiti l'accesso all'endpoint pubblico utilizzando i blocchi CIDR, è consigliabile abilitare anche l'accesso agli endpoint privati in modo che i nodi e i Pods Fargate (se utilizzati) possano comunicare con il cluster. Senza l'endpoint privato abilitato, le origini CIDR dell'endpoint di accesso pubblico devono includere le origini di uscita dal VPC. Ad esempio, se si dispone di un nodo in una sottorete privata che comunica su Internet tramite un gateway NAT, sarà necessario aggiungere l'indirizzo IP in uscita del gateway NAT come parte di un blocco CIDR nella whitelist nell'endpoint pubblico.

  7. Scegliere Update (Aggiorna) per terminare.

AWS CLI
Per modificare l'accesso all'endpoint del server API del cluster con la AWS CLI

Completa i seguenti passaggi utilizzando la AWS CLI versione 1.27.160 o successiva. È possibile verificare la versione corrente con aws --version. Per installare o aggiornare il AWS CLI, vedere Installazione di AWS CLI.

  1. Aggiornare l'accesso all'endpoint del server API del cluster con il comando AWS CLI seguente. Sostituire il nome del cluster e i valori di accesso dell'endpoint desiderati. Se si imposta endpointPublicAccess=true, è possibile (facoltativamente) immettere un singolo blocco CIDR o un elenco separato da virgole di blocchi CIDR per publicAccessCidrs. I blocchi non possono includere indirizzi riservati. Se si specificano blocchi CIDR, l'endpoint del server API pubblico riceverà solo le richieste dai blocchi elencati. È possibile specificare un numero massimo di blocchi CIDR. Per ulteriori informazioni, consulta Service Quotas di Amazon EKS. Se limiti l'accesso all'endpoint pubblico utilizzando i blocchi CIDR, è consigliabile abilitare anche l'accesso agli endpoint privati in modo che i nodi e i Pods Fargate (se utilizzati) possano comunicare con il cluster. Senza l'endpoint privato abilitato, le origini CIDR dell'endpoint di accesso pubblico devono includere le origini di uscita dal VPC. Ad esempio, se si dispone di un nodo in una sottorete privata che comunica su Internet tramite un gateway NAT, sarà necessario aggiungere l'indirizzo IP in uscita del gateway NAT come parte di un blocco CIDR nella whitelist nell'endpoint pubblico. Se non si specificano blocchi CIDR, l'endpoint del server API pubblico riceve richieste da tutti gli indirizzi IP (0.0.0.0/0).

    Nota

    Il comando seguente consente l'accesso privato e l'accesso pubblico da un singolo indirizzo IP per l'endpoint del server API. Sostituire 203.0.113.5/32 con un singolo blocco CIDR o un elenco separato da virgole di blocchi CIDR a cui si desidera limitare l'accesso alla rete.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    Di seguito viene riportato un output di esempio:

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. Monitorare lo stato di aggiornamento dell'accesso all'endpoint con il comando seguente, utilizzando il nome del cluster, e aggiornare l'ID restituito dal comando precedente. L'aggiornamento è completo quando lo stato è illustrato come Successful.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    Di seguito viene riportato un output di esempio:

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

Accesso a un server API solo privato

Se hai disabilitato l'accesso pubblico per l'endpoint del server API Kubernetes del cluster, potrai accedere al server API solo dal VPC o da una rete connessa. Di seguito sono elencati alcuni possibili modi per accedere all'endpoint del server API Kubernetes:

Rete connessa

È possibile connettere la rete al VPC con un gateway di transito AWS o un'altra opzione di connettività e quindi utilizzare un computer nella rete connessa. Il gruppo di sicurezza del piano di controllo di Amazon EKS deve contenere le regole per consentire il traffico in ingresso sulla porta 443 dalla rete connessa.

Host bastion Amazon EC2

È possibile avviare un'istanza Amazon EC2 in una sottorete pubblica nel VPC del cluster e quindi accedere tramite SSH a tale istanza per eseguire comandi kubectl. Per ulteriori informazioni, consulta Host bastione Linux su AWS. Il gruppo di sicurezza del piano di controllo di Amazon EKS deve contenere le regole per consentire il traffico in ingresso sulla porta 443 dal bastion host. Per ulteriori informazioni, consulta Considerazioni e requisiti relativi al gruppo di sicurezza Amazon EKS.

Quando configuri kubectl per l’host bastione, assicurati di utilizzare le credenziali AWS che sono già associate alla configurazione RBAC del cluster o aggiungere il principale IAM che verrà utilizzato dall’host bastione nella configurazione RBAC prima di rimuovere l'accesso pubblico per l'endpoint. Per ulteriori informazioni, consulta Concedi l'accesso alle Kubernetes API e Accesso negato o non autorizzato (kubectl).

AWS Cloud9 IDE

AWS Cloud9 è un ambiente di sviluppo integrato (IDE) basato su cloud che consente di scrivere, eseguire ed eseguire il debug del codice con un semplice browser. È possibile creare un AWS Cloud9 IDE nel VPC del cluster e utilizzare l'IDE per comunicare con il cluster. Per ulteriori informazioni, consultare Creazione di un ambiente in AWS Cloud9. È necessario assicurarsi che il gruppo di sicurezza del piano di controllo Amazon EKS contenga regole per consentire il traffico in ingresso sulla porta 443 dal gruppo di sicurezza IDE. Per ulteriori informazioni, consulta Considerazioni e requisiti relativi al gruppo di sicurezza Amazon EKS.

Quando esegui la configurazione kubectl per il tuo AWS Cloud9 IDE, assicurati di utilizzare AWS credenziali già mappate alla configurazione RBAC del cluster oppure aggiungi il principio IAM che l'IDE utilizzerà alla configurazione RBAC prima di rimuovere l'accesso pubblico all'endpoint. Per ulteriori informazioni, consultare Concedi l'accesso alle Kubernetes API e Accesso negato o non autorizzato (kubectl).