Proteggere le comunicazioni end-to-end per le app Spring Boot in un ambiente Zero Trust

Questo articolo descrive come proteggere le comunicazioni end-to-end per le app Spring Boot in un ambiente Zero Trust. È possibile proteggere le comunicazioni end-to-end o terminare la sicurezza a livello di trasporto in qualsiasi punto di comunicazione per le app Spring Boot. È anche possibile automatizzare il provisioning e la configurazione per tutte le risorse di Azure necessarie per proteggere le comunicazioni.

L'implementazione di comunicazioni sicure come parte dell'architettura della soluzione può risultare complessa. Molti clienti ruotano manualmente i certificati o creano soluzioni personalizzate per automatizzare il provisioning e la configurazione. Anche in questo caso, esiste ancora un rischio di esfiltrazione dei dati, ad esempio la copia o il trasferimento non autorizzato dei dati dai sistemi server. Con Azure Spring Apps, questi dettagli vengono gestiti automaticamente. Azure Spring Apps astrae la maggior parte della complessità, lasciando le comunicazioni sicure come opzioni configurabili e automatizzate nel servizio.

Proteggere le comunicazioni Internet

Il protocollo TLS/SSL stabilisce identità e attendibilità e crittografa le comunicazioni di tutti i tipi. TLS/SSL rende possibili comunicazioni sicure, in particolare il traffico Web che trasporta i dati commerciali e dei clienti.

È possibile usare qualsiasi tipo di certificato TLS/SSL. Ad esempio, è possibile usare certificati emessi da un'autorità di certificazione, certificati di convalida estesa, certificati con caratteri jolly con supporto per un numero qualsiasi di sottodomini o certificati autofirmato per ambienti di sviluppo e test.

Caricare la sicurezza dei certificati con Zero Trust

Zero Trust si basa sul principio di "non fidarsi mai, verificare sempre e senza credenziali". Zero Trust consente di proteggere tutte le comunicazioni eliminando i certificati sconosciuti e non gestiti. Zero Trust prevede l'attendibilità solo dei certificati condivisi verificando l'identità prima di concedere l'accesso a tali certificati. Per altre informazioni, vedere Zero Trust Guidance Center.

Per caricare in modo sicuro i certificati da Azure Key Vault, le app Spring Boot usano identità gestite e il controllo degli accessi in base al ruolo di Azure. Azure Spring Apps usa un'entità servizio provider e il controllo degli accessi in base al ruolo di Azure. Questo caricamento sicuro è basato sul provider JCA (Java Cryptography Architecture) di Azure Key Vault. Per altre informazioni, vedere Libreria client JCA di Azure Key Vault per Java.

Con Azure Key Vault è possibile controllare l'archiviazione e la distribuzione dei certificati per ridurre la perdita accidentale. Le applicazioni e i servizi possono accedere in modo sicuro ai certificati. Key Vault usa il controllo degli accessi in base al ruolo di Azure per bloccare l'accesso solo a coloro che richiedono l'accesso, ad esempio un amministratore, ma anche alle app, usando il principio dei privilegi minimi. Le applicazioni e i servizi eseguono l'autenticazione e l'autorizzazione, usando Microsoft Entra ID e il controllo degli accessi in base al ruolo di Azure, per accedere ai certificati. È possibile monitorare l'accesso e l'uso dei certificati in Key Vault tramite il relativo audit trail completo.

Proteggere le comunicazioni end-to-end o terminare TLS in qualsiasi momento

Come illustrato nel diagramma seguente, esistono diversi segmenti di comunicazione tramite i componenti seguenti:

  • Punti di accesso alla rete, ad esempio Frontdoor di Azure
  • gateway app Azure
  • F5 BIG-IP Local Gestione traffico
  • Gestione API di Azure
  • Apigee Gestione API app Spring Boot e sistemi back-end, ad esempio database, messaggistica e sistemi di eventi e cache delle app.

È possibile proteggere le comunicazioni end-to-end o terminare la sicurezza a livello di trasporto in qualsiasi punto di comunicazione per le app Spring Boot.

Diagramma che mostra l'architettura delle comunicazioni sicure end-to-end per le app Spring Boot.

Le sezioni seguenti descrivono questa architettura in modo più dettagliato.

Segmento 1: Proteggere le comunicazioni in Azure Spring Apps

Il primo segmento (segmento 1 nel diagramma) rappresenta le comunicazioni dai consumer al controller di ingresso in Azure Spring Apps. Questi consumer includono browser, telefoni cellulari, desktop, chioschi multimediali o punti di accesso alla rete come Frontdoor di Azure, gateway app Azure, Gestione traffico locali F5 BIG-IP, Gestione API di Azure e Apigee Gestione API.

Per impostazione predefinita, questo segmento è protetto usando un certificato TLS/SSL fornito da Microsoft per il *.azuremicroservices.io dominio. È possibile applicare il proprio certificato TLS/SSL in Azure Key Vault associando un dominio personalizzato all'app in Azure Spring Apps. Non è necessario alcun codice. Per altre informazioni, vedere Esercitazione: Eseguire il mapping di un dominio personalizzato esistente ad Azure Spring Apps.

Segmento 2: Proteggere le comunicazioni dal controller di ingresso alle app

