Maggio 2017

Volume 32 Numero 5

Il presente articolo è stato tradotto automaticamente.

DevOps - Conformità come codice con InSpec

Da Michael Ducy | Maggio 2017

La conformità alle normative è una realtà per ogni azienda. Allo stesso tempo, la pressione concorrenziale aumenta con l'avvento di innovativo nuove tecnologie e le aspettative dei clienti per i servizi digitali. È possibile per settori di recapitare i nuovi prodotti e servizi ad alta velocità e al contempo soddisfano ancora obblighi di conformità alle normative?

La risposta è sì La soluzione consiste nell'incorporare la conformità alle normative nella linea di produzione di software in modo analogo a quello che si incorporano altre caratteristiche, ad esempio la rigidità della cornice di automobili o tempo di risposta round trip in applicazioni per operazioni bancarie.

Rendendo conformità parte integrante del processo di distribuzione è possibile quando la conformità è espressa come codice. Così come la configurazione dei sistemi ha spostato un'infrastruttura come codice (ad esempio, PowerShell DSC o Chef), è possibile gestire la conformità utilizzando un linguaggio di programmazione.

InSpec è un progetto open source che consente di definire i requisiti di conformità in un linguaggio leggibile da persone e computer. Dopo aver codificato i tuoi requisiti, puoi eseguirli come test automatizzati per controllare i sistemi. InSpec fornisce un agente locale, nonché il supporto per testing completamente in modalità remota.

InSpec supporta un'ampia gamma di piattaforme diverse, da Windows a Linux. Figura 1 sono elencati alcuni di quelli più diffusi. (Un elenco completo delle piattaforme supportate sono reperibili sul sito Web InSpec al inspec.io.)

Figura 1 elenco delle piattaforme più comuni supportati da InSpec

Piattaforma Versioni
AIX 6.1, 7.1, 7.2
Mac OS X 10.9, 10.10, 10.11
Oracle Enterprise Linux 5, 6, 7
Red Hat Enterprise Linux (e varianti) 5, 6, 7
Solaris 10, 11
Windows 7, 8, 8.1, 10, 2008, 2008 R2, 2012, 2012 R2, 2016
Ubuntu Linux  
SUSE Linux Enterprise Server 11, 12
OpenSUSE 13.1, 13.2, 42.1
HP-UX 11.31

Il supporto multipiattaforma InSpec rende una soluzione completa per la gestione della conformità per l'intera infrastruttura. Poiché InSpec è un progetto open source, alcuni fornitori di sistemi operativi hanno contribuito il supporto per le proprie piattaforme. Ad esempio, ha contribuito IBM gran parte del supporto per il sistema operativo AIX.

Introduzione a InSpec

È facile iniziare a utilizzare InSpec. InSpec è incluso in Chef Development Kit (Chef DK) o pacchetti per un'ampia gamma di piattaforme è possibile scaricare dal sito di download di Chef all'indirizzo downloads.chef.io/inspec. Dopo avere scaricato il pacchetto e installato, è possibile iniziare la scrittura di regole di conformità. Si noti che un nome alternativo per una regola di conformità, spesso utilizzata dai team addetti alla protezione, è il controllo di controllo.

InSpec regole sono semplici da creare quando si conosce il formato. Tutte le regole di iniziano con una risorsa. Una risorsa è un elemento di configurazione da testare. Ad esempio, ecco una regola InSpec che utilizza la risorsa windows_feature:

describe windows_feature('DHCP Server') do
  it { should_not be_installed }
end

La risorsa windows_feature dichiara il nome di una funzionalità di Windows e verifica se corrisponde a una particolare configurazione. In questo esempio, la regola verifica che il Server DHCP non è installato.

Sono disponibili risorse per più parti standard di rete, ad esempio file, directory, gli utenti, gruppi e le chiavi del Registro di sistema. Per un elenco completo, è possibile fare riferimento alla documentazione di InSpec bit.ly/2n3ekZe. È possibile estendere facilmente InSpec con le proprie risorse per controllare gli elementi di configurazione predefiniti che non sono supportati o che sono specifici per le proprie applicazioni.

