Pattern per i test di conformità automatici utilizzando Chef InSpec

Last reviewed 2023-11-24 UTC

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:

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.

Eventi attivati dai report.

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:

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.

Pianifica i test InSpec chef.

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.

Integra Chef Inspec con le pipeline CI/CD.

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.

Integrazione indiretta di Chef InSpec con pipeline CI/CD.

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.

Attiva i test InSpec di Chef in base alle notifiche.

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