Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa la scansione Checkov centralizzata e personalizzata per applicare le policy prima di implementare l'infrastruttura AWS
Creato da Benjamin Morris (AWS)
Riepilogo
Questo modello fornisce un framework GitHub Actions per scrivere politiche Checkov personalizzate in un unico repository che può essere riutilizzato in un'organizzazione. GitHub Seguendo questo schema, un team di sicurezza delle informazioni può scrivere, aggiungere e mantenere politiche personalizzate in base ai requisiti aziendali. Le politiche personalizzate possono essere inserite automaticamente in tutte le pipeline dell' GitHub organizzazione. Questo approccio può essere utilizzato per applicare gli standard aziendali relativi alle risorse prima che le risorse vengano impiegate.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Un' GitHub organizzazione che utilizza GitHub Actions
AWS infrastruttura implementata con HashiCorp Terraform o AWS CloudFormation
Limitazioni
Questo modello è stato scritto per GitHub Actions. Tuttavia, può essere adattato a framework simili di integrazione continua e distribuzione continua (CI/CD) come. GitLab Non è richiesta alcuna versione specifica a pagamento di. GitHub
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per informazioni sulla disponibilità regionale, consulta Endpoint e quote del servizio nella AWS documentazione e scegli il link relativo al servizio.
Architettura
Questo modello è progettato per essere distribuito come GitHub archivio contenente un flusso di lavoro GitHub riutilizzabile e politiche Checkov personalizzate. Il flusso di lavoro riutilizzabile può scansionare sia i repository Terraform che quelli CloudFormation Infrastructure as Code (IaC).
Il diagramma seguente mostra il repository dei GitHub flussi di lavoro riutilizzabili e l'archivio delle politiche di Checkov personalizzate come icone separate. Tuttavia, è possibile implementare questi repository come repository separati o come repository singolo. Il codice di esempio utilizza un unico repository, con file per i flussi di lavoro (.github/workflows
) e file per le politiche personalizzate (custom_policies
cartella e file di .checkov.yml
configurazione) nello stesso repository.