Inclusi i metadati

InSpec consente di includere i metadati relativi alle regole di conformità. I metadati consentono di collegare i test a utenti specifici ai requisiti normativi o i requisiti di sicurezza. In genere, si otterrebbe i requisiti di conformità pubblicati in documenti, fogli di calcolo o un altro formato che non è attivabile. Le informazioni contenute in questi documenti conformità ufficiale sono importante perché consente di contesto di amministratori a perché i criteri di conformità è importante, tuttavia, spesso non è disponibile.

Figura 2 Mostra un esempio di una regola InSpec che include queste informazioni come metadati.

Figura 2 esempio di InSpec con i metadati relativi a regole di conformità

control 'sshd-8' do
  impact 0.6
  title 'Server: Configure the service port'
  desc '
    Always specify which port the SSH server should listen to.
    Prevent unexpected settings.
  '
  tag 'ssh','sshd','openssh-server'
  tag cce: 'CCE-27072-8'
  ref 'NSA-RH6-STIG - Section 3.5.2.1',
    url: 'https://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf'
  describe sshd_config do
    its('Port') { should eq('22') }
  end
end

Questo esempio è per una regola o controllo, denominata ssh-8. L'impatto, titolo e campi desc definiscono i metadati che descrive l'importanza della regola, il suo scopo e una descrizione. Il campo tag include informazioni facoltative e il campo ref fa riferimento a documenti esterni.

Il campo Descrizione segnala l'inizio del blocco che contiene la regola. La risorsa da testare è sshd_config, che è il daemon OpenSSH su piattaforme Unix e Linux. La regola di test per verificare se il server SSH è in ascolto sulla porta 22.

Esistono tre punti importanti da notare. In primo luogo, senza i metadati, la regola potrebbe essere isolato e non dispongono di contesto. Successivamente, tutte le informazioni pertinenti sono incluse con la regola. Non è necessario archiviarlo in altri documenti. Infine, il linguaggio InSpec è estremamente semplice da leggere. Le parti interessate, ad esempio responsabili della conformità, il che potrebbe non essere programmatori, in grado di riconoscere i test della regola e i metadati indicano quali requisiti e perché la regola esiste i controlli. Potrebbero anche essere inclini a contribuire le proprie regole.

Utilizzo dei profili Open Source

Per semplificare le attività, InSpec ha molti profili di origine aprire disponibili che includono già tutte le regole rilevanti e i metadati. È ad esempio, un profilo di base Linux DevSec e un profilo di base di Apache DevSec. È possibile scaricare questi profili in bit.ly/2mBVXNr.

Molti dei profili di origine aprire che inspec fornisce sono basati sul settore Center standard per Internet Security (CIS) benchmark per la protezione del sistema. Mentre le linee di base di elementi di configurazione forniscono un buon punto di partenza, potrebbe essere necessario modificare in modo da soddisfare le esigenze di conformità specifico. InSpec consente di creare i propri profili e da cui ereditare le regole di altri profili. InSpec consente inoltre di ignorare le regole dei profili. Ciò è utile poiché non è necessario modificare direttamente i profili di origine aprire che inspec fornisce. È possibile creare i propri profili che ereditano i profili di origine aperto che è necessario e quindi ignorare le regole che non sono applicabili. Quando vengono rilasciati nuovi profili Apri origine, è possibile aggiornare la versione delle regole di origine aprire semplicemente senza dover modificare le regole personalizzate.

L'analisi di un Host

InSpec utilizza un modello client-server, il che significa che è possibile controllare i sistemi remoti da una workstation centralizzata. Sono inoltre disponibili opzioni che consentono di eseguire come parte di un sistema di automazione continui, ad esempio Chef automatizzare le analisi InSpec (chef.io/automate). Esiste un breve esempio di questa opzione più avanti in questo articolo.

