Integrare la convalida dell'IaC con GitHub Actions

Puoi utilizzare l'azione Analyze Code Security per convalidare l'infrastructure as code (IaC) che fa parte del workflow di GitHub Actions. La convalida di IaC ti consente di determinare se le definizioni delle risorse Terraform violano le policy dell'organizzazione e i rilevatori di Security Health Analytics esistenti applicati alle tue Google Cloud risorse.

Per saperne di più sulla convalida di IaC, consulta Convalidare IaC in base alle Google Cloud policy dell'organizzazione.

Prima di iniziare

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

Attiva il livello Security Command Center Premium o Enterprise

Verifica che il livello Security Command Center Premium o Enterprise 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 Analyze Code Security.

    Assicurati di disporre del ruolo IAM Creazione account di servizio (roles/iam.serviceAccountCreator) e del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin). Scopri come concedere i ruoli.
  1. Nella Google Cloud console vai a Crea service account.

    Vai a Crea account di servizio
  2. Seleziona il progetto.
  3. Nel campo Nome service account, inserisci un nome. La Google Cloud console compila il campo ID service account in base a questo nome.

    Nel campo Descrizione service account, inserisci una descrizione. Ad esempio, Service account for quickstart.

  4. Fai clic su Crea e continua.
  5. Concedi il ruolo Security Posture Shift-Left Validator al account di servizio.

    Per concedere il ruolo, individua l'elenco Seleziona un ruolo, quindi seleziona Security Posture Shift-Left Validator.

  6. Fai clic su Continua.
  7. Fai clic su Fine per completare la creazione del account di servizio.

Per saperne di più sulle autorizzazioni di convalida di IaC, consulta IAM per le attivazioni a livello di organizzazione.

Configura l'autenticazione

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

  2. Ottieni l'URL del token ID della federazione delle identità per i workload. Ad esempio, https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.

    Considera quanto segue:

    • PROJECT_NUMBER è il numero di progetto del Google Cloud progetto 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 Authenticate to Google Cloud al flusso di lavoro per autenticare l'azione di convalida di IaC.

Definisci le policy

Definisci le policy dell'organizzazione e i rilevatori di Security Health Analytics. Per definire queste policy 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, consulta Creare il codice Terraform.

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

    - 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 di piano Terraform. Ad esempio, myplan.tfplan.

  4. Converti il file di 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 di 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 del token ID della federazione delle identità per i workload.
    • service_account con l'indirizzo email del account di servizio che hai creato per l'azione.
    • organization_id con l'ID dell'organizzazione. Google Cloud
    • scan_file_ref con il percorso del file di piano Terraform in formato JSON.
    • failure_criteria con i criteri di soglia di errore che determinano quando l'azione non riesce. I criteri di soglia si basano sul numero di problemi di gravità critica, elevata, media e bassa rilevati dalla scansione di convalida di IaC. failure_criteria specifica il numero di problemi di ogni gravità consentiti e la modalità di aggregazione dei problemi (AND o OR). Ad esempio, se vuoi che l'azione non riesca se rileva un problema critico o un problema di gravità elevata, imposta failure_criteria su Critical:1,High:1,Operator:OR. Il valore predefinito è Critical:1,High:1,Medium:1,Low:1,Operator:OR, il che significa che se la scansione di convalida di IaC rileva un problema, l'azione deve non riuscire.

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

Visualizza il report sulle violazioni di 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 Artefatti, il report sulle violazioni (ias-scan-sarif.json) è disponibile in un file ZIP. Il report include i seguenti campi:

    • Un campo rules che descrive le policy violate dal piano Terraform. Ogni regola include un ruleID che puoi abbinare ai risultati inclusi nel report.
    • Un campo results che descrive le modifiche proposte agli asset che violano una regola specifica.
  3. Risolvi eventuali violazioni nel codice Terraform prima di applicarlo.

Passaggi successivi

  • Visualizza il codice sorgente dell'azione analyze-code-security-scc in GitHub.