Risoluzione dei problemi di sicurezza di App Mesh - AWS App Mesh

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

Risoluzione dei problemi di sicurezza di App Mesh

Questo argomento descrive i problemi più comuni che potresti riscontrare con la sicurezza App Mesh.

Impossibile connettersi a un servizio virtuale di backend con una politica client TLS

Caratteristiche

Quando si aggiunge una policy client TLS a un backend di servizio virtuale in un nodo virtuale, la connettività a quel backend fallisce. Quando si tenta di inviare traffico al servizio di backend, le richieste falliscono con un codice di HTTP 503 risposta e il messaggio di errore:. upstream connect error or disconnect/reset before headers. reset reason: connection failure

Risoluzione

Per determinare la causa principale del problema, ti consigliamo di utilizzare i registri dei processi del proxy Envoy per aiutarti a diagnosticare il problema. Per ulteriori informazioni, consulta Abilita la registrazione di debug di Envoy negli ambienti di preproduzione. Utilizza il seguente elenco per determinare la causa dell'errore di connessione:

  • Assicurati che la connettività al backend funzioni correttamente escludendo gli errori menzionati in. Impossibile connettersi a un backend di servizio virtuale

  • Nei log dei processi di Envoy, cerca i seguenti errori (registrati a livello di debug).

    TLS error: 268435581:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

    Questo errore è causato da uno o più dei seguenti motivi:

    • Il certificato non è stato firmato da una delle autorità di certificazione definite nel TLS Client Policy Trust Bundle.

    • Il certificato non è più valido (scaduto).

    • Il nome alternativo del soggetto (SAN) non corrisponde al nome host DNS richiesto.

    • Assicurati che il certificato offerto dal servizio di backend sia valido, che sia firmato da una delle autorità di certificazione incluse nel tuo TLS Client Policies Trust Bundle e che soddisfi i criteri definiti in. Transport Layer Security (TLS)

    • Se l'errore che ricevi è simile a quello riportato di seguito, significa che la richiesta sta ignorando il proxy Envoy e sta raggiungendo direttamente l'applicazione. Quando si invia traffico, le statistiche su Envoy non cambiano, il che indica che Envoy non è sulla strada giusta per decrittografare il traffico. Nella configurazione proxy del nodo virtuale, assicurati che AppPorts contenga il valore corretto che l'applicazione sta ascoltando.

      upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: TLS error: 268435703:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o di contattare l'AWSassistenza. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta le linee guida per la segnalazione delle AWS vulnerabilità.

Impossibile connettersi a un servizio virtuale di backend quando l'applicazione sta originando TLS

Caratteristiche

Quando si origina una sessione TLS da un'applicazione, anziché dal proxy Envoy, la connettività a un servizio virtuale di backend non funziona.

Risoluzione

Si tratta di un problema noto. Per ulteriori informazioni, consulta il problema relativo alla richiesta di funzionalità: negoziazione TLS tra l'applicazione downstream e il proxy upstream. GitHub In App Mesh, l'origine TLS è attualmente supportata dal proxy Envoy ma non dall'applicazione. Per utilizzare il supporto di origine TLS su Envoy, disabilita l'origine TLS nell'applicazione. Ciò consente all'Envoy di leggere le intestazioni delle richieste in uscita e inoltrare la richiesta alla destinazione appropriata tramite una sessione TLS. Per ulteriori informazioni, consulta Transport Layer Security (TLS).

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o di contattare l'AWSassistenza. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta le linee guida per la segnalazione delle AWS vulnerabilità.

Impossibile affermare che la connettività tra i proxy Envoy utilizzi TLS

Caratteristiche

L'applicazione ha abilitato la terminazione TLS sul nodo virtuale o sul listener del gateway virtuale o l'origine TLS sulla policy del client TLS di backend, ma non è possibile affermare che la connettività tra i proxy Envoy avvenga su una sessione negoziata con TLS.

Risoluzione

