Quali controlli di sicurezza dovrebbero essere nel gateway API e cosa nei servizi web?

3

Oggigiorno i servizi web vengono utilizzati molto e un "nuovo" tipo di prodotto è nelle strade: il gateway API. Questa soluzione è pubblicata su Internet, riceve le richieste di servizi web da parti esterne e app mobili, fa un po 'di sicurezza (autenticazione, autorizzazione, alcuni prodotti fanno convalida di input, sicurezza XML e JSON, ecc.) E quindi la richiesta viene passata al webservice interno.

Quali controlli di sicurezza dovrebbero essere eseguiti nel gateway API e quali controlli di sicurezza dovrebbero essere eseguiti nel servizio web?

Ad esempio,

  • Dove dovrebbe essere eseguita la convalida degli input?

  • L'autenticazione?

  • L'autorizzazione? Sicurezza della logica aziendale?

Inoltre, una persona oggi mi ha chiesto se dovessimo inserire il gateway API tra un'applicazione web nella nostra DMZ e il nostro bus interno ... Ho risposto che in questo scenario tutta la sicurezza necessaria doveva essere eseguita dall'applicazione web in modo che L'API GW non è necessaria ... Ho ragione?

    
posta Eloy Roldán Paredes 03.09.2016 - 14:03
fonte

1 risposta

5

Un gateway API è responsabile della gestione dell'interfaccia pubblica presentata ai clienti esterni. Dovrebbe gestire problemi di basso livello come:

  • conformità del protocollo
  • lista nera
  • rate limit
  • quote
  • delle versioni
  • richiesta di normalizzazione

Può interfacciare con:

  • un sistema di scoperta per sapere quali servizi web interni dovrebbero gestire quali endpoint pubblici
  • un sistema di routing per sapere come tradurre percorsi pubblici verso percorsi interni
  • un sistema di autorizzazione per sapere come tradurre i token API esterni alle credenziali di autorizzazione interne, in modo che i singoli servizi web non debbano ripetutamente chiedere loro stessi.

In breve dovrebbe trattare problemi comuni su tutta l'area pubblica dell'API. Non dovrebbe avere alcuna conoscenza dei dettagli specifici della logica di business di un particolare servizio web o di una particolare rotta.

I singoli servizi Web devono convalidare i propri input. Solo i singoli servizi sanno quali parametri sono validi e quali tipi possono assumere tali parametri. Tuttavia, se i servizi Web utilizzano i payload JSON, il gateway API può eseguire la convalida JSON di base e forse persino controllare i payload contro gli schemi JSON per loro in base all'URL.

Un gateway API può gestire l'autenticazione, in quanto di solito può essere collegato a un provider di identità, ha conoscenza di vari protocolli di autenticazione e può essere configurato per fornire i token di autorizzazione. Sebbene spesso le persone abbiano schemi di autenticazione e flussi di lavoro propri che vanno oltre ciò che un gateway API fornisce fuori dalla scatola.

Un gateway API dovrebbe certamente convalidare i token di autorizzazione forniti da chiamanti esterni e dovrebbe aiutare a semplificare alcuni aspetti del controllo degli accessi affrontati dai singoli servizi Web migliorando i payload con ruoli o diritti a cui il token di autorizzazione ha diritto. Tuttavia, i singoli servizi sono ancora responsabili dei controlli granulari di tali ruoli e della sicurezza della logica aziendale.

Un gateway API è spesso configurato a bordo o in una DMZ, poiché si trova ad affrontare un traffico non affidabile e ha la responsabilità di trasformarlo in una forma più sintatticamente normalizzata. I servizi Web sono ancora responsabili della semantica.

Se un'applicazione Web che genera HTML utilizza le API, è necessario decidere se l'applicazione utilizza solo le API pubbliche o anche le API interne direttamente dai servizi Web interni. Ci sono pro e contro per entrambe le parti. L'architettura emerge da questa decisione.

    
risposta data 03.09.2016 - 16:54
fonte

Leggi altre domande sui tag