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à.
Transport Layer Security (TLS)
Importante
Avviso di fine del supporto: il 30 settembre 2026, AWS verrà interrotto il supporto per. AWS App Mesh Dopo il 30 settembre 2026, non potrai più accedere alla AWS App Mesh console o alle risorse. AWS App Mesh Per ulteriori informazioni, consulta questo post del blog Migrazione da AWS App Mesh ad Amazon ECS Service Connect
In App Mesh, Transport Layer Security (TLS) crittografa la comunicazione tra i proxy Envoy distribuiti su risorse di calcolo rappresentate in App Mesh da endpoint mesh, come e. Nodi virtuali Gateway virtuali Il proxy negozia e termina. TLS Quando il proxy viene distribuito con un'applicazione, il codice dell'applicazione non è responsabile della negoziazione di una sessione. TLS Il proxy negozia per TLS conto dell'applicazione.
App Mesh consente di fornire il TLS certificato al proxy nei seguenti modi:
-
Un certificato privato di AWS Certificate Manager (ACM) rilasciato da un AWS Private Certificate Authority (AWS Private CA).
-
Un certificato memorizzato nel file system locale di un nodo virtuale emesso dalla propria autorità di certificazione (CA)
-
Un certificato fornito da un endpoint Secrets Discovery Service (SDS) tramite Unix Domain Socket locale.
Autorizzazione Envoy Proxydeve essere abilitato per il proxy Envoy distribuito rappresentato da un endpoint mesh. Quando abiliti l'autorizzazione proxy, ti consigliamo di limitare l'accesso solo all'endpoint mesh per cui stai abilitando la crittografia.
Requisiti del certificato
Uno dei nomi alternativi del soggetto (SANs) sul certificato deve soddisfare criteri specifici, a seconda di come viene scoperto il servizio effettivo rappresentato da un endpoint mesh.
-
DNS— Uno dei certificati SANs deve corrispondere al valore fornito nelle impostazioni di individuazione del DNS servizio. Per un'applicazione con il nome di rilevamento del servizio
, è possibile creare un certificato corrispondente a quel nome o un certificato con la wild cardmesh-endpoint.apps.local
*.
.apps.local
-
AWS Cloud Map— Uno dei certificati SANs deve corrispondere al valore fornito nelle impostazioni di individuazione del AWS Cloud Map servizio utilizzando il formato
. Per un'applicazione con le impostazioni di rilevamento del AWS Cloud Map servizio di serviceNameservice-name.namespace-name
e namespaceNamemesh-endpoint
, è possibile creare un certificato corrispondente al nomeapps.local
o un certificato con la wild cardmesh-endpoint.apps.local
*.
apps.local
.
Per entrambi i meccanismi di rilevamento, se nessuno dei certificati SANs corrisponde alle impostazioni di rilevamento del DNS servizio, la connessione tra Envoys fallisce e viene visualizzato il seguente messaggio di errore, visualizzato dal client Envoy.
TLS error: 268435581:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
TLScertificati di autenticazione
App Mesh supporta più fonti per i certificati quando si utilizza TLS l'autenticazione.
- AWS Private CA
-
Il certificato deve essere archiviato ACM nella stessa regione e nello stesso AWS account dell'endpoint mesh che utilizzerà il certificato. Non è necessario che il certificato della CA si trovi nello stesso AWS account, ma deve comunque trovarsi nella stessa regione dell'endpoint mesh. Se non ne possiedi uno CA privata AWS, devi crearne uno prima di poterne richiedere un certificato. Per ulteriori informazioni sulla richiesta di un certificato da un utente esistenteACM, AWS Private CA consulta Richiedere un certificato privato. Il certificato non può essere un certificato pubblico.
L'utente privato CAs utilizzato per le politiche TLS dei client deve essere un utente rootCAs.
Per configurare un nodo virtuale con certificati e CAs da AWS Private CA, il principale (come un utente o un ruolo) che usi per chiamare App Mesh deve disporre delle seguenti IAM autorizzazioni:
-
Per tutti i certificati aggiunti alla TLS configurazione di un listener, il principale deve disporre dell'
acm:DescribeCertificate
autorizzazione. -
Per tutti i criteri CAs configurati in base a un TLS client, il principale deve disporre dell'
acm-pca:DescribeCertificateAuthority
autorizzazione.
Importante
La condivisione CAs con altri account può conferire a tali account privilegi involontari alla CA. Si consiglia di utilizzare politiche basate sulle risorse per limitare l'accesso solo
acm-pca:DescribeCertificateAuthority
agli account che non devono emettere certificati dalla CA.acm-pca:GetCertificateAuthorityCertificate
È possibile aggiungere queste autorizzazioni a una IAM politica esistente associata a un principale o creare un nuovo principale e una nuova politica e allegare la politica al principale. Per ulteriori informazioni, vedere Modifica dei IAM criteri, Creazione IAM di criteri e Aggiungere autorizzazioni di IAM identità.
Nota
Paghi una tariffa mensile per il funzionamento di ciascuno di essi AWS Private CA fino a quando non lo elimini. Paghi anche i certificati privati che emetti ogni mese e i certificati privati che esporti. Per ulteriori informazioni, consulta la sezione Prezzi di AWS Certificate Manager
. Quando abiliti l'autorizzazione proxy per l'Envoy Proxy rappresentato da un endpoint mesh, al IAM ruolo che utilizzi devono essere assegnate le seguenti autorizzazioni: IAM
-
Per tutti i certificati configurati sul listener di un nodo virtuale, il ruolo deve disporre dell'autorizzazione.
acm:ExportCertificate
-
Per tutti i ruoli CAs configurati in base a una politica TLS client, il ruolo deve disporre dell'
acm-pca:GetCertificateAuthorityCertificate
autorizzazione.
-
- File system
-
È possibile distribuire certificati a Envoy utilizzando il file system. È possibile farlo rendendo disponibili la catena di certificati e la chiave privata corrispondente nel percorso del file. In questo modo, queste risorse sono raggiungibili dal proxy sidecar Envoy.
- Servizio di scoperta segreto di Envoy () SDS
-
Envoy recupera segreti come i TLS certificati da un endpoint specifico tramite il protocollo Secrets Discovery. Per ulteriori informazioni su questo protocollo, consulta la documentazione di Envoy. SDS
App Mesh configura il proxy Envoy per utilizzare un Unix Domain Socket locale al proxy per fungere da endpoint Secret Discovery Service (SDS) quando SDS funge da origine per i certificati e le catene di certificati. È possibile configurare il percorso di questo endpoint utilizzando la variabile di ambiente.
APPMESH_SDS_SOCKET_PATH
Importante
Local Secrets Discovery Service che utilizza Unix Domain Socket è supportato sul proxy App Mesh Envoy versione 1.15.1.0 e successive.
App Mesh supporta il SDS protocollo V2 utilizzando g. RPC
- Integrazione con SPIFFE Runtime Environment () SPIRE
-
È possibile utilizzare qualsiasi implementazione collaterale di SDSAPI, incluse le toolchain esistenti come SPIFFERuntime Environment
(). SPIRE SPIREè progettato per consentire l'implementazione dell'TLSautenticazione reciproca tra più carichi di lavoro in sistemi distribuiti. Attesta l'identità dei carichi di lavoro in fase di esecuzione. SPIREfornisce inoltre chiavi e certificati specifici per i carichi di lavoro, di breve durata e con rotazione automatica direttamente ai carichi di lavoro. È necessario configurare l'agente come provider per EnvoySPIRE. SDS Consentitegli di fornire direttamente a Envoy il materiale chiave di cui ha bisogno per fornire l'autenticazione reciproca. TLS Esegui SPIRE gli agenti nei sidecar accanto ai proxy Envoy. L'agente si occupa della rigenerazione delle chiavi e dei certificati di breve durata, se necessario. L'agente attesta Envoy e determina quali identità di servizio e certificati CA deve rendere disponibili a Envoy quando Envoy si connette al server esposto dall'agente. SDS SPIRE
Durante questo processo, le identità di servizio e i certificati CA vengono ruotati e gli aggiornamenti vengono trasmessi in streaming a Envoy. Envoy li applica immediatamente alle nuove connessioni senza interruzioni o tempi di inattività e senza che le chiavi private tocchino mai il file system.
In che modo App Mesh configura gli Envoys per negoziare TLS
App Mesh utilizza la configurazione degli endpoint mesh sia del client che del server per determinare come configurare la comunicazione tra Envoys in una mesh.
- Con le politiche dei clienti
-
Quando una policy client impone l'uso di TLS e una delle porte nella policy client corrisponde alla porta della policy del server, la policy client viene utilizzata per configurare il contesto di TLS convalida del client. Ad esempio, se la politica client di un gateway virtuale corrisponde alla politica del server di un nodo virtuale, verrà tentata la TLS negoziazione tra i proxy utilizzando le impostazioni definite nella politica client del gateway virtuale. Se la politica del client non corrisponde alla politica della porta del server, è possibile negoziare o meno TLS tra i proxy, a seconda delle impostazioni della politica del server. TLS
- Senza politiche client
-
Se il client non ha configurato una politica client o la politica del client non corrisponde alla porta del server, App Mesh utilizzerà il server per determinare se negoziare TLS o meno con il client e come. Ad esempio, se un gateway virtuale non ha specificato una policy client e un nodo virtuale non ha configurato la TLS terminazione, non TLS verrà negoziata tra i proxy. Se un client non ha specificato una politica client corrispondente e un server è stato configurato con TLS modalità
STRICT
oPERMISSIVE
, i proxy verranno configurati per la negoziazione. TLS A seconda del modo in cui i certificati sono stati forniti per la TLS terminazione, si applica il seguente comportamento aggiuntivo.-
ACM-managed TLS certificates: quando un server ha configurato la TLS terminazione utilizzando un certificato ACM -managed, App Mesh configura automaticamente i client per negoziare TLS e convalidare il certificato rispetto alla CA dell'utente root a cui il certificato è concatenato.
-
TLSCertificati basati su file: quando un server ha configurato la TLS terminazione utilizzando un certificato del file system locale del proxy, App Mesh configura automaticamente un client per la negoziazioneTLS, ma il certificato del server non viene convalidato.
-
- Nomi alternativi dei soggetti
-
Facoltativamente, puoi specificare un elenco di nomi alternativi dei soggetti (SANs) di cui fidarti. SANsdeve essere nel URI formato FQDN o. Se SANs forniti, Envoy verifica che il nome alternativo del soggetto del certificato presentato corrisponda a uno dei nomi in questo elenco.
Se non lo specifichi SANs sull'endpoint mesh di terminazione, il proxy Envoy per quel nodo non verifica il certificato su un client peer. SAN Se non lo specifichi SANs sull'endpoint mesh di origine, il certificato fornito dall'endpoint terminante deve corrispondere alla configurazione di rilevamento del servizio di endpoint mesh. SAN
Per ulteriori informazioni, consulta App Mesh TLS: requisiti del certificato.
Importante
È possibile utilizzare i caratteri jolly solo SANs se la policy del client per TLS è impostata su.
not enforced
Se la policy client per il nodo virtuale o il gateway virtuale del client è configurata per essere applicataTLS, non può accettare caratteri jolly. SAN
Verifica la crittografia
Una volta abilitataTLS, puoi interrogare il proxy Envoy per confermare che la comunicazione sia crittografata. Il proxy Envoy emette statistiche sulle risorse che possono aiutarti a capire se la tua TLS comunicazione funziona correttamente. Ad esempio, il proxy Envoy registra le statistiche sul numero di TLS handshake riuscite negoziate per un endpoint mesh specificato. Determina quante TLS strette di mano riuscite sono state eseguite per un endpoint mesh denominato con il seguente comando. my-mesh-endpoint
curl -s 'http://
my-mesh-endpoint.apps.local
:9901/stats' | grep ssl.handshake
Nell'esempio seguente, l'output restituito è che ci sono state tre strette di mano per l'endpoint mesh, quindi la comunicazione è crittografata.
listener.0.0.0.0_15000.ssl.handshake: 3
Il proxy Envoy emette statistiche anche quando la negoziazione fallisce. TLS Determina se ci sono stati TLS errori per l'endpoint della mesh.
curl -s 'http://
my-mesh-endpoint.apps.local
:9901/stats' | grep -e "ssl.*\(fail\|error\)"
Nell'esempio restituito dall'output, non ci sono stati errori per diverse statistiche, quindi la TLS negoziazione ha avuto esito positivo.
listener.0.0.0.0_15000.ssl.connection_error: 0
listener.0.0.0.0_15000.ssl.fail_verify_cert_hash: 0
listener.0.0.0.0_15000.ssl.fail_verify_error: 0
listener.0.0.0.0_15000.ssl.fail_verify_no_cert: 0
listener.0.0.0.0_15000.ssl.ssl.fail_verify_san: 0
Per ulteriori informazioni sulle statistiche di Envoy, vedere Envoy TLS Listener Statistics.
Rinnovo del certificato
AWS Private CA
Quando rinnovi un certificato conACM, il certificato rinnovato verrà distribuito automaticamente ai proxy collegati entro 35 minuti dal completamento del rinnovo. Ti consigliamo di utilizzare il rinnovo gestito per rinnovare automaticamente i certificati verso la fine del periodo di validità. Per ulteriori informazioni, consulta la sezione Rinnovo gestito per i ACM certificati emessi da Amazon nella Guida per l' AWS Certificate Manager utente.
Il tuo certificato
Quando si utilizza un certificato del file system locale, Envoy non ricaricherà automaticamente il certificato quando viene modificato. È possibile riavviare o ridistribuire il processo Envoy per caricare un nuovo certificato. È inoltre possibile inserire un certificato più recente in un percorso di file diverso e aggiornare la configurazione del nodo virtuale o del gateway con quel percorso di file.
Configura i ECS carichi di lavoro Amazon per utilizzare l'TLSautenticazione con AWS App Mesh
Puoi configurare la tua mesh per utilizzare l'TLSautenticazione. Assicurati che i certificati siano disponibili per i sidecar proxy di Envoy che aggiungi ai tuoi carichi di lavoro. Puoi allegare un EFS volume EBS or al tuo sidecar Envoy oppure puoi archiviare e recuperare i certificati da Secrets Manager. AWS
-
Se utilizzi la distribuzione di certificati basata su file, allega un volume EBS or EFS al sidecar Envoy. Assicurati che il percorso del certificato e della chiave privata corrisponda a quello configurato in. AWS App Mesh
-
Se utilizzi la distribuzione SDS basata, aggiungi un sidecar che implementa Envoy's SDS API con accesso al certificato.
Nota
SPIREnon è supportato su AmazonECS.
Configura i carichi di lavoro Kubernetes per utilizzare l'autenticazione con TLS AWS App Mesh
Puoi configurare AWS App Mesh Controller for Kubernetes per abilitare l'TLSautenticazione per i backend e i listener dei servizi di nodi e gateway virtuali. Assicurati che i certificati siano disponibili per i sidecar proxy Envoy che aggiungi ai tuoi carichi di lavoro. Puoi vedere un esempio per ogni tipo di distribuzione nella sezione dettagliata di Autenticazione reciproca. TLS
-
Se utilizzi la distribuzione di certificati basata su file, allega un EFS volume EBS or al sidecar di Envoy. Assicurati che il percorso del certificato e della chiave privata corrisponda a quello configurato nel controller. In alternativa, puoi utilizzare un Kubernetes Secret montato sul file system.
-
Se utilizzi la distribuzione SDS basata, dovresti configurare un SDS provider locale di nodi che implementi Envoy's. SDS API Envoy lo raggiungerà. UDS Per abilitare il TLS supporto SDS based m nel EKS AppMesh controller, imposta il
enable-sds
flag sutrue
e fornisci il UDS percorso del SDS provider locale al controller tramite ilsds-uds-path
flag. Se usi helm, li imposti come parte dell'installazione del controller:--set sds.enabled=true
Nota
Non potrai utilizzare SPIRE per distribuire i tuoi certificati se utilizzi Amazon Elastic Kubernetes Service (Amazon) in modalità Fargate. EKS