Verificare la provenienza di un commit tramite le GitHub Actions

di Matteo Tumiati, in DevOps,

Aumentare la sicurezza delle nostre applicazioni e dei nostri processi è sempre fondamentale per ridurre al più possibile ogni tipologia di rischio. Nel nostro piccolo, in GitHub, una delle azioni che possiamo intraprendere è la verifica della provenienza dei commit, così da garantire l'integrità del codice, la provenienza e la responsabilità/attribuzione alle giuste persone.

Vediamo un esempio concreto di un workflow, che vuole verificare l'esistenza della firma dei singoli commit fatti all'interno di una PR, prima che il codice venga mergiato nel ramo principale di sviluppo.

name: Verify commit signature

on: [pull_request]

jobs:
  signed-commit-verification:
    name: Fail on unsigned commits
    runs-on: ubuntu-latest
    steps:
    - name: Fail on unsigned commits
      shell: bash
      env:
        GH_TOKEN: ${{ github.token }}
      run: |
        gh api /repos/${{ github.repository }}/pulls/${{ github.event.number }}/commits > commits.json
        jq_check=$(jq '.[] | select(.commit.verification.verified == false) | length > 0' commits.json)

        if [ "$jq_check" = "true" ]; then
          echo "At least one commit is not signed."
          exit 1
        else
          echo "All commits are signed."
        fi

Durante l'esecuzione del workflow, andiamo a recuperare la lista dei commit che fanno parte della pull request tramite l'uso della CLI di GitHub. Una volta recuperata la lista, andiamo a verificare che tutti i commit siano firmati, tramite la proprietà verification.verified presente nel JSON di risposta. Il filtro tramite JQ ci permette di filtrare tutti i commit e recuperare solo quelli che non hanno la firma e, qualora dovessero essercene alcuni, allora facciamo fallire il workflow, così che, volendo, possiamo bloccare la pull request dal merge. Altrimenti, il workflow sarà stato eseguito con successo e avremo piena tracciabilità e provenienza del codice.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi