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."
fiDurante 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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Arricchire l'interfaccia di .NET Aspire
Centralizzare e governare MCP server e Skill con Azure API Center
Bloccare il traffico di rete in uscita dal runner di GitHub
Migliorare accessibilità e interazioni nelle pagine HTML con gli attributi inert e autofocus
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Agentic Workflows in GitHub
Eseguire i pre-commit hook di git con dependabot
Middleware e telemetria alle chiamate AI con Microsoft.Extensions.AI
Interazione con ReconnectModal in Blazor
Azure SQL Database per dev: tutte le novità da non perdere
Stop Building Chatbots. Build a team
Canary release con .NET Aspire
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