Il segmento successivo (segmento 2 nel diagramma) rappresenta le comunicazioni dal controller di ingresso di Azure Spring Apps a qualsiasi app in Azure Spring Apps. È possibile abilitare TLS/SSL per proteggere il traffico dal controller di ingresso a un'app che supporta HTTPS. Per altre informazioni, vedere Abilitare TLS da ingresso a app per un'applicazione.

Un'app Spring Boot può usare l'approccio di Spring per abilitare HTTPS oppure l'app può proteggere le comunicazioni usando Spring Boot Starter per i certificati di Azure Key Vault. Per altre informazioni, vedere Esercitazione: Proteggere le app Spring Boot usando i certificati di Azure Key Vault.

Sono necessari i tre passaggi di configurazione seguenti per proteggere le comunicazioni usando un certificato TLS/SSL da un insieme di credenziali delle chiavi di Azure. Non è necessario alcun codice.

  1. Includere la dipendenza Spring Boot Starter dei certificati di Azure Key Vault seguenti nel file pom.xml :

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId>
    </dependency>
    
  2. Aggiungere le proprietà seguenti per configurare un'app per caricare un certificato TLS/SSL da Azure Key Vault. Assicurarsi di specificare l'URI di Azure Key Vault e il nome del certificato.

    azure:
      keyvault:
        uri: ${KEY_VAULT_URI}
    
    server:
      ssl:
        key-alias: ${SERVER_SSL_CERTIFICATE_NAME}
        key-store-type: AzureKeyVault
    
  3. Abilitare l'identità gestita dell'app e quindi concedere all'identità gestita l'accesso "Get" e "List" all'insieme di credenziali delle chiavi di Azure. Per altre informazioni, vedere Abilitare l'identità gestita assegnata dal sistema per un'applicazione in Azure Spring Apps e certificato Controllo di accesso.

Segmento 3: Proteggere le comunicazioni dall'app al middleware gestito

Il segmento successivo (segmento 3 nel diagramma) rappresenta le comunicazioni da qualsiasi app al server di configurazione Spring Cloud gestito e al Registro di sistema dei servizi Spring Cloud in Azure Spring Apps. Per impostazione predefinita, questo segmento è protetto tramite un certificato TLS/SSL fornito da Microsoft.

Segmento 4: Proteggere le comunicazioni tra app

Il segmento successivo (segmento 4 nel diagramma) rappresenta le comunicazioni tra un'app e un'altra app in Azure Spring Apps. È possibile usare Spring Boot Starter dei certificati di Azure Key Vault per configurare l'app chiamante in modo che consideri attendibile il certificato TLS/SSL fornito da un'app denominata abilitata per HTTPS. L'app Spring Boot ricevitore può usare l'approccio di Spring per abilitare HTTPS oppure l'app può proteggere le comunicazioni usando l'utilità di avvio Spring Boot dei certificati di Azure Key Vault. Per altre informazioni, vedere Esercitazione: Proteggere le app Spring Boot usando i certificati di Azure Key Vault.

Segmento 5: Proteggere l'app alle comunicazioni di sistema esterne

Il segmento successivo (segmento 5 nel diagramma) rappresenta le comunicazioni tra un'app in esecuzione in Azure Spring Apps e sistemi esterni. È possibile usare Spring Boot Starter certificati di Azure Key Vault per configurare l'app in esecuzione in Azure Spring Apps per considerare attendibile il certificato TLS/SSL fornito da qualsiasi sistema esterno. Per altre informazioni, vedere Esercitazione: Proteggere le app Spring Boot usando i certificati di Azure Key Vault.

Caricare in modo implicito certificati TLS/SSL da Key Vault in un'app

Se il codice Spring, il codice Java o le librerie open source, ad esempio OpenSSL, si basano sulla catena JCA predefinita di JVM per caricare in modo implicito i certificati nell'archivio attendibilità di JVM, è possibile importare i certificati TLS/SSL da Key Vault in Azure Spring Apps e usare tali certificati all'interno dell'app. Per altre informazioni, vedere Usare certificati TLS/SSL nell'applicazione in Azure Spring Apps.

Caricare certificati TLS/SSL pubblici noti per i sistemi back-end

Affinché un'app comunichi ai servizi back-end nel cloud o nei sistemi locali, può richiedere l'uso di certificati TLS/SSL pubblici per proteggere la comunicazione. È possibile caricare i certificati TLS/SSL per proteggere le comunicazioni in uscita. Per altre informazioni, vedere Usare certificati TLS/SSL nell'applicazione in Azure Spring Apps.

Automatizzare il provisioning e la configurazione per la protezione delle comunicazioni

Usando un modello di Resource Manager, Bicep o Terraform, è possibile automatizzare il provisioning e la configurazione di tutte le risorse di Azure indicate in precedenza per proteggere le comunicazioni.

Creare soluzioni e comunicazioni sicure

Azure Spring Apps è un servizio completamente gestito per le applicazioni Spring Boot. Azure Spring Apps elimina la complessità dell'infrastruttura e della gestione del middleware Spring Cloud dagli utenti. È possibile concentrarsi sulla creazione della logica di business e consentire ad Azure di occuparsi del ridimensionamento dinamico, delle patch, della sicurezza, della conformità e della disponibilità elevata. Con alcuni passaggi, è possibile effettuare il provisioning di Azure Spring Apps, creare applicazioni, distribuire e ridimensionare le applicazioni Spring Boot e iniziare a proteggere le comunicazioni in pochi minuti.

Azure Spring Apps viene creato, gestito e supportato congiuntamente da Microsoft e VMware.

Passaggi successivi