Per eseguire un'analisi di conformità, è necessario un sistema di destinazione, ovvero il server che si desidera testare e un profilo di conformità, ovvero il set di regole che è utilizzare per testare il sistema di destinazione. Per questo esempio, il sistema di destinazione è un Server Windows e si utilizzerà la linea di base di Windows Dev-Sec come definito da elementi di configurazione che viene archiviato in un repository di GitHub. Figura 3 Mostra un esempio di un InSpec esecuzione.

Esempio di un'esecuzione InSpec
Figura 3 esempio di un'esecuzione InSpec

Se si esaminano i risultati, l'esecuzione indica che sono presenti numerose impostazioni di configurazione che non soddisfano le linee di base di elementi di configurazione per la conformità. Vale la pena notare che il server da testare sia l'immagine di Windows Server 2016 predefinita offerto da un provider di cloud principali, in modo da visualizzare immediatamente come InSpec garantiscono la visibilità come la rete è conforme ai criteri di sicurezza della società.

Se si osserva la regola InSpec effettiva per il primo test non superato, gli elementi di configurazione-applicare-password-cronologia-1.1.1, si noterà come la regola viene convertita in qualcosa di eseguibili:

control 'cis-enforce-password-history-1.1.1' do
  impact 0.7
  title '1.1.1 Set Enforce password history to 24 or more passwords'
  desc 'Set Enforce password history to 24 or more passwords'
  describe security_policy do
    its('PasswordHistorySize') { should be >= 24 }
  end
end

Il test ha esito negativo perché criteri richiedono che esserci una cronologia delle password di almeno 24 voci, ma in realtà, la cronologia non viene mantenuta affatto. Ovviamente, l'impostazione di configurazione corrente deve essere modificato per rispettare la regola.

Utilizzando InSpec con pipeline di rilascio automatizzati

InSpec può, di per sé consentono di gestire la conformità dei sistemi, ma InSpec possono inoltre essere eseguiti come una serie di test automatizzati che vengono eseguiti come parte della pipeline di rilascio standard. Test inSpec possono essere aggiunti facilmente a fungere da un controllo di qualità per la conformità. In questa sezione si utilizzerà InSpec con Chef automatizzare.

Chef automatizza è una soluzione integrata per la gestione e distribuzione dell'infrastruttura e delle applicazioni. Posizionarlo sulla base di prodotti Apri origine che includono InSpec e Chef, ovvero per l'automazione dell'infrastruttura. Automatizzare Chef fornisce una pipeline automatizzata per la gestione delle modifiche e include funzionalità per garantire la visibilità di tali modifiche.

Con Chef automatizzare, è possibile eseguire i test di conformità InSpec su richiesta, vedere i risultati nel dashboard e correggere il problema. È anche possibile generare report di controllo ogni volta che sono necessarie.

Ad esempio, la gestione delle patch è uno degli aspetti più importanti della sicurezza IT. È importante essere in grado di identificare i sistemi non aggiornati e aggiornarli. Più normativi Framework, ad esempio il Payment Card Industry Data Security Standard (PCI DSS), lo richiedono. Per garantire che i sistemi siano aggiornati, è possibile utilizzare automatizzare Chef per gestire l'intero processo, dall'identificazione iniziale di monitoraggio e aggiornamento.

È possibile analizzare i sistemi per vedere se sono conformi a un criterio e il software sia aggiornato. Verrà visualizzato un report che indica lo stato dell'infrastruttura. Figura 4 viene illustrato un esempio di tale relazione. Mostra lo stato dei server in una rete, in termini di integrazione soddisfino i requisiti di conformità.

Esempio di un Report di conformità
Figura 4 esempio di un Report di conformità

Dopo aver creato il report, è possibile utilizzare il DK Chef per compilare la correzione e testarlo localmente prima di distribuirli nell'ambiente di produzione. Chef DK contiene tutti gli strumenti che necessari per creare e testare il codice.

Dopo aver completato le modifiche, è possibile inviarli tramite la pipeline automatizzare Chef per distribuire la correzione. La pipeline contiene le fasi per testare le modifiche e verificando che funzionano. All'interno della pipeline sono due gate manuale. Uno di essi sia per la revisione e l'altro invia il codice per gli ambienti di rilascio. È possibile coinvolgere i responsabili della sicurezza e conformità a uno o entrambi questi punti per assicurarsi che sta attivamente nel processo di rilascio.