Le fasi definite in questa risoluzione utilizzano l'interfaccia di amministrazione di Envoy e le statistiche di Envoy. Per informazioni sulla configurazione di questi, consulta e. Abilita l'interfaccia di amministrazione del proxy Envoy Abilita l'integrazione con Envoy DogStats D per l'offload metrico I seguenti esempi di statistiche utilizzano l'interfaccia di amministrazione per semplicità.

  • Per il proxy Envoy che esegue la terminazione TLS:

    • Assicurati che il certificato TLS sia stato avviato nella configurazione di Envoy con il seguente comando.

      curl http://my-app.default.svc.cluster.local:9901/certs

      Nell'output restituito, dovresti vedere almeno una voce sotto il certificato utilizzato nella terminazione certificates[].cert_chain TLS.

    • Assicurati che il numero di connessioni in entrata riuscite al listener del proxy sia esattamente uguale al numero di handshake SSL più il numero di sessioni SSL riutilizzate, come mostrato dai comandi e dall'output di esempio seguenti.

      curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "listener.0.0.0.0_15000" | grep downstream_cx_total listener.0.0.0.0_15000.downstream_cx_total: 11 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "listener.0.0.0.0_15000" | grep ssl.connection_error listener.0.0.0.0_15000.ssl.connection_error: 1 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "listener.0.0.0.0_15000" | grep ssl.handshake listener.0.0.0.0_15000.ssl.handshake: 9 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "listener.0.0.0.0_15000" | grep ssl.session_reused listener.0.0.0.0_15000.ssl.session_reused: 1 # Total CX (11) - SSL Connection Errors (1) == SSL Handshakes (9) + SSL Sessions Re-used (1)
  • Per il proxy Envoy che esegue l'origine TLS:

    • Assicurati che il trust store TLS sia stato avviato nella configurazione di Envoy con il seguente comando.

      curl http://my-app.default.svc.cluster.local:9901/certs

      Dovresti vedere almeno una voce sotto certificates[].ca_certs per i certificati utilizzati per convalidare il certificato del backend durante l'origine del TLS.

    • Assicurati che il numero di connessioni in uscita riuscite al cluster di backend sia esattamente lo stesso del numero di handshake SSL più il numero di sessioni SSL riutilizzate, come mostrato dai seguenti comandi e output di esempio.

      curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "virtual-node-name" | grep upstream_cx_total cluster.cds_egress_mesh-name_virtual-node-name_protocol_port.upstream_cx_total: 11 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "virtual-node-name" | grep ssl.connection_error cluster.cds_egress_mesh-name_virtual-node-name_protocol_port.ssl.connection_error: 1 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "virtual-node-name" | grep ssl.handshake cluster.cds_egress_mesh-name_virtual-node-name_protocol_port.ssl.handshake: 9 curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "virtual-node-name" | grep ssl.session_reused cluster.cds_egress_mesh-name_virtual-node-name_protocol_port.ssl.session_reused: 1 # Total CX (11) - SSL Connection Errors (1) == SSL Handshakes (9) + SSL Sessions Re-used (1)

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o di contattare l'AWSassistenza. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta le linee guida per la segnalazione delle AWS vulnerabilità.

Risoluzione dei problemi relativi al TLS con Elastic Load Balancing

Caratteristiche

Quando si tenta di configurare un Application Load Balancer o un Network Load Balancer per crittografare il traffico verso un nodo virtuale, i controlli di connettività e di integrità del load balancer possono fallire.

Risoluzione

Per determinare la causa principale del problema, è necessario verificare quanto segue:

  • Affinché il proxy Envoy esegua la terminazione TLS, è necessario escludere eventuali errori di configurazione. Segui i passaggi indicati sopra in. Impossibile connettersi a un servizio virtuale di backend con una politica client TLS

  • Per il bilanciamento del carico, è necessario esaminare la configurazione di TargetGroup:

    • Assicurati che la TargetGroup porta corrisponda alla porta listener definita dal nodo virtuale.

    • Per gli Application Load Balancer che originano connessioni TLS tramite HTTP al tuo servizio, assicurati che il TargetGroup protocollo sia impostato su. HTTPS Se vengono utilizzati controlli sanitari, assicurati che sia impostato su. HealthCheckProtocol HTTPS

    • Per i Network Load Balancer che originano connessioni TLS tramite TCP al tuo servizio, assicurati che il protocollo sia impostato su. TargetGroup TLS Se vengono utilizzati controlli sanitari, assicurati che sia impostato su. HealthCheckProtocol TCP

      Nota

      Eventuali aggiornamenti che TargetGroup richiedono la modifica del TargetGroup nome.

Se configurato correttamente, il sistema di bilanciamento del carico dovrebbe fornire una connessione sicura al servizio utilizzando il certificato fornito al proxy Envoy.

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o di contattare l'AWSassistenza. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta le linee guida per la segnalazione delle AWS vulnerabilità.