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 end-to-end la crittografia per le applicazioni su Amazon EKS utilizzando cert-manager e Let's Encrypt
Creato da Mahendra Revanasiddappa () e Vasanth Jeyaraj () AWS AWS
Repository di codice: nd-to-end crittografia E su Amazon EKS | Ambiente: PoC o pilota | Tecnologie: DevOps; Contenitori e microservizi; Sicurezza, identità, conformità |
Carico di lavoro: tutti gli altri carichi di lavoro | AWSservizi: AmazonEKS; Amazon Route 53 |
Riepilogo
L'implementazione della end-to-end crittografia può essere complessa e devi gestire i certificati per ogni risorsa nell'architettura dei microservizi. Sebbene sia possibile interrompere la connessione Transport Layer Security (TLS) ai margini della rete Amazon Web Services (AWS) con un Network Load Balancer o API Amazon Gateway, alcune organizzazioni end-to-end richiedono la crittografia.
Questo modello utilizza NGINX Ingress Controller per l'ingresso. Questo perché quando crei un ingresso Kubernetes, la risorsa di ingresso utilizza un Network Load Balancer. Il Network Load Balancer non consente il caricamento di certificati client. Pertanto, non è possibile ottenere risultati reciproci TLS con Kubernetes Ingress.
Questo modello è destinato alle organizzazioni che richiedono l'autenticazione reciproca tra tutti i microservizi delle loro applicazioni. Mutual TLS riduce l'onere di mantenere i nomi utente o le password e può anche utilizzare il framework di sicurezza chiavi in mano. L'approccio di questo modello è compatibile se l'organizzazione ha un gran numero di dispositivi connessi o deve rispettare rigide linee guida di sicurezza.
Questo modello aiuta a migliorare il livello di sicurezza dell'organizzazione implementando la end-to-end crittografia per le applicazioni in esecuzione su Amazon Elastic Kubernetes Service (Amazon). EKS Questo modello fornisce un'applicazione e un codice di esempio nel EKS repository di nd-to-end crittografia GitHub E su Amazon
Destinatari
Questo modello è consigliato agli utenti che hanno esperienza con KubernetesTLS, Amazon Route 53 e Domain Name System (). DNS
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
Un EKS cluster Amazon esistente.
AWSCommand Line Interface (AWSCLI) versione 1.7 o successiva, installata e configurata su macOS, Linux o Windows.
L'utilità da riga di
kubectl
comando, installata e configurata per accedere al EKS cluster Amazon. Per ulteriori informazioni a riguardo, consulta Installazione di kubectl nella documentazione di Amazon. EKSUn DNS nome esistente per testare l'applicazione. Per ulteriori informazioni su questo argomento, consulta Registrazione di nomi di dominio utilizzando Amazon Route 53 nella documentazione di Amazon Route 53.
L'ultima versione di Helm, installata sul tuo computer locale. Per ulteriori informazioni su questo argomento, consulta Using Helm with Amazon EKS nella EKS documentazione di Amazon e nel repository GitHub Helm
. La nd-to-end crittografia GitHub E sul EKS repository Amazon
, clonata sul tuo computer locale. Sostituisci i seguenti valori nei
trustpolicy.json
filepolicy.json
and dalla nd-to-end crittografia GitHub E clonata sul repository Amazon EKS: <account number>
— Sostituiscilo con l'AWSID dell'account in cui desideri implementare la soluzione.<zone id>
— Sostituire con l'ID di zona Route 53 del nome di dominio.<node_group_role>
— Sostituire con il nome del ruolo AWS Identity and Access Management (IAM) associato ai EKS nodi Amazon.<namespace>
— Sostituiscilo con lo spazio dei nomi Kubernetes in cui distribuisci l'NGINXIngress Controller e l'applicazione di esempio.<application-domain-name>
— Sostituisci con il nome di DNS dominio di Route 53.
Limitazioni
Questo modello non descrive come ruotare i certificati e dimostra solo come utilizzare i certificati con microservizi su Amazon. EKS
Architettura
Il diagramma seguente mostra i componenti del flusso di lavoro e dell'architettura di questo modello.
Il diagramma mostra il flusso di lavoro seguente:
Un client invia una richiesta per accedere all'applicazione al nome. DNS
Il record Route 53 appartiene CNAME al Network Load Balancer.
Il Network Load Balancer inoltra la richiesta all'NGINXIngress Controller configurato con un listener. TLS La comunicazione tra l'NGINXIngress Controller e il Network Load Balancer segue il protocolloHTTPS.
L'NGINXIngress Controller esegue il routing basato sul percorso in base alla richiesta del client al servizio applicativo.
Il servizio applicativo inoltra la richiesta al pod dell'applicazione. L'applicazione è progettata per utilizzare lo stesso certificato chiamando segreti.
I pod eseguono l'applicazione di esempio utilizzando i certificati cert-manager. La comunicazione tra l'NGINXIngress Controller e i pod utilizza. HTTPS
Nota: Cert-Manager viene eseguito nel proprio spazio dei nomi. Utilizza un ruolo del cluster Kubernetes per fornire certificati come segreti in namespace specifici. Puoi allegare questi namespace ai pod delle applicazioni e a Ingress Controller. NGINX |
Strumenti
AWSservizi
Amazon Elastic Kubernetes Service (EKSAmazon) è un servizio gestito che puoi usare per eseguire AWS Kubernetes senza dover installare, gestire e mantenere il tuo piano di controllo o i tuoi nodi Kubernetes.
Elastic Load Balancing distribuisce automaticamente il traffico in entrata su più destinazioni, contenitori e indirizzi IP.
AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
Amazon Route 53 è un servizio DNS Web altamente disponibile e scalabile.
Altri strumenti
cert-manager
è un componente aggiuntivo di Kubernetes che richiede certificati, li distribuisce nei contenitori Kubernetes e automatizza il rinnovo dei certificati. NGINXIngress Controller
è una soluzione di gestione del traffico per app native del cloud in Kubernetes e ambienti containerizzati.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea una zona ospitata pubblica in Route 53. | Accedi alla console di AWS gestione, apri la console Amazon Route 53, scegli Zone ospitate, quindi scegli Crea zona ospitata. Crea una zona ospitata pubblica e registra l'ID della zona. Per ulteriori informazioni su questo argomento, consulta Creazione di una zona ospitata pubblica nella documentazione di Amazon Route 53. Nota: ACME DNS 01 utilizza il DNS provider per inviare una richiesta di rilascio del certificato da parte di cert-manager. Questa sfida ti chiede di dimostrare di controllare il tuo nome DNS di dominio inserendo un valore specifico in un TXT record con quel nome di dominio. Dopo che Let's Encrypt ha ACME fornito al cliente un token, quest'ultimo crea un TXT record derivato da quel token e dalla chiave dell'account, e inserisce quel record in | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea la IAM politica per cert-manager. | È necessaria una IAM policy per fornire al cert-manager l'autorizzazione a convalidare la proprietà del dominio Route 53. La IAM policy Inserisci il seguente comando AWS CLI per creare la policy. IAM
| AWS DevOps |
Crea il IAM ruolo per cert-manager. | Dopo aver creato la IAM politica, è necessario creare un IAM ruolo. Il IAM ruolo di Immettete il seguente comando AWS CLI per creare il IAM ruolo.
| AWS DevOps |
Collegare la policy al ruolo. | Immettete il seguente comando AWS CLI per allegare la IAM politica al IAM ruolo. Sostituiscilo
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa l'NGINXIngress Controller. | Installa la versione più recente di Installa l'NGINXIngress Controller eseguendo il seguente comando Helm dalla directory.
| AWS DevOps |
Verificare che l'NGINXIngress Controller sia installato. | Immettere il comando | AWS DevOps |
Crea un record Route 53 A. | Il record A punta al Network Load Balancer creato da NGINX Ingress Controller.
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementazione. NGINX VirtualServer | La NGINX VirtualServer risorsa è una configurazione di bilanciamento del carico alternativa alla risorsa in ingresso. La configurazione per creare la NGINX VirtualServer risorsa è disponibile nel
Importante: assicurati di aggiornare il nome di dominio dell'applicazione, il segreto del certificato e il nome del servizio dell'applicazione nel | AWS DevOps |
Verifica che NGINX VirtualServer sia stato creato. | Immettete il seguente comando
Nota: verifica che la | AWS DevOps |
Implementa il server NGINX Web con TLS abilitato. | Questo modello utilizza un server NGINX Web con TLS enabled come applicazione per testare la end-to-end crittografia. I file di configurazione necessari per distribuire l'applicazione di test sono disponibili nella Immettete il seguente comando
| AWS DevOps |
Verificate che le risorse dell'applicazione di test siano state create. | Immettete i seguenti comandi
| AWS DevOps |
Convalida l'applicazione. |
| AWS DevOps |
Risorse correlate
AWSrisorse
Creazione di record utilizzando la console Amazon Route 53 (documentazione Amazon Route 53)
Utilizzo di un Network Load Balancer con il controller di NGINX ingresso su Amazon EKS
(AWSpost sul blog)
Altre risorse
Route 53
(documentazione del cert-manager) Configurazione di DNS 01 Challenge Provider
(documentazione cert-manager) DNSSfida Let's Encrypt
(documentazione Let's Encrypt)