View a markdown version of this page

Configura il AWS Endpoint Security Token Service per un account di servizio - Amazon EKS

Contribuisci a migliorare questa pagina

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à.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

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à.

Configura il AWS Endpoint Security Token Service per un account di servizio

Se utilizzi un account di servizio Kubernetes con ruoli IAM per gli account di servizio, puoi configurare il tipo di endpoint AWS Security Token Service utilizzato dall'account di servizio.

AWS consiglia di utilizzare gli endpoint AWS STS regionali anziché l'endpoint globale. Ciò riduce la latenza, fornisce una ridondanza integrata e aumenta la validità del token di sessione. Il AWS Security Token Service deve essere attivo nella AWS regione in cui è in esecuzione il Pod. Inoltre, l'applicazione deve avere una ridondanza integrata per una AWS regione diversa in caso di guasto del servizio nella AWS regione. Per ulteriori informazioni, consulta Managing AWS STS in an AWS Region nella IAM User Guide.

Nota

Per rendere private le richieste di credenziali IRSA in un VPC senza uscita Internet, crea un endpoint di interfaccia AWS STS (com.amazonaws.region-code.sts) e imposta l'endpoint regionale come descritto in questo argomento. L'endpoint globale () bypassa l'endpoint VPC. sts.amazonaws.com Per raggiungere l' discovery/JWKS endpoint OIDC del cluster anche privatamente (per la configurazione del provider e i validatori di token), crea un endpoint VPC separato (). com.amazonaws.region-code.oidc-eks Per ulteriori informazioni, consulta Accedi all'endpoint OIDC del cluster utilizzando AWS PrivateLink.

Tutti gli esempi seguenti utilizzano l’account di servizio Kubernetes aws-node utilizzato dal plugin CNI di Amazon VPC. Puoi sostituirlo example values con i tuoi account di servizio, pod, namespace e altre risorse.

  1. Selezionare un pod che utilizza un account di servizio per il quale si desidera modificare l’endpoint. Determina in quale AWS regione viene eseguito il Pod. Sostituiscilo aws-node-6mfgv con il nome del tuo Pod e kube-system con il namespace del tuo Pod.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    Di seguito viene riportato un output di esempio.

    ip-192-168-79-166.us-west-2/192.168.79.166

    Nell'output precedente, il Pod è in esecuzione su un nodo nella regione AWS us-west-2.

  2. Determinare il tipo di endpoint utilizzato dall’account di servizio del pod.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Di seguito viene riportato un output di esempio.

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Se l'endpoint attuale è globale, l'output restituisce global. Se non viene restituito alcun output, il tipo di endpoint predefinito è in uso e non è stato sovrascritto.

  3. Se le versioni del cluster e della piattaforma corrispondono o sono successive a quelle elencate nella tabella, puoi modificare il tipo di endpoint utilizzato dall'account del servizio dal tipo predefinito con un tipo diverso tramite uno dei comandi seguenti. Sostituisci aws-node con il nome dell'account del servizio e kube-system con lo spazio dei nomi dell'account del servizio.

    • Se il tipo di endpoint predefinito o attuale è globale e vuoi modificarlo in regionale:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Se si utilizzano i ruoli IAM per gli account di servizio per generare URL S3 prefirmati nell’applicazione in esecuzione nei container dei pod, il formato dell’URL per gli endpoint Regionali è simile al seguente esempio:

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Se il tipo di endpoint predefinito o attuale è regionale e vuoi modificarlo in globale:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Se la tua applicazione effettua esplicitamente richieste agli endpoint globali AWS STS e non sovrascrivi il comportamento predefinito di utilizzo degli endpoint regionali nei cluster Amazon EKS, le richieste avranno esito negativo e verrà generato un errore. Per ulteriori informazioni, consulta I container dei pod riceveranno il seguente errore: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Se si utilizzano i ruoli IAM per gli account di servizio per generare URL S3 prefirmati nell’applicazione in esecuzione nei container dei pod, il formato dell’URL per gli endpoint globali è simile al seguente esempio:

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Se disponi di un'automazione che prevede l'URL prefirmato in un determinato formato o se la tua applicazione o le dipendenze downstream che utilizzano URL prefirmati hanno aspettative per la AWS regione target, apporta le modifiche necessarie per utilizzare l'endpoint STS appropriato. AWS

  4. Eliminare e ricreare i pod esistenti associati all’account di servizio per applicare le variabili di ambiente delle credenziali. Il web hook di modifica non le applica ai pod già in esecuzione. Puoi sostituire Pods e -l k8s-app=aws-node con le informazioni relative ai Pod per i quali hai impostato l'annotazione. kube-system

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Conferma che tutti i Pod sono stati riavviati.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Visualizzare le variabili di ambiente per uno dei pod. Verifica che il valore AWS_STS_REGIONAL_ENDPOINTS sia quello che hai impostato in una fase precedente.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Di seguito viene riportato un output di esempio:

    AWS_STS_REGIONAL_ENDPOINTS=regional