Integrare la convalida IaC con GitHub Actions

Puoi utilizzare l'azione Analizza la sicurezza del codice per convalidare l'infrastruttura come codice (IaC) che fa parte del flusso di lavoro di GitHub Actions. La convalida dell'IaC ti consente di determinare se le definizioni delle risorse Terraform violano i criteri dell'organizzazione esistenti e i rilevatori di Security Health Analytics applicati alle risorse Google Cloud.

Per ulteriori informazioni sulla convalida dell'IaC, consulta Convalidare l'IaC in base ai criteri dell'organizzazione Google Cloud.

Prima di iniziare

Completa queste attività per iniziare a utilizzare la convalida IaC con GitHub Actions.

Attiva il livello Premium o Enterprise di Security Command Center

Verifica che il livello Premium o Enterprise di Security Command Center sia attivato a livello di organizzazione.

L'attivazione di Security Command Center abilita le API securityposture.googleapis.com e securitycentermanagement.googleapis.com.

Crea un account di servizio

Crea un account di servizio che puoi utilizzare per l'azione Analizza la sicurezza del codice.

  1. In the Google Cloud console, go to the Create service account page.

    Go to Create service account
  2. Select your project.
  3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

    In the Service account description field, enter a description. For example, Service account for quickstart.

  4. Click Create and continue.
  5. Grant the Security Posture Shift-Left Validator role to the service account.

    To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.

  6. Click Continue.
  7. Click Done to finish creating the service account.

Per ulteriori informazioni sulle autorizzazioni di convalida IaC, consulta IAM per le attivazioni a livello di organizzazione.

Configura l'autenticazione

  1. Configura la federazione delle identità per i carichi di lavoro con il tuo provider di identità GitHub. Per istruzioni, consulta Federazione delle identità per i workload.

  2. Ottieni l'URL per il token ID della federazione di Workload Identity. Ad esempio, https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.

    Considera quanto segue:

    • PROJECT_NUMBER è il numero del progetto Google Cloud in cui hai configurato la federazione delle identità per i workload.
    • POOL_ID è il nome del pool.
    • PROVIDER_ID è il nome del tuo provider di identità.
  3. Aggiungi l'azione di autenticazione su Google Cloud al tuo flusso di lavoro per autenticare l'azione di convalida IaC.

Definire i criteri

Definisci i criteri dell'organizzazione e i rivelatori di Security Health Analytics. Per definire questi criteri utilizzando una postura di sicurezza, completa le attività descritte in Creare e implementare una postura.

Crea il file JSON del piano Terraform

  1. Crea il codice Terraform. Per le istruzioni, vedi Creare il codice Terraform.

  2. In GitHub Actions, inizializza Terraform. Ad esempio, se utilizzi l'azione HashiCorp - Configura Terraform, esegui il seguente comando:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. Crea un file di piano Terraform:

    - name: Create Terraform Plan
      id: plan
      run: terraform plan -out=TF_PLAN_FILE
    

    Sostituisci TF_PLAN_FILE con il nome del file del piano Terraform. Ad esempio, myplan.tfplan.

  4. Converti il file del piano in formato JSON:

    - name: Convert Terraform Plan to JSON
      id: convert
      run: terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
    

    Sostituisci TF_PLAN_JSON_FILE con il nome del file del piano Terraform in formato JSON. Ad esempio, mytfplan.json.

Aggiungi l'azione al flusso di lavoro di GitHub Actions

  1. Nel repository GitHub, vai al flusso di lavoro.
  2. Apri l'editor del flusso di lavoro.
  3. Nella barra laterale di GitHub Marketplace, cerca Analyze Code Security.
  4. Nella sezione Installazione, copia la sintassi.
  5. Incolla la sintassi come nuovo passaggio nel flusso di lavoro.
  6. Sostituisci i seguenti valori:

    • workload_identity_provider con il link all'URL per il token ID di Workload Identity Federation.
    • service_account con l'indirizzo email dell'account di servizio che hai creato per l'azione.
    • organization_id con il tuo ID organizzazione Google Cloud.
    • scan_file_ref con il percorso del file del piano Terraform in formato JSON.
    • failure_criteria con i criteri della soglia di errore che determinano quando l'azione non va a buon fine. I criteri di soglia si basano sul numero di problemi critici, di alta, media e bassa gravità rilevati dalla verifica IaC. failure_criteria specifica il numero di problemi di ogni gravità consentiti e come vengono aggregati (AND o OR). Ad esempio, se vuoi che l'azione non vada a buon fine se rileva un problema critico o un problema di gravità elevata, imposta failure_criteria su Critical:1,High:1,Operator:OR. L'impostazione predefinita è Critical:1,High:1,Medium:1,Low:1,Operator:OR, il che significa che se la scansione di convalida IaC riscontra un problema, l'azione deve non riuscire.

Ora puoi eseguire il flusso di lavoro per convalidare il file del piano Terraform. Per eseguire manualmente il flusso di lavoro, consulta Eseguire manualmente un flusso di lavoro.

Visualizzare il report sulle violazioni IaC

  1. Nel repository GitHub, fai clic su Azioni e seleziona il flusso di lavoro.

  2. Fai clic sull'esecuzione più recente del flusso di lavoro.

    Nella sezione Elementi, il report sulla violazione (ias-scan-sarif.json) è disponibile in un file ZIP. Il report include i seguenti campi:

    • Un campo rules che descrive quali criteri sono stati violati dal piano Terraform. Ogni regola include un ruleID che puoi associare ai risultati inclusi nel report.
    • Un campo results che descrive le modifiche proposte alle risorse che violano una regola specifica.
  3. Risolvi eventuali violazioni nel codice Terraform prima di applicarlo.

Passaggi successivi