Infine, quando le modifiche sono passate tutte le fasi della pipeline, è possibile inviarli al server Chef. Nel server Chef potrà iniziare a portare i nodi aggiornati. Chef automatizza garantiscono la visibilità tutto ciò che accade nell'infrastruttura di una volta distribuite le modifiche.

Automazione di conformità con InSpec

Una delle banche più grande in India ha iniziato a utilizzare InSpec nella divisione di banking online Services, che è responsabile per la maggior parte delle transazioni della banca. Conformità è particolarmente importante per esso. La divisione è circa 500 server di HP-UX che costituiscono gli ambienti di sviluppo, test e produzione.

Naturalmente, esistono molte normative e linee guida sulla sicurezza in cui è necessario seguire la banca e ogni mese il team controlla per verificare che i server sono conformi. Sono presenti circa 100 controlli e, prima di InSpec, sono state eseguite manualmente. Il processo è stato molto difficile. Il team ha dovuto accedere a tutti i computer, controllare le impostazioni di configurazione, fornire i risultati su carta e quindi registrarli. Il completamento di un singolo controllo ha impiegato circa 5 minuti, in modo preliminare un solo server ha richiesto circa 8 ore.

Quando il team iniziarono ad usare automatizzato osservanza InSpec, era evidente l'impatto. Impossibile visualizzare il risultato di analisi completa in pochi minuti. Il team ha potuto vedere quanti server sono stati di conformità, non il numero di conformità e in base che è possibile prendere decisioni rapide. Ciò che aveva avuto 500 minuti per eseguire in un server di ciò che ora è possibile eseguire in 2 minuti.

InSpec anche reso molto più semplice soddisfare i revisori della banca. Controllo IT talvolta richiesto visualizzare lo stato di un particolare computer e il recupero delle informazioni era lento. I membri del team era necessario eseguire manualmente gli script, ottenere l'output e che lo rendono appropriato per un report. A questo punto, con un solo clic, il team può visualizzare subito il revisore quali controlli sono stati effettuati.

Inoltre, InSpec è leggibile e facile da imparare. La maggior parte dei fornitori per la sicurezza e controllo utilizzano un formato binario e gli strumenti sono difficili da usare. Quando i membri del team bancari visto InSpec, ritengono che essi potrebbero facilmente apprenderne il funzionamento tra pochi giorni perché la curva di apprendimento è molto piccola. (È possibile leggere informazioni sul sito Web Chef informazioni al bit.ly/2mGthmE.)

Conclusioni

InSpec è un linguaggio che consente di trattare conformità come codice di test open-source. Quando conformità è codice, le regole non sono ambigui e possono essere compresi da tutti i membri del team. Degli sviluppatori sa quali standard sono previsti per soddisfare e revisori conoscono esattamente ciò che si sta testando. Con InSpec, è possibile sostituire documenti ed elenchi di controllo manuali con test a livello di codice che hanno uno scopo non crittografato.

È possibile anche integrare i test di conformità con la pipeline di distribuzione e test automaticamente per la conformità ai criteri di sicurezza. Esegue i test con la frequenza è necessario, avviare il test per la conformità a ogni modifica e rilevare i problemi in precedenza nel processo di sviluppo, nonché prima di aver rilasciato nell'ambiente di produzione.


Michael Ducyè direttore del Marketing di prodotto origine aperta per Chef Software. Egli ha utilizzato, gestito e supportato per software open source per oltre 20 anni. Ducy ha tenuto un numero di ruoli nella tecnologia da Linux systems engineer e docente IT, tecnico prevendita e altro ancora. Egli è sempre interessato coinvolgere più ampia community ed è disponibile su Twitter: @mfdii.

Grazie a seguenti esperti tecnici per la revisione dell'articolo: Bakh Inamov, Adam Leff e Roberta Leibovitz