CyberArk Glossary >

Cosa significa DevOps?

DevOps è un termine utilizzato per descrivere un insieme di pratiche, strumenti e filosofie culturali che riuniscono lo sviluppo software (Dev) e le operazioni IT (Ops) per accrescere le capacità di un’organizzazione di proporre applicazioni e servizi ad alta velocità.

I metodi DevOps consentono di offrire nuove funzionalità applicative con maggiore frequenza. L’infrastruttura cloud elastica è in grado di soddisfare anche i picchi di domanda grazie a processi di auto-scaling che fanno intervenire nuove risorse di elaborazione (macchine o container virtuali) e implementano più istanze di un’applicazione secondo necessità. Le organizzazioni pagano solo per la quantità di elaborazione richiesta.

Molte organizzazioni aziendali in tutto il mondo stanno orientandosi verso metodologie DevOps agili per eliminare i compartimenti stagni sia funzionali che amministrativi e automatizzare la gestione del cambiamento e della configurazione, nonché i processi di implementazione. In ultima analisi, l’approccio DevOps aiuta le organizzazioni ad accelerare il time-to-market, migliorare la qualità dei prodotti, eliminare le inefficienze, velocizzare la trasformazione digitale e aumentare la reattività verso le necessità dei clienti.

Cosa significa CI/CD?

Realizzare una fusione tra il comparto di sviluppo e quello operativo favorendo una maggiore collaborazione tra i reparti consente alle metodologie DevOps di ridurre i cicli di sviluppo maggiormente allineati con gli obiettivi aziendali. Grazie all’integrazione continua (Continuous Integration, o CI) gli sviluppatori ‘fondono’ le modifiche al codice in un repository più volte al giorno, e tali modifiche vengono automaticamente integrate nelle build. L’approccio dell’erogazione continua (Continuous Delivery, o CD) richiede che il codice sia sempre in uno stato tale da poter essere implementato in produzione in qualsiasi momento, con la semplice pressione di un pulsante.

Sfide per la sicurezza dell’approccio DevOps

Nonostante i numerosi vantaggi, l’approccio DevOps presenta nuovi rischi e cambiamenti culturali, in grado di generare sfide per la sicurezza tali da non poter essere affrontate dalle soluzioni e dalle pratiche convenzionali. Tali metodologie tradizionali sono spesso troppo lente, costose o complesse per supportare l’erogazione e implementazione automatizzata del software nel cloud o come container. Queste sfide includono:

Le credenziali privilegiati utilizzate in DevOps vengono prese di mira dagli aggressori informatici. Una delle principali sfide alla sicurezza negli ambienti DevOps è la gestione degli accessi privilegiati. I processi DevOps richiedono l’utilizzo di credenziali privilegiate sia umane che non umane, che sono molto potenti ed estremamente esposte ai cyber-attacchi.

  • Accessi umani: Dati i processi ad alta velocità, gli addetti DevOps richiedono l’accesso privilegiato sia agli ambienti di sviluppo che a quelli di produzione.
  • Accessi non umani: Dati i processi automatizzati, le macchine e gli strumenti richiedono privilegi (o permessi) elevati per accedere alle risorse senza coinvolgere esseri umani. Ne sono un esempio:
    • Strumenti di automazione: Ansible, Puppet e Chef
    • Strumenti CI/CD: Jenkins, Azure DevOps e Bamboo
    • Strumenti di gestione dei container: Docker e Linux Containers (LXC)
    • Strumenti di orchestrazione dei container: Kubernetes, Red Hat OpenShift, Pivotal, Cloud Foundry

Gli asset Tier Zero, come Ansible e Jenkins, hanno accesso a credenziali utilizzate da molti altri strumenti.

Una volta ottenute le credenziali privilegiate, gli aggressori dispongono dell’accesso pieno alle pipeline DevOps, ai database più sensibili, o addirittura all’intero cloud di un’organizzazione. Gli aggressori ne sono consapevoli, e sempre più prendono di mira le credenziali privilegiate, tra cui password, chiavi di accesso, chiavi SSH e token, nonché altri tipi di segreti come i certificati, le chiavi di crittografia e le chiavi API. Gli aggressori possono sfruttare le credenziali non protette negli ambienti DevOps per il cryptojacking, le violazioni dei dati o la distruzione di proprietà intellettuali.

Gli sviluppatori sono focalizzati sulla velocità, non sulla sicurezza. Concentrati come sono sulla produzione sempre più veloce di codice, i team DevOps spesso adottano pratiche poco sicure che sfuggono ai team di sicurezza. Tali pratiche possono includere l’incorporamento di segreti e credenziali nelle applicazioni e nei file di configurazione, il riutilizzo di codice di terzi senza averlo verificato a fondo, l’adozione di nuovi strumenti senza valutarne possibili problematiche di sicurezza, l’insufficiente protezione di strumenti e infrastrutture DevOps.

Approcciarsi alla gestione dei segreti basandosi sugli strumenti crea varchi di sicurezza. Gli strumenti DevOps hanno spesso alcune funzioni incorporate per la protezione dei segreti. Tuttavia, tali funzioni non facilitano l’interoperabilità e la condivisione dei segreti tra strumenti, cloud e piattaforme mantenendo condizioni di sicurezza. Spesso, i team DevOps utilizzano le funzioni incorporate di ciascun singolo tool per gestire i segreti. Questo approccio può rendere più difficile la protezione adeguata dei segreti, poiché non è possibile monitorarli né gestirli con coerenza.