Il diagramma mostra il flusso di lavoro seguente:
Un utente crea una pull request in un repository. GitHub
I flussi di lavoro della pipeline iniziano in GitHub Actions, incluso un riferimento a un flusso di lavoro riutilizzabile di Checkov.
Il flusso di lavoro della pipeline scarica il flusso di lavoro riutilizzabile Checkov di riferimento da un archivio esterno ed esegue tale flusso di lavoro Checkov utilizzando Actions. GitHub
Il flusso di lavoro riutilizzabile di Checkov scarica le politiche personalizzate da un archivio esterno.
Il flusso di lavoro riutilizzabile di Checkov valuta l'IaC nel GitHub repository rispetto alle politiche Checkov integrate e personalizzate. Il flusso di lavoro riutilizzabile di Checkov ha esito positivo o negativo a seconda che vengano rilevati problemi di sicurezza.
Automazione e scalabilità
Questo modello consente la gestione centrale della configurazione di Checkov, in modo che gli aggiornamenti delle policy possano essere applicati in un'unica posizione. Tuttavia, questo modello richiede che ogni repository utilizzi un flusso di lavoro che contenga un riferimento al flusso di lavoro riutilizzabile centrale. È possibile aggiungere questo riferimento manualmente o utilizzare script per inviare il file alla .github/workflows
cartella di ciascun repository.
Strumenti
Servizi AWS
AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita in tutte le regioni. Account AWS Checkov può eseguire la scansione. CloudFormation
Altri strumenti
Checkov
è uno strumento di analisi statica del codice che verifica la presenza di configurazioni errate di sicurezza e conformità in IaC. GitHub Actions
è integrato nella GitHub piattaforma per aiutarti a creare, condividere ed eseguire flussi di lavoro all'interno dei tuoi repository. GitHub Puoi utilizzare GitHub Actions per automatizzare attività come la creazione, il test e la distribuzione del codice. Terraform
è uno strumento IaC HashiCorp che ti aiuta a creare e gestire risorse cloud e locali. Checkov può scansionare Terraform.
Archivio di codici
Il codice per questo pattern è disponibile nel GitHub centralized-custom-checkov-sast
Best practice
Per mantenere un livello di sicurezza coerente, allinea le politiche di sicurezza della tua azienda alle politiche di Checkov.
Nelle prime fasi di implementazione delle politiche personalizzate di Checkov, è possibile utilizzare l'opzione soft-fail nella scansione di Checkov per consentire l'unione delle IAC con problemi di sicurezza. Man mano che il processo matura, passa dall'opzione soft-fail all'opzione hard-fail.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un repository centrale di Checkov. | Crea un repository per archiviare le politiche di Checkov personalizzate che verranno utilizzate all'interno dell'organizzazione. Per iniziare rapidamente, puoi copiare il contenuto dell'archivio di questo pattern nel tuo GitHub centralized-custom-checkov-sast | DevOps ingegnere |
Crea un archivio per flussi di lavoro riutilizzabili. | Se esiste già un archivio per flussi di lavoro riutilizzabili o prevedi di includere file di workflow riutilizzabili nello stesso repository delle politiche personalizzate di Checkov, puoi saltare questo passaggio. Crea un repository per contenere flussi di lavoro riutilizzabili. GitHub Le pipeline di altri repository faranno riferimento a questo repository. | DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi un flusso di lavoro Checkov riutilizzabile. | Crea un flusso di lavoro Checkov GitHub Actions riutilizzabile (file YAML) nel repository dei flussi di lavoro riutilizzabili. È possibile adattare questo flusso di lavoro riutilizzabile dal file di flusso di lavoro fornito in questo modello. Un esempio di modifica che potreste voler apportare è quello di modificare il flusso di lavoro riutilizzabile utilizzando l'opzione soft-fail. L'impostazione | DevOps ingegnere |
Aggiungi un esempio di workflow. | Aggiungi un esempio di flusso di lavoro Checkov che fa riferimento al | DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Determina le politiche che possono essere applicate con Checkov. |
Per maggiori dettagli sulla creazione di politiche personalizzate di Checkov, vedere Panoramica delle politiche personalizzate | Sicurezza e conformità |
Aggiungi le politiche personalizzate di Checkov. | Converti le politiche aziendali identificate in politiche Checkov personalizzate nell'archivio centrale. Puoi scrivere semplici politiche di Checkov in Python o YAML. | Sicurezza |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi il flusso di lavoro riutilizzabile di Checkov a tutti i repository. | A questo punto, dovresti avere un esempio di flusso di lavoro Checkov che faccia riferimento al flusso di lavoro riutilizzabile. Copia il flusso di lavoro Checkov di esempio che fa riferimento al flusso di lavoro riutilizzabile in ogni repository che lo richiede. | DevOps ingegnere |
Crea un meccanismo per garantire che Checkov venga eseguito prima delle fusioni. | Per garantire che il flusso di lavoro Checkov venga eseguito per ogni richiesta pull, crea un controllo dello stato | DevOps ingegnere |
Crea un PAT a livello di organizzazione e condividilo come segreto. | Se la tua GitHub organizzazione è visibile pubblicamente, puoi saltare questo passaggio. Questo modello richiede che il flusso di lavoro di Checkov sia in grado di scaricare le politiche personalizzate dall'archivio delle politiche personalizzate dell'organizzazione. GitHub È necessario fornire le autorizzazioni necessarie per consentire al flusso di lavoro di Checkov di accedere a tali archivi. A tale scopo, crea un token di accesso personale | DevOps ingegnere |
(Facoltativo) Proteggi i file del flusso di lavoro Checkov dalle modifiche. | Per proteggere i file del flusso di lavoro Checkov da modifiche indesiderate, è possibile utilizzare un Ad esempio, per richiedere l'approvazione del
Un Per ulteriori informazioni sulla protezione dei file del flusso di lavoro di Checkov, consulta Informazioni aggiuntive. Per ulteriori informazioni sui | DevOps ingegnere |
Risorse correlate
Informazioni aggiuntive
Scrittura di file di workflow Checkov
Quando scrivicheckov-scan.yaml
, considera quando vuoi che venga eseguito. La on
chiave di primo livello determina quando viene eseguito il flusso di lavoro. Nel repository di esempio, il flusso di lavoro verrà eseguito quando è presente una richiesta pull destinata al main
ramo (e ogni volta che il ramo sorgente della pull request viene modificato). Il flusso di lavoro può anche essere eseguito come richiesto grazie alla workflow_dispatch
chiave.
È possibile modificare le condizioni di attivazione del flusso di lavoro in base alla frequenza con cui si desidera che venga eseguito il flusso di lavoro. Ad esempio, è possibile modificare il flusso di lavoro in modo che venga eseguito ogni volta che il codice viene inviato a qualsiasi ramo pull_request
sostituendo push
e rimuovendo la branches
chiave.
È possibile modificare il file di workflow di esempio creato all'interno di un singolo repository. Ad esempio, è possibile modificare il nome del ramo di destinazione da main
a production
se un repository è strutturato attorno a un production
ramo.
Protezione dei file del flusso di lavoro Checkov
La scansione Checkov fornisce informazioni utili su potenziali errori di configurazione della sicurezza. Tuttavia, alcuni sviluppatori potrebbero percepirla come un ostacolo alla loro produttività e tentare di rimuovere o disabilitare il flusso di lavoro di scansione.
Esistono diversi modi per risolvere questo problema, tra cui una migliore messaggistica sul valore a lungo termine della scansione di sicurezza e una documentazione più chiara su come implementare un'infrastruttura sicura. Si tratta di importanti approcci «morbidi» alla DevSecOps collaborazione che possono essere visti come la soluzione alla causa principale di questo problema. Tuttavia, puoi anche utilizzare controlli tecnici come un CODEOWNERS
file come guardrail per aiutare gli sviluppatori a seguire la strada giusta.
Modello di test in una sandbox
Per testare questo pattern in un ambiente sandbox, segui questi passaggi:
Crea una nuova GitHub organizzazione. Crea un token con accesso in sola lettura a tutti gli archivi dell'organizzazione. Poiché questo token è destinato a un ambiente sandbox, non a un ambiente a pagamento, non sarà possibile archiviarlo in un segreto a livello di organizzazione.
Crea un
checkov
repository per contenere la configurazione di Checkov e ungithub-workflows
repository per contenere la configurazione del flusso di lavoro riutilizzabile. Compila i repository con il contenuto del repository di esempio.Create un repository di applicazioni e copiate e incollate il
checkov-scan.yaml
flusso di lavoro nella relativa cartella..github/workflows
Aggiungi un segreto al repository che contiene il PAT che hai creato per l'accesso in sola lettura all'organizzazione. Il segreto predefinito è.ORG_PAT
Crea una pull request che aggiunga Terraform o CloudFormation codice al repository dell'applicazione. Checkov dovrebbe scansionare e restituire un risultato.