Risoluzione dei problemi di sicurezza di App - 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

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

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

Sintomi

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 unHTTP 503codice di risposta e 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 log del processo proxy Envoy per aiutarti a diagnosticare il problema. Per ulteriori informazioni, consulta la pagina Abilita la registrazione del debug di Envoy negli ambienti di preproduzione Monitora la connettività Envoy Proxy con il pannello di controllo App Mesh . Utilizza il seguente elenco per determinare la causa dell'errore di connessione:

  • Assicurati che la connettività al backend abbia successo escludendo gli errori menzionati inUnable to end-connettersi a un servizio virtuale.

  • Nei log del processo 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 pacchetto di attendibilità delle policy del client TLS.

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

    • Il nome alternativo 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 nel tuo pacchetto di fiducia per le politiche client TLS e che soddisfi i criteri definiti inTransport Layer Security (TLS).

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta laAWSlinee guida per la segnalazione di.

Impossibile connettersi a un servizio virtuale di back-end quando l'applicazione ha origine TLS

Sintomi

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

Risoluzione

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

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta laAWSlinee guida per la segnalazione di.

Impossibile affermare che la connettività tra i proxy Envoy stia utilizzando TLS

Sintomi

L'applicazione ha abilitato la terminazione TLS sul nodo virtuale o sul listener del gateway virtuale o l'origine TLS sulla politica del client TLS back-end, ma non è possibile affermare che la connettività tra i proxy Envoy si verifichi durante una sessione negoziata TLS.

Risoluzione

I passaggi definiti nella presente risoluzione utilizzano l'interfaccia di amministrazione Envoy e le statistiche di Envoy. Per assistenza nella configurazione di questi, consultaAbilita l'interfaccia di amministrazione del proxy EnvoyeAbilita Envoy DogStatsIntegrazione D per l'offload metrico. I seguenti esempi di statistiche utilizzano l'interfaccia di amministrazione per motivi di 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 sottocertificates[].cert_chainper il certificato utilizzato nella terminazione 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 seguenti comandi e output di esempio.

      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 l'archivio di fiducia 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 sottocertificates[].ca_certsper 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 back-end sia esattamente uguale al 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 non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta laAWSlinee guida per la segnalazione di.

Risoluzione dei problemi relativi a TLS con Elastic Load Balancing

Sintomi

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 integrità della connettività e 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 qualsiasi configurazione errata. Segui i passaggi indicati sopra nellaImpossibile connettersi a un servizio virtuale di backend con una policy client TLS.

  • Per il load balancer, è necessario esaminare la configurazione delTargetGroup:

    • Assicurarsi che ilTargetGroupla porta corrisponde alla porta listener definita dal nodo virtuale.

    • Per gli Application Load Balancer che originano connessioni TLS tramite HTTP al servizio, assicuratevi cheTargetGroupil protocollo è impostato suHTTPS. Se vengono utilizzati controlli sanitari, assicurati cheHealthCheckProtocolè impostato su una impostazioneHTTPS.

    • Per i Network Load Balancer che originano connessioni TLS tramite TCP verso il tuo servizio, assicurati cheTargetGroupil protocollo è impostato suTLS. Se vengono utilizzati controlli sanitari, assicurati cheHealthCheckProtocolè impostato su una impostazioneTCP.

      Nota

      Eventuali aggiornamenti aTargetGrouprichiedono la modifica delTargetGroupnome.

Se questa configurazione è corretta, il load balancer dovrebbe fornire una connessione sicura al servizio utilizzando il certificato fornito al proxy Envoy.

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport. Se ritieni di aver trovato una vulnerabilità di sicurezza o hai domande sulla sicurezza di App Mesh, consulta laAWSlinee guida per la segnalazione di.