Passaggi per aumentare la sicurezza DevOps nella tua organizzazione

Di seguito sono descritti i passaggi che alcune organizzazioni spesso attuano per ottenere la sicurezza DevOps richiesta affrontando nel contempo il rischio degli accessi privilegiati e mantenendo comunque l’allineamento alla cultura e alle metodologie DevOps:

  • Istanziare la policy di sicurezza come codice. Una pietra angolare dell’approccio DevOps è il concetto di “Infrastruttura come codice” (a volte anche detto “infrastruttura immutabile”), che soppianta il metodo tradizionale di amministrazione e configurazione manuale dei server e del software. Applicando questo concetto alla sicurezza – istanziando e gestendo le policy di sicurezza come codice – le organizzazioni possono eliminare i processi di configurazione manuali, che sono molto impegnativi e più esposti a errori.
  • Separare chiaramente i compiti. In un team DevOps, è richiesta una definizione ben chiara e distinta dei ruoli e delle responsabilità:
    • Gli sviluppatori devono focalizzarsi sulla creazione di applicazioni che stimolino i risultati aziendali.
    • Le operazioni IT devono focalizzarsi sulla creazione di un’infrastruttura affidabile e scalabile.
    • La sicurezza deve focalizzarsi sulla protezione degli asset e dei dati, mitigando i rischi.

Le interazioni tra ciascun gruppo possono essere codificate in una policy di sicurezza scritta. Ad esempio, gli sviluppatori creano una policy di sicurezza che dichiara quali privilegi richiedano le loro applicazioni o servizi. Gli addetti alla sicurezza quindi esaminano la policy di sicurezza e la approvano, dopodiché gli addetti alle operazioni verificano che l’implementazione dell’applicazione proceda come previsto.

  • Integrare la sicurezza nelle pratiche CI/CD. Troppo spesso i team DevOps prestano meno attenzione alla sicurezza; se ne tengono conto, questo avviene solo in un secondo tempo. Questo significa che eventuali cambiamenti richiesti all’ultimo minuto per affrontare le vulnerabilità finiscono per ritardare il rilascio. Le organizzazioni più lungimiranti utilizzano la pianificazione avanzata del flusso di lavoro e strumenti di gestione come Kanban per modellare i flussi, accelerare lo sviluppo ed eliminare le inefficienze. Inoltre, sempre più team di sicurezza de-costruiscono le applicazioni in più microservizi per semplificarne le revisioni di sicurezza e le modifiche.
  • Un approccio proattivo alla sicurezza. È necessario stabilire pratiche di sicurezza robuste per l’intero ciclo di vita dell’applicazione, per ridurre le vulnerabilità, migliorare la condizione di sicurezza e mitigare i rischi. Le buone pratiche d’igiene e sicurezza per DevOps includono:
    • Affrontare i requisiti di sicurezza e le possibili vulnerabilità in modo olistico, poiché agli attaccanti potrebbe bastare una sola vulnerabilità per raggiungere il proprio obiettivo.
    • Ridurre la concentrazione di privilegi negli strumenti di automazione delle build e verificare che i repository di codice non espongano segreti.
    • Preservare i secret utilizzati da macchine e persone (password, certificati, chiavi API, token, e chiavi SSH) in una cassaforte sicura ad alta disponibilità, rimuovendoli da codice sorgente, laptop degli sviluppatori e sistemi di storage accessibili dagli utenti. Ruotare i segreti regolarmente per minimizzare l’esposizione.
    • Applicare il principio dei privilegi minimi per garantire che macchine e persone possano accedere solo alle risorse delle quali non possono assolutamente fare a meno.
    • Stabilire uno scenario di riferimento per i modelli di utilizzo normale, che consenta di identificare le anomalie e rendere tracciabili gli utenti malintenzionati per prevenire il furto di credenziali.
    • Creare un ambiente nel quale ognuno debba rendere conto di quello che fa, registrando l’utilizzo delle credenziali. Ad esempio, per gli utenti umani, si prenda in considerazione la registrazione dei tasti premuti oppure di un video per ogni sessione.
    • Dare a ogni macchina un’ identità univoca per verificare e monitorare i suoi accessi ai segreti.
    • Eseguire scansioni delle vulnerabilità e condurre test di penetrazione, per migliorare la postura di cyber-sicurezza.
    • Educare gli sviluppatori sulle minacce e le migliori pratiche per la sicurezza.
    • Favorire una collaborazione sempre più stretta tra i team di sicurezza e gli sviluppatori.
  • Automazione dei processi di sicurezza. DevOps si avvale dell’automazione per accelerare la gestione del ciclo di vita delle applicazioni ed eliminare la latenza umana. Analogamente, la sicurezza per DevOps deve sfruttare l’automazione per minimizzare l’interazione umana e gli interventi manuali. Ad esempio, grazie alla rotazione automatica dei segreti – password, chiavi, certificati – le organizzazioni possono impedire agli aggressori di accedere agli strumenti DevOps, alle chiavi di accesso o ai sistemi per un periodo prolungato. Le procedure di sicurezza automatiche possono inoltre essere utilizzare in modo reattivo, se viene rilavata una violazione. Ad esempio, le sessioni privilegiate possono essere automaticamente terminate e le credenziali ruotate non appena viene rilevata una violazione di sicurezza.

Maggiori informazioni sulla sicurezza per DevOps

ALTRE VOCI DEL GLOSSARIO