Panoramica
Sicurezza delle API significa proteggere l'integrità delle API, sia quelle di cui sei proprietario che quelle di altri fornitori e che utilizzi. Ma cosa significa esattamente?
L'Internet of Things (IoT), ovvero la potenza di elaborazione che connette ogni nostro oggetto di utilizzo quotidiano, è un concetto di cui, con molta probabilità, tutti abbiamo sentito parlare. Una cena improvvisata non ci trova più impreparati. Grazie all'IoT possiamo collegare il telefono al frigorifero e sapere esattamente cosa comprare al supermercato quando usciamo dal lavoro. Sei invece un esperto dell'IoT se fai parte di un team DevOps, che usa microservizi e container per compilare e distribuire le applicazioni esistenti e cloud native in modo rapido e iterativo. I microservizi e i container comunicano tra loro usando soprattutto le API, esattamente come i sistemi e le applicazioni. L'integrazione e l'interconnettività sono diventati elementi sempre più essenziali e altrettanto significativo è il ruolo delle API.
Perché la sicurezza delle API è così importante?
Grazie alle API le aziende connettono i servizi e trasferiscono i dati. API danneggiate, esposte o oggetto di attacchi informatici sono la causa di gravi violazioni di dati che rendono di pubblico dominio dati sensibili come informazioni mediche, finanziarie e personali. Occorre comunque ricordare che i dati non sono tutti uguali e che pertanto non tutti richiedono lo stesso livello di protezione. Il tipo di dati trasmessi determina il tuo approccio alla tutela delle API.
La tua API si connette a un'applicazione di terzi? Cerca di capire in che modo quell'applicazione ritrasmette le informazioni in rete. Il fatto che qualcuno scopra cosa tieni in frigorifero forse non ti preoccupa più di tanto, ma se qualcuno usasse la stessa API per monitorare la tua posizione sarebbe più allarmante.
Cos'è la sicurezza delle API web? Sicurezza delle API REST e SOAP a confronto.
La sicurezza delle API web si occupa del trasferimento di dati attraverso API collegate a Internet. OAuth (Open Authorization) è lo standard open che regola la delega all'accesso, consentendo agli utenti di concedere a terzi l'accesso alle risorse web senza dover fornire delle password. OAuth è, in pratica, lo standard tecnologico che ti permette di condividere un video sul tuo social network preferito premendo semplicemente il pulsante "condividi".
La maggior parte delle implementazioni di API si divide in REST (Representational State Transfer) e SOAP (Simple Object Access Protocol).
Le API REST usano il protocollo HTTP e supportano la crittografia Transport Layer Security (TLS). TLS è uno standard che consente di mantenere privata una connessione Internet e che controlla che i dati inviati tra due sistemi, ad esempio due server o tra un server e un client, siano crittografati e non modificati. Questo standard impedisce a un hacker di leggere e di modificare le informazioni relative alla tua carta di credito sottraendole a un sito web. Se l'URL di un sito web inizia con "HTTPS" (Hyper Text Transfer Protocol Secure) significa che è protetto con TLS.
Le API REST usano anche JavaScript Object Notation (JSON), un formato file che semplifica il trasferimento dei dati tramite browser web. Le API REST, a differenza delle API SOAP che non usano HTTP e JSON, sono molto più rapide perché non hanno bisogno di archiviare o raggruppare i dati.
Le API SOAP usano Web Services Security (WS Security). protocolli integrati che definiscono un set di regole basato sulla riservatezza e sull'autenticazione. Le API SOAP supportano set definiti dai due principali organismi di normalizzazione internazionali, l'Organization for the Advancement of Structured Information Standards (OASIS) e il World Wide Web Consortium (W3C). Per verificare l'autenticazione e l'autorizzazione adottano una combinazione di crittografia XML, firme XML e token SAML. Al maggiore livello di sicurezza che offrono le API SOAP corrisponde però una maggiore complessità gestionale. È proprio per questo motivo che la scelta delle API SOAP è consigliata alle organizzazioni che trattano dati sensibili.
Quali sono le prassi di sicurezza delle API più comuni e più efficaci?
In genere, si preferisce affidare i propri risparmi a un'entità sicura che adotti metodi separati di autorizzazione e autenticazione dei pagamenti, anziché custodirli sotto al materasso. La sicurezza delle API funziona in modo molto simile. Occorre un ambiente sicuro che disponga di criteri di autenticazione e autorizzazione.
Queste sono alcune delle prassi più comuni che contribuiscono a irrobustire la sicurezza delle tue API:
- Implementa i token. Definisci delle identità affidabili e quindi controlla l'accesso ai servizi e alle risorse assegnando loro dei token.
- Adotta la crittografia e le firme. Crittografa i tuoi dati usando un metodo come TLS (leggi sopra). Per assicurarti che chi sta decrittografando e modificando i tuoi dati sia un utente autorizzato, richiedi la firma.
- Identifica le vulnerabilità. Tieni costantemente monitorati il tuo sistema operativo, la tua rete, i tuoi driver e le tue API. Controlla il funzionamento di tutti i componenti e individua eventuali vulnerabilità che potrebbero essere sfruttate per accedere alle tue API. Avvaliti di sniffer per rilevare la presenza di problemi di sicurezza e tenere traccia delle perdite di dati.
- Adotta processi basati su quote e throttling. Applica delle quote al numero di chiamate delle API per monitorarne la cronologia d'uso. Se le chiamate sono superiori alla media, potrebbe essersi verificata una violazione o un errore di programmazione (che causa, ad esempio, un ciclo infinito di chiamate). Crea delle regole di throttling per proteggere le API da picchi e attacchi Denial-of-Service.
- Usa un gateway API. I gateway API sono il principale punto di coordinamento del traffico API. Oltre ad autenticare il traffico, un gateway efficace ti permette anche di controllare e analizzare le modalità di utilizzo delle API.
Gestione e sicurezza delle API
In ultima analisi, spesso per garantire la sicurezza delle API è necessario che siano gestite in maniera ottimale. Molte piattaforme di gestione delle API supportano tre tipologie di schemi di sicurezza:
- Una chiave API composta da una singola stringa di token, ovvero un piccolo dispositivo hardware che fornisce informazioni di autenticazione univoche.
- Autenticazione di base (ID APP/Chiave APP) composta da due stringhe di token, ovvero nome utente e password.
- OpenID Connect (OIDC), un semplice livello di identità in aggiunta al framework OAuth che verifica l'identità dell'utente ottenendo informazioni di base sul profilo e usando un server di autenticazione.
Per determinare la scelta del gestore API, è fondamentale conoscere il tipo e il numero di schemi di sicurezza che è in grado di gestire e disporre di una strategia di adozione delle prassi per la sicurezza delle API, come quelle indicate sopra.
Perché scegliere Red Hat per la gestione e la sicurezza delle API
Red Hat ti aiuta a prevenire le violazioni di dati consolidando i tuoi sistemi di sicurezza. L'efficacia delle API è garantita solo se sono protette Red Hat pubblica un rapporto annuale sui rischi per la sicurezza dei prodotti Red Hat, che descrive in dettaglio le vulnerabilità della sicurezza globale che interessano il software aziendale e le soluzioni Red Hat per i nostri prodotti. Molto dipende dall'attuazione di misure di sicurezza continue, ovvero porre le domande giuste, sapere quali aree richiedono attenzione e utilizzare un gestore API affidabile. E noi siamo qui per questo.
In Red Hat, consigliamo l'uso del pluripremiato Red Hat 3scale API Management, che include:
- Un gestore API che si occupa della gestione di API, applicazioni e ruoli degli sviluppatori
- Un gestore del traffico (un gateway API) che applica i criteri stabiliti dal gestore API
- Un hub di provider di identità (IDP) che supporta un'ampia gamma di protocolli di autenticazione
Red Hat 3scale API Management decodifica i token con marca temporale in scadenza a livello del gateway API, controlla che l'identificazione del client sia valida e conferma la firma usando una chiave pubblica.