Che cosa sono le applicazioni serverless? La risposta è semplice: sono applicazioni cloud native che possono essere sviluppate e gestite senza dover gestire l’infrastruttura server di supporto necessaria, connotate da microservizi mirati che svolgono operazioni specifiche in concomitanza con il verificarsi di determinate condizioni.
Applicazioni serverless: facili fino a un certo punto
In futuro tutto il cloud sarà serverless, lo diceva agli inizi del 2020 Dave Bartoletti di Forrester Research che sicuramente proprio nel serverless individuava uno dei modelli preferiti dagli sviluppatori per condurre la propria attività.
In generale, nell’era del cloud, la familiarità con le logiche dell’As a Service e del pay per use è cresciuta notevolmente. Ma, avvertono gli specialisti, non è tutto oro quello che luccica: pianificare le applicazioni serverless per cercare quelle più utili al proprio business è solo una parte dell’attività.
L’implementazione di un’Infrastructure as a Service, ad esempio, richiede comunque di dover seguire le dinamiche associate alla gestione delle patch, di disegnare i percorsi delle reti virtuali, di fornire un’appliance di sicurezza sottostante, il tutto risolvendo una serie di altre attività complesse esattamente come se le applicazioni si trovassero ospitate in un data center on premise.
I trend del serverless e del native cloud
Utilizzare le applicazioni serverless è l’ultimo trend legato all’evoluzione del cloud. È vero che non è più necessario gestire le infrastrutture ed è possibile concentrarsi sulla realizzazione di applicazioni migliori. Ma si tratta di un’attività molto più impegnativa di quanto si possa immaginare.
Le specifiche necessarie a garantire la sicurezza delle applicazioni serverless, infatti, sono diventate più sofisticate rispetto al passato. Il che riporta in primo piano il tema della sicurezza. Non solo degli accessi ma anche delle prestazioni. Il tutto definito attraverso una strategia capace di ragionare con largo anticipo rispetto ai rischi.
Application serverless non significa applicazioni prive di server. Le macchine ci sono, ma risiedono in ambienti che non devono essere gestiti dagli sviluppatori.
Chi si occupa di programmazione, dunque, non dovrà curarsi dello stato dei server o dei sistemi operativi, capire come funzionano o tenere conto di aggiornamenti o segnalazioni relativi a ciò che può avvenire al di sotto del livello applicativo. Scalabilità e interfacciabilità con hardware specifici o con servizi di middleware sottostanti sono gestiti attraverso un ambiente che offre un’unica soluzione di continuità e in modalità trasparente.
Come funzionano le applicazioni serverless
In ambienti come Google Cloud Functions o AWS Lambda , la funzionalità applicativa viene attivata tramite eventi. L’applicazione è progettata per rispondere ai suddetti eventi, rilasciando porzioni funzionali di codice di piccole dimensioni. L’ambiente si occupa di fornire la funzionalità in maniera scalabile in modo da rispondere alla domanda. Il vantaggio? Come per tutte le formule in cloud, si paga solo per ciò che si utilizza (in questo caso singole funzionalità invece di un’intera applicazione, tanto da essere stato recentemente coniato il termine Functions as a Service).
Differenza col Paas
Qual è la differenza tra queste piattaforme e “normali” PaaS? Concettualmente poco, ma spesso anche in un contesto PaaS è comunque necessario specificare a livello previsionale l’utilizzo delle risorse; la scalabilità quindi non è del tutto trasparente come invece lo è nel FaaS.
Analogamente, la configurazione di servizi specifici legati a un contratto di PaaS (come possono essere un database o un servizio di posta) potrebbero richiedere una conoscenza esplicita di tutta l’infrastruttura sottostante. Quindi si potrebbe dire che il FaaS è una sorta di PaaS++.
La sicurezza delle applicazioni serverless: 4 cose da sapere
Mettere in sicurezza un’applicazione serverless non è come mettere in sicurezza un’applicazione tradizionale monolitica o presidiare un qualsiasi altro rilascio in cloud. Riassumiamo i 4 principali punti di attenzione.
È importante comprendere il livello di minaccia
La prima cosa da sapere è che la capacità di interagire con qualsiasi cosa al di sotto del livello 7 (Application layer dello standard di rete ISO/OSI) è praticamente inesistente. Questo significa che non è possibile introdurre un’appliance per la rilevazione delle intrusioni sulla rete virtuale o installare strumenti di scansione malware sul sistema operativo sottostante. Ecco perché è molto importante comprendere il modello di minaccia associato alla logica che si sta implementando in modo completo e concreto.
La robustezza del codice
In secondo luogo è necessario assicurarsi della robustezza del codice che si sta sviluppando. Gli ultimi attacchi hanno confermato come la sicurezza delle applicazioni sia un aspetto che non deve essere mai sottovalutato dai programmatori.
Gli injection attack, ad esempio, sono ancora in cima alla lista dei problemi registrati a livello applicativo. Se è vero che i bug ci sono sempre stati, è anche vero che la capacità di garantire un’applicazione serverless è direttamente correlata alla capacità di comprendere la logica della programmazione, andando a rimuovere o a mitigare i problemi potenziali, mantenendo alta la qualità dei codici e monitorando l’ambiente. Come ribadiscono gli esperti, non è questione di scienza pura, ma di vera e propria disciplina.
Modellazione delle minacce
Terzo punto è la modellazione delle minacce, altro aspetto chiave della sicurezza. Questa attività, che aiuta a rendere più robuste le applicazioni, ha ancora più valore in un contesto serverless. Consente di mappare e analizzare sistematicamente i punti di interazione tra le varie componenti. Produce anche una mappa dei flussi di dati come parte integrante del processo. Sebbene non si possa avere la massima visibilità nella meccanica sottostante di memorizzazione o di calcolo dei dati, una mappa virtuale di come gli elementi dell’applicazione interagiscono è comunque sempre utile. Al di là dell’analisi del modello di pericolo.
È così possibile considerare quali opzioni siano disponibili per isolare la logica applicativa in modo da offrire maggiore visibilità o controllo delle operazioni. Sono stati quindi progettati strumenti per consentire di pacchettizzare alcune funzioni in modo tale da renderle trasparenti allo sviluppatore. Inoltre è possibile scegliere di implementare una strategia di clusterizzazione in autonomia, che può aiutare a trovare e filtrare gli injection attack.
Il monitoraggio
Come ultimo punto gli esperti ricordano sempre e comunque di prestare attenzione al monitoraggio. Oltre al controllo degli accessi e delle identità, bisogna tenere conto di tutte le anomalie che non sono conformi alle regole operative del business.
In conclusione, le applicazioni serverless possono essere strumenti potenti, ma garantire la sicurezza di questi strumenti non è sempre così facile. Per i team di sviluppo si tratta di un’occasione importante per far crescere lo skill del personale. E questo, non solo andando a costruire delle nuove abilità, ma anche andando ad aumentare la maturità delle applicazioni aziendali sviluppate.