Sicurezza serverless a supporto dei team di sviluppo che, man mano che le architetture DevOps e basate su microservizi diventano più diffuse, cercano di utilizzare servizi cloud più leggeri per distribuire i carichi di lavoro della programmazione. Una tecnologia comune utilizzata è l’elaborazione serverless, che scarica l’intero carico di lavoro (ovvero il contenitore e l’istanza del sistema operativo) sul backplane del provider.
Serverless computing: che cos’è e a cosa serve
Il serverless computing è un paradigma di distribuzione e progettazione delle applicazioni basato su eventi in cui le risorse computazionali vengono fornite sotto forma di servizi cloud scalabili. Nelle distribuzioni di applicazioni tradizionali, le risorse di elaborazione del server rappresentano costi fissi e ricorrenti, indipendentemente dalla quantità di lavoro di elaborazione effettivamente eseguita dal server. In una distribuzione informatica serverless, il cliente cloud paga solo per l’utilizzo del servizio, senza alcun costo associato ai tempi di inattività.
Serverless significa esternalizzare l’uso dei server
Il modello di elaborazione senza server non elimina i server, ma cerca di enfatizzare l’idea che le considerazioni sulle risorse di elaborazione possano essere spostate in background durante il processo di progettazione.
Gli sviluppatori possono inserire codice, creare applicazioni back-end, creare routine di gestione degli eventi ed elaborare dati, il tutto senza doversi preoccupare di server, macchine virtuali (VM) o risorse di elaborazione sottostanti. L’hardware e l’infrastruttura coinvolti, infatti, sono tutti gestiti dal provider e fruiti dagli sviluppatori in modalità pay per use.
Vantaggi e punti di attenzione di un’infrastruttura cloud serverless
L’approccio cloud serverless consente agli sviluppatori di creare app di microservizi che richiedono solo il caricamento e il funzionamento del codice dell’app all’interno dell’ambiente del fornitore cloud. Tuttavia, come per qualsiasi nuova implementazione tecnologica, il maggiore utilizzo dell’infrastruttura cloud serverless porta con sé dei rischi potenziali che i team di sicurezza devono valutare e affrontare. In occasione del RSA 2020 gli esperti hanno stilato una lista dei principali problemi di sicurezza senza server, offrendo indicazioni su come mitigarli al meglio.
Rischi di codifica negli ambienti serverless
La capacità di garantire un’applicazione serverless è direttamente correlata alla capacità di comprendere le logiche della programmazione, rimuovendo o mitigando i problemi potenziali, sia mantenendo alta la qualità dei codici che monitorando l’ambiente.
L’elaborazione serverless, in particolare, è soggetta a rischi relativi alla sicurezza della codifica. Ad esempio, l’esecuzione di codice dannoso può essere generata nell’ambiente serverless e rimanere residente in memoria per lunghi periodi di tempo. Anche i punti deboli intrinseci negli stessi ambienti serverless sono un problema in quanto possono anche facilitare l’esecuzione di codice in modalità remota.
Sicurezza serverless: attenzione al codice
Anche gli ambienti serverless sono soggetti a problemi di sicurezza del codice. Tuttavia, con la piattaforma host dei container in gran parte fuori dal perimetro, i team devono concentrarsi sulla protezione dell’input, del codice e dell’esecuzione. Quando si sviluppa una strategia per mitigare i rischi per la sicurezza serverless, le organizzazioni dovrebbero prima concentrarsi sulla revisione del codice statico. Alcuni fornitori di terze parti si integrano in ambienti serverless per eseguire la scansione del codice come, ad esempio, AWS Lambda. Molti rischi di codifica senza server si applicheranno indipendentemente da dove e come viene eseguito il codice, portando al verificarsi di alcune criticità:
- Iniezione di eventi. I difetti di iniezione possono ancora influenzare il codice e il modo in cui questo gestisce l’input. La convalida dell’input migliorata e la logica del livello di database predefinita, ad esempio le stored procedure, possono aiutare a risolvere questo problema.
- Autenticazione interrotta. Tra gli utenti di app serverless è importante promuovere l’uso dell’autenticazione forte e della definizione dei ruoli.
- Archiviazione segreta dell’app non sicura. Chiavi API, chiavi di crittografia e altri approcci secretati sono spesso coinvolti nell’esecuzione di funzionalità serverless. I team di sicurezza dovrebbero assicurarsi che gli sviluppatori utilizzino strumenti di gestione dei segreti consolidati e archivi di chiavi specifici per il cloud.
- Gestione impropria delle eccezioni. Gli sviluppatori devono poter garantire che gli errori e le eccezioni siano gestiti in modo appropriato, evitando che le tracce dello stack vengano esposte o visualizzate.
Problemi di identità e accesso in ambienti serverless
Un altro importante problema nell’ambito della sicurezza serverless è il controllo dei privilegi e dei permessi che dovrebbe essere implementato su tutte le applicazioni serverless con forte identità cloud integrando una gestione degli accessi (IAM).
Le organizzazioni devono ridurre al minimo le autorizzazioni con cui vengono eseguite le funzioni senza server, oltre alle autorizzazioni dei servizi che accedono alle funzioni senza server. Per i principianti, è bene registrare ogni evento API serverless, inclusi accesso, modifica o esecuzione, all’interno dell’ambiente cloud nativo. Questo può essere ottenuto con servizi come AWS CloudTrail o la suite operativa di Google Cloud (ex Stackdriver).
Più problemi di sicurezza senza server, offerte di servizi
Coding e IAM non sono gli unici due problemi di sicurezza serverless. Altre aree su cui concentrarsi sono legate alla configurazione: le impostazioni di distribuzione non sicure dovrebbero essere considerate e mitigate limitando l’utilizzo della memoria e possibili vettori di input senza server. L’ottimizzazione del timeout di esecuzione può aiutare a mitigare gli attacchi denial-of-service e l’esaurimento finanziario.
Esistono attualmente opzioni cloud native limitate per la protezione senza server. Per proteggere veramente il modello serverless, a un’organizzazione servirebbe un’analisi del codice statico completamente integrata, analisi della memoria per l’iniezione di buffer, scansione dinamica di input e comportamento e registrazione di tutte le attività, tra gli altri controlli di sicurezza. La maggior parte dei provider di servizi cloud offre solo la possibilità di definire elementi operativi, come la dimensione e l’utilizzo della memoria, la registrazione e le autorizzazioni sulle funzioni e sui servizi serverless stessi.
Gli strumenti a supporto della sicurezza serverless
Esistono alcuni strumenti che possono essere integrati per fornire maggiore visibilità nell’esecuzione serverless e alzare i livelli di sicurezza tra cui Check Point Protego e Dashbird. Le organizzazioni possono anche prendere in considerazione strumenti che aggiungono sicurezza alle fasi di integrazione continua / consegna continua e all’esecuzione nel cloud. Molti strumenti per la sicurezza dei container, come Palo Alto Prisma e Aqua, possono farlo. Ma i professionisti della sicurezza devono sapere anche come tutte queste offerte richiedono una significativa dedizione di risorse e probabilmente non gestiranno tutti i possibili casi d’uso