Integra la convalida IaC con le azioni GitHub

Puoi usare lo strumento Analyze Code Security per convalidare l'Infrastructure as Code (IaC) che fa parte delle tue Azioni GitHub nel tuo flusso di lavoro. La convalida di IaC ti consente di determinare se la tua risorsa Terraform le definizioni violano i criteri dell'organizzazione esistenti e Rilevatori di Security Health Analytics applicati alle tue risorse Google Cloud.

Per ulteriori informazioni sulla convalida IaC, consulta Convalidare il codice IaC in base alla dell'organizzazione Google Cloud .

Prima di iniziare

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

Attiva il livello Premium o Enterprise di Security Command Center

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

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

Crea un account di servizio

Crea un account di servizio da utilizzare per Analyze Code Security un'azione.

  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 livello di organizzazione attivazioni.

Configura l'autenticazione

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

  2. Richiedi l'URL per il tuo token ID 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 di progetto per Progetto Google Cloud in cui hai configurato la federazione delle identità per i carichi di lavoro.
    • POOL_ID è il nome del pool.
    • PROVIDER_ID è il nome del tuo provider di identità.
  3. Aggiungi il pulsante Autentica in Google Cloud azione al flusso di lavoro per autenticare l'azione di convalida IaC.

Definisci i criteri

Definisci la tua organizzazione norme e Security Health Analytics rilevatori. A definire questi criteri utilizzando una security posture, completare le attività in Creare ed eseguire il deployment della postura.

Crea il file JSON del piano Terraform

  1. Creare il codice Terraform. Per le istruzioni, consulta Creare il file Terraform Google Cloud.

  2. Inizializza Terraform nelle Azioni GitHub. Ad esempio, se utilizzi l'azione HashiCorp - Configura Terraform, esegui questo comando:

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

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

    Sostituisci TF_PLAN_FILE con il nome 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 di Terraform del piano di controllo in formato JSON. Ad esempio, mytfplan.json.

Aggiungi l'azione al flusso di lavoro delle azioni GitHub

  1. Nel repository GitHub, vai al tuo flusso di lavoro.
  2. Apri l'editor del flusso di lavoro.
  3. Nella barra laterale di GitHub Marketplace, cerca Analyze Code Security.
  4. Copia la sintassi nella sezione Installazione.
  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 tuo Token ID federazione di Workload Identity.
    • service_account con l'indirizzo email dell'account di servizio che hai creato per l'azione.
    • organization_id con l'ID organizzazione Google Cloud.
    • scan_file_ref con il percorso del file del piano Terraform, in formato JSON.
    • failure_criteria con la soglia di errore criteri che determinano quando l'azione non riesce. Il criterio di soglia è in base al numero di problemi di gravità critica, alta, media e bassa che rilevati dalla scansione di convalida IaC. failure_criteria specifica il numero sono consentiti i problemi di ogni gravità e la modalità di aggregazione dei problemi (AND o OR). Ad esempio, se vuoi che l'azione non vada a buon fine se riscontra un problema critico o un problema ad alta gravità, imposta Da failure_criteria a Critical:1,High:1,Operator:OR. L'impostazione predefinita è Critical:1,High:1,Medium:1,Low:1,Operator:OR, il che significa che se l'IaC la scansione di convalida rileva qualche problema; l'azione non deve riuscire.

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

Visualizzare la segnalazione di violazione IaC

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

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

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

    • Un campo rules che descrive quali norme sono state violate dal al piano Terraform. Ogni regola include un valore ruleID che puoi abbinare al i risultati inclusi nel report.
    • Un campo results che descrive le modifiche agli asset proposte violano una regola specifica.
  3. Risolvi eventuali violazioni all'interno del codice Terraform prima di applicarlo.

Passaggi successivi