Background: stiamo integrando due applicazioni web. L'altra, l'applicazione A, è un servizio Internet accessibile pubblicamente, fornito da una terza parte e che offre API di servizi Web con le quali ci integreremo. L'altra, l'applicazione B, è una vecchia applicazione legacy (ish) ospitata in una intranet aziendale. Al momento, l'applicazione B non è accessibile da Internet. È un sistema abbastanza grande e espone molte API aperte che sono pensate per integrazioni di sistema rigorosamente all'interno della intranet. Non possiamo permetterci di esporre queste API per essere accessibili da Internet (intenzionalmente o per caso). Controlliamo l'applicazione B e possiamo implementare le nuove funzionalità e le API relative alla nuova integrazione, tuttavia, per favore.
Ho fatto qualche ricerca, cercando di trovare la soluzione più appropriata per queste sfide alla sicurezza. Alcune fonti suggeriscono che un proxy di sicurezza del servizio Web (o un gateway di sicurezza come alcuni lo chiamano) fornirebbe ulteriore sicurezza in un caso come questo. Questo proxy è apparentemente spesso ospitato in una DMZ. Il proxy eseguirà fondamentalmente le funzioni di sicurezza richieste, come la crittografia / decrittografia dei messaggi, l'esecuzione di verifiche di autenticazione e verifica dei messaggi, l'auditing, ecc. Capisco che un approccio come questo è più ragionevole quando si integrano le applicazioni esistenti dove le comunicazioni delle applicazioni sono al momento non sicuro, ma l'integrazione dovrebbe essere implementata senza dover modificare le applicazioni stesse. Tuttavia, direi che il vantaggio principale di un proxy nella nostra situazione (quando ci sono solo 2 applicazioni) sarebbe solo esporre l'API limitata nell'applicazione B che è necessaria per l'integrazione all'esterno e nascondere tutto il resto. Alcuni vantaggi collaterali potrebbero essere il fatto che offra del lavoro che altrimenti ricadrebbe sull'applicazione B (come crittografia, convalida dei messaggi, rilevamento di possibili attacchi, ecc.) E potrebbe fornire una protezione aggiuntiva per gli attacchi DoS. Le mie interpretazioni sono corrette?
La vera domanda è, quale sarebbe il modo più sicuro per rendere l'API creata per l'integrazione accessibile dall'esterno e impedire l'accesso a qualsiasi altra cosa nell'applicazione B? Un proxy di sicurezza sarebbe un ragionevole aggiunta per migliorare la sicurezza dell'applicazione B (nei modi che ho descritto o in altri modi) o è sufficiente un'integrazione diretta punto-punto? Quali altri approcci potrebbero essere ragionevoli? Gli aspetti di sicurezza qui sono di primaria importanza, ma vorrei naturalmente evitare l'eccesso di ingegneria.