Questo documento descrive i pattern per l'automazione dei controlli delle norme e della conformità per le tue risorse Google Cloud Chef InSpec, un framework di test dell'infrastruttura open source. Questo documento è rivolto agli architetti e professionisti DevOps che vogliono integrare test di conformità continui nel flusso di lavoro di sviluppo software.
Norme e conformità in Google Cloud
Google Cloud offre una gamma di strumenti per aiutarti ad applicare e controllare alle norme e ai requisiti di conformità:
Servizio | Descrizione |
---|---|
Gerarchia delle risorse | Puoi utilizzare la gerarchia delle risorse per mappare le attività operative della tua azienda struttura di Google Cloud e gestire il controllo dell'accesso autorizzazioni per gruppi di risorse correlate. Puoi definire gruppi risorse correlate e applicare controlli coerenti a tutte le risorse gruppo. Ad esempio, puoi raggruppare tutti i progetti Google Cloud che sono conforme allo Standard di sicurezza dei dati dell'industria delle carte di pagamento (PCI DSS) in un cartella specifica. Puoi quindi applicare i controlli pertinenti a tutti i progetti in quella cartella. |
Servizio Criteri dell'organizzazione | Puoi usare il servizio Criteri dell'organizzazione per definire i vincoli che limitano il la disponibilità o la funzionalità dei servizi Google Cloud. Ad esempio: Puoi utilizzare il vincolo relativo alla località delle risorse per limitare l'insieme di regioni in cui è possibile creare risorse basate sulla località come le macchine virtuali. Il Servizio Criteri dell'organizzazione collabora con la gerarchia delle risorse. Puoi e applicare criteri dell'organizzazione a diversi livelli gerarchici. Per Ad esempio, puoi definire un criterio dell'organizzazione per i tuoi progetti soggetta a conformità PCI e applicare il criterio alla cartella PCI. |
Security Command Center | Puoi usare Security Command Center per una visibilità centralizzata di tutti i tuoi dell'accesso a specifiche risorse Google Cloud. Security Command Center analizza automaticamente il tuo cloud per individuare le vulnerabilità note e fornire un'unica interfaccia utente basata sui dati per aggregare e gestire i risultati sulla sicurezza. Security Health Analytics può fornire funzionalità di monitoraggio e creazione di report per standard di conformità come PCI DSS e standard di settore come il benchmark Center for Internet Security (CIS). Puoi visualizzare report in una dashboard di conformità per poi esportarli. Security Command Center si integra con diverse origini di sicurezza di terze parti e fornisce un'API che consente di aggiungere e gestire i risultati personalizzati. Security Command Center offre interfaccia unificata per tutti i risultati relativi a sicurezza e conformità. |
Configurazione Sync | Se utilizzi GKE Enterprise, puoi utilizzare Config Sync per mantenere sincronizzati i cluster Kubernetes con configurazioni definite in un repository Git. Il repository Git agisce l'unica fonte attendibile per la configurazione e i criteri del cluster. Config Sync esegue un controllo continuo del tuo GKE Enterprise per identificare e correggere i cluster che si discostano configurazione definita nel repository. |
Policy Controller | Se utilizzi GKE Enterprise, puoi utilizzare Policy Controller, un servizio Kubernetes ingresso dinamico , per applicare criteri completamente programmabili per i tuoi cluster. Utilizzando Policy Controller, puoi impedire la creazione di all'interno dei cluster che non soddisfano i requisiti dei criteri. Ad esempio, puoi creare criteri per applicare la sicurezza dei pod. |
Ti presentiamo Chef InSpec
Inspec chef è un framework di test dell'infrastruttura open source con una struttura leggibile lingua specifica del dominio (DSL) per specificare conformità, sicurezza e i tuoi requisiti.
Con Chef InSpec, puoi:
- Definire i requisiti di conformità come codice e testare il cloud la tua infrastruttura a questi requisiti.
- Consenti ai team di sviluppo di aggiungere test specifici per le applicazioni e valutarli della conformità delle loro applicazioni ai criteri di sicurezza prima del push modifiche all'ambiente di produzione.
- Automatizzare la verifica della conformità nelle pipeline CI/CD e nell'ambito della di rilascio del prodotto.
- Testa la tua infrastruttura Google Cloud nello stesso modo in cui e testare l'infrastruttura in altri ambienti cloud.
Google Cloud offre diverse risorse per aiutarti a iniziare a utilizzare Chef Ispezione:
- La Pacchetto di risorse Google Cloud InSpec contiene le risorse di base per scrivere test InSpec di Chef oggetti Google Cloud.
- La Profilo CIS di Google Cloud InSpec contiene una serie di test InSpecs chef che valutano la condizione di sicurezza dei tuoi progetti Google Cloud rispetto al Center for Internet Security (CIS) Benchmark.
Best practice per l'utilizzo di Chef InSpec con Google Cloud
Di seguito sono riportate le best practice generali per l'utilizzo di Chef InSpec:
- Definisci e adotta una procedura per correggere le violazioni rilevate dai tuoi chef InSpec. Chef InSpec evidenzia violazioni delle norme e ai requisiti di conformità, ma non esegue alcuna correzione.
- Concedi le autorizzazioni appropriate IAM le autorizzazioni all'account di servizio che utilizzi per eseguire Chef InSpec test. Ad esempio, se stai testando i bucket Cloud Storage, l'account di servizio deve avere i token appropriati Ruoli IAM per Cloud Storage.
- Configura Chef InSpec reporter per generare report formattati che descrivono i test e i risultati. Puoi memorizzarli per fornire un record storico. Puoi utilizzare anche questi come input per gli altri strumenti di sicurezza e conformità. Ad esempio: puoi Integra Chef InSpec e Security Command Center.
- Raggruppa i test Chef InSpec correlati in profili. Puoi creare profili diversi per casi d'uso diversi. Ad esempio, puoi creare un profilo end-to-end completo all'interno delle attività di esami notturni. Potresti anche creare un profilo più breve e mirato in risposta a eventi in tempo reale.
Scrivere test InSpec per Chef
Scrivi i test InSpec per Chef usando Chef InSpec DSL, un DSL Ruby per la scrittura dei controlli di controllo.
Il seguente codice mostra un controllo per la convalida degli attributi di Bucket Cloud Storage:
control 'policy_gcs_bucket' do
title 'Cloud Storage bucket policy'
desc 'Compliance policy checks for Cloud Storage bucket'
impact 'medium'
google_storage_buckets(project: project_id).bucket_names.each do |bucket|
describe "[#{project_id}] Cloud Storage Bucket #{bucket}" do
subject { google_storage_bucket(name: bucket) }
its('storage_class') { should eq 'STANDARD' }
its('location') { should be_in ['EUROPE-WEST2', 'EU'] }
end
end
end
Il controllo specifica le seguenti informazioni:
- Metadati che descrivono il controllo
- Impatto o gravità degli errori
- Controlli dei criteri che verificano gli attributi di ogni Cloud Storage del tuo progetto
Esegui test Chef InSpec con Cloud Build
I pattern descritti in questo documento utilizzano Cloud Build e Chef InSpec immagine container per eseguire i test InSpec. Con Cloud Build, puoi eseguire container immagini e concatena i passaggi di build per formare una pipeline. Ad esempio, puoi eseguire i test InSpec di Chef in un solo passaggio di creazione, quindi esportare o analizzare generati automaticamente in un passaggio successivo. Tuttavia, l'utilizzo di Cloud Build non è obbligatorio. Puoi integrare Chef InSpec con qualsiasi strumento che utilizzi.
Le seguenti File di configurazione di Cloud Build mostra una pipeline con due passaggi di build:
steps:
- id: 'run-inspec-cis'
name: chef/inspec:latest
entrypoint: '/bin/sh'
args:
- '-c'
- |
inspec exec https://github.com/GoogleCloudPlatform/inspec-gcp-cis-benchmark.git \
--target gcp:// \
--input gcp_project_id=${PROJECT_ID} \
--reporter cli json:/workspace/report.json \
--chef-license accept || touch fail.marker
- id: 'store-report'
name: gcr.io/cloud-builders/gsutil:latest
args:
- cp
- /workspace/report.json
- gs://${_REPORTS_BUCKET}/cis-report-${BUILD_ID}.json
Nel primo passaggio viene eseguito
Benchmark CIS di Google Cloud
e genera un report in formato JSON. Il passaggio di build utilizza
chef/inspec
e recupera i test dal pubblico
Repository GitHub di Google Cloud CIS. Il secondo passaggio copia
in un bucket Cloud Storage.
Per semplicità, l'esempio precedente fa riferimento al tag latest
per tutti i
immagini container. Per rendere riproducibili le build, ti consigliamo di:
fare riferimento a una specifica versione dell'immagine container fissa
anziché a una versione continua
ad esempio latest
.
Se uno dei test non va a buon fine, Chef InSpec restituisce un errore. Invece di fallire con il
build, il primo passaggio scrive un file fail.marker
e il secondo
anche se uno dei test di Chef InSpec ha esito negativo. Se vuoi indicare esplicitamente
non riuscirai a evidenziare gli errori, puoi controllare se è presente il file fail.marker
in un passaggio di build finale e la build non riesce, se esistente.
Analizzare i report InSpec di Chef
Puoi configurare Chef InSpec reporter per generare report formattati che descrivono i test e i risultati InSpec. Puoi memorizzarli per fornire un record storico. Puoi utilizzare anche questi come input degli altri strumenti di sicurezza e conformità o per generare visualizzazioni o avvisi. I pattern descritti più avanti in questo documento ti consigliamo di archiviare i tuoi report Chef InSpec in un bucket Cloud Storage.
Il seguente diagramma mostra come archiviare i report e attivare ulteriori azioni.
L'aggiunta del report a un bucket Cloud Storage genera un evento. Tu può attivare ulteriori azioni o analisi del report in risposta a questo evento. Nel diagramma precedente, attivi una funzione Cloud Run che scrive dei test di Chef InSpec in BigQuery e un'altra Funzione Cloud Run che aggiunge risultati a Security Command Center.
Integra Chef InSpec e Security Command Center
Security Command Center è il database canonico di sicurezza e rischi per in Google Cloud. Security Command Center offre visibilità centralizzata su tutti i tuoi le risorse Google Cloud e analizza automaticamente le tue risorse cloud alla ricerca di vulnerabilità note. Ti consigliamo di abilitare Security Command Center per dell'organizzazione.
Puoi aggiungere i risultati dei test Chef InSpec a Security Command Center. Security Command Center funge da piattaforma dati centralizzata per aggregare e gestire i risultati sulla sicurezza provenienti da più fonti.
Security Command Center include Security Health Analytics. Security Health Analytics scansiona automaticamente i progetti Google Cloud e per individuare le vulnerabilità comuni. Ad esempio, Security Health Analytics esegue scansioni che valutano i tuoi progetti rispetto alla CIS Google Cloud Foundation 1.0 benchmark. Puoi anche eseguire un insieme di test simile utilizzando Profilo CIS di Google Cloud InSpec. Dovresti confrontare l'ambito dei test InSpec di Chef in modo che non duplicare i controlli eseguiti da Security Health Analytics.
Esistono diversi modi per aggiungere i risultati di Chef InSpec a Security Command Center:
- Utilizza le funzionalità di Chef Automate per Security Command Center per fornire l'integrazione automatica dei risultati dei test Chef InSpec in Security Command Center.
- Utilizza la API Security Command Center per creare un origine personalizzata per Chef InSpec e poi creare risultati per individuare eventuali violazioni rilevate dai test Chef InSpec.
Pattern
Questa sezione descrive i pattern per integrare Chef InSpec nel tuo delle attività quotidiane. È possibile combinare questi pattern per ottenere test di conformità.
Pianifica test InSpec chef
Con questo pattern, esegui la serie di test Chef InSpec in base a una programmazione fissa. Me consiglia questo approccio a programmazione fissa come ottimo modo per iniziare a usare Chef InSpec perché è possibile introdurre test InSpec per Chef senza modificare il i processi esistenti.
Il seguente diagramma mostra come eseguire i test in base a una pianificazione.
Nel diagramma precedente, crei una Cloud Scheduler che viene eseguito con la frequenza che preferisci. Ogni volta che il job viene eseguito, attiva una pipeline Cloud Build che esegue i test di Chef InSpec invia il report di test a Cloud Storage. Per ulteriori informazioni, vedi Pianificazione delle build.
Questo pattern presenta i seguenti vantaggi:
- Puoi introdurre test InSpec per Chef apportando modifiche minime alle i processi esistenti.
- Puoi utilizzare i test Chef InSpec indipendentemente da qualsiasi procedura che usi per eseguire il provisioning e gestire l'infrastruttura e le app.
Questo pattern presenta le seguenti limitazioni:
- I test Chef InSpec sono disaccoppiati dalla tua infrastruttura il che complica l'attribuzione di determinate modifiche chef InSpec non ha superato i test.
- I test Chef InSpec vengono eseguiti solo periodicamente, quindi potrebbero esserci prima di identificare la conformità o violazioni delle norme
Integra direttamente con le tue pipeline CI/CD
Molte organizzazioni automatizzano il provisioning e la gestione dell'infrastruttura utilizzando strumenti come Terraform o Config Connector. In genere, l'infrastruttura viene creata o modificata solo come parte di una CI/CD una pipeline o un blocco note personalizzato. Per saperne di più sui concetti di CI/CD su Google Cloud, consulta Approccio CI/CD moderno con GKE Enterprise.
In questo pattern, aggiungi i test Chef InSpec come passaggi aggiuntivi nel tuo di deployment dell'infrastruttura per permetterti di convalidare la tua infrastruttura ogni volta che esegui la pipeline di deployment. Puoi fallire la build se sono presenti violazioni della conformità.
Il seguente diagramma mostra un flusso di lavoro comune in cui la pipeline di deployment attivata in base a un commit che include modifiche all'infrastruttura.
Nel diagramma precedente, le modifiche all'infrastruttura vengono applicate a un test o di gestione temporanea e i test di Chef InSpec vengono eseguiti completamente gestito di Google Cloud. Se tutti i controlli InSpec di Chef sono conformi, puoi unire e applicare le modifiche all'infrastruttura per l'ambiente di produzione, e la Chef InSpec vengono eseguiti nuovamente nell'ambiente di produzione.
Questo pattern presenta i seguenti vantaggi:
- I test Chef InSpec sono integrati direttamente nel tuo deployment in modo che le violazioni vengano identificate rapidamente.
- Se i test Chef InSpec non vengono superati, puoi fallire esplicitamente il deployment.
Questo pattern presenta le seguenti limitazioni:
- I test Chef InSpec sono integrati direttamente nella tua build pipeline, in modo che il team che gestisce la pipeline di build debba comprendere Test di ispezione chef
- Se hai più build che richiedono test InSpec di Chef, devi aggiungere i passaggi di Chef InSpec in ogni singola build, il che potrebbe renderlo difficile gestire e scalare le tue iniziative di Chef InSpec.
Integra indirettamente con le tue pipeline CI/CD
Questo pattern è simile a quello precedente, ma anziché direttamente eseguendo i test Chef InSpec come passaggio della pipeline di deployment, per eseguire i test InSpec di Chef in una pipeline separata. Questa pipeline separata è attivate dalle pipeline di deployment. Puoi mantenere la logica InSpec di Chef separate dalle pipeline dell'infrastruttura, ma continuare a eseguire le attività di conformità i test dei criteri nell'ambito del flusso di lavoro del deployment.
Cloud Build genera automaticamente notifiche relative alla build quando cambia lo stato della build, ad esempio quando viene creata le transizioni della build a uno stato funzionante e al completamento della build. La di notifica vengono pubblicati Pub/Sub e contenere informazioni sulla build, tra cui la singola build passaggi e i relativi argomenti.
Il seguente diagramma mostra come creare un Funzione Cloud Run che viene attivato automaticamente ogni volta che viene pubblicato un messaggio nella build di notifica Pub/Sub.
Nel diagramma precedente, la funzione può esaminare la notifica di build e poi attiva la pipeline Chef InSpec quando necessario. Ad esempio: vuoi attivare solo la pipeline Chef InSpec in risposta all'esito contenenti determinati passaggi di build.
Questo pattern presenta i seguenti vantaggi:
- I test di Chef InSpec sono indipendenti dalle pipeline di deployment. La che i team che gestiscono le pipeline di deployment non devono interagire con Chef Ispezione
- Puoi centralizzare i test InSpec per Chef, semplificando la manutenzione e scalare le tue iniziative di Chef InSpec.
- Puoi eseguire selettivamente i test Chef InSpec in base ai risultati. e l'output delle build upstream.
Questo pattern presenta le seguenti limitazioni:
- Devi scrivere e gestire il codice per analizzare e analizzare la build messaggi di notifica per stabilire se eseguire i test InSpec di Chef e passare i parametri ai test Chef InSpec.
- Le notifiche di Cloud Build vengono pubblicate un argomento Pub/Sub nello stesso progetto. Se disponi di build in più progetti, devi eseguire il deployment della funzione Cloud Run progetto.
Attiva i test di Chef InSpec in risposta alle notifiche di Cloud Asset Inventory
Cloud Asset Inventory fornisce un inventario di tutte le tue risorse Google Cloud. Puoi utilizzare la modalità Cloud Asset Inventory per cercare, analizzare ed esportare le tue risorse e i relativi metadati nei progetti, nelle cartelle e nell'organizzazione di Google Cloud. Puoi anche utilizzare Cloud Asset Inventory per inviare dati in tempo reale notifiche sulle modifiche alle risorse e ai criteri del cloud.
Il seguente diagramma mostra come eseguire i test InSpec di Chef in base a di Cloud Asset Inventory.
Il diagramma precedente mostra come ottenere un feedback quasi in tempo reale su qualsiasi nuovo di risorse cloud aggiornate non conformi. Puoi filtrare in modo da ricevere notifiche solo in caso di modifiche a determinati tipi di Google Cloud. Puoi usare queste notifiche per attivare Chef InSpec specifici per ogni risorsa. Ad esempio, esegui un particolare insieme ogni volta che viene creato un bucket Cloud Storage ed eseguire un'altra insieme di test InSpec di Chef quando un criterio IAM viene aggiornato.
Questo pattern presenta i seguenti vantaggi:
- Puoi attivare test Chef InSpec mirati e specifici per le risorse a seconda sulle modifiche specifiche ai tuoi asset cloud.
- Le notifiche di Cloud Asset Inventory vengono inviate quasi in tempo reale, quindi qualsiasi della conformità o delle norme vengono identificate rapidamente.
- Puoi utilizzare questo pattern indipendentemente da qualsiasi processo che usi per il provisioning e la gestione dell'infrastruttura. Vengono eseguiti i test Chef InSpec indipendentemente dal fatto che l'infrastruttura sia stata creata o modificata da un individuo uno sviluppatore o una pipeline CI/CD.
- Cloud Asset Inventory può generare notifiche relative a modifiche a risorse dell'intera organizzazione o da cartelle selezionate in modo programmatico a gestire i progetti. Puoi eseguire determinati set di test InSpec di Chef a seconda dalla cartella o dal progetto da cui ha avuto origine la modifica.
- Puoi utilizzare questo motivo insieme agli altri motivi. Ad esempio, molti le organizzazioni non dispongono di deployment automatizzati di sviluppo o sandbox. Puoi usare questo pattern per eseguire determinati controlli delle norme in questi ambienti, integrando al contempo Pipeline CI/CD per i tuoi ambienti di produzione e di gestione temporanea.
Questo pattern presenta le seguenti limitazioni:
- Questo schema potrebbe non essere pratico se c'è un grande volume di agli asset cloud perché i test Chef InSpec potrebbero attivati da ogni modifica.
- Devi scrivere e gestire il codice per analizzare e analizzare Messaggi di notifica di Cloud Asset Inventory per determinare se eseguire o meno Test di ispezione chef
Passaggi successivi
- Prova la Procedura dettagliata di Cloud Shell installare rapidamente Chef InSpec nella tua istanza Cloud Shell ed eseguire la scansione dell'infrastruttura nei tuoi progetti Google Cloud rispetto al CIS Benchmark.
- Visita Google Cloud Centro risorse per la conformità.
- Letto progetto base aziendale.
- Per altre architetture di riferimento, diagrammi e best practice, esplora il Centro architetture cloud.