Il tema security è sempre molto delicato perchè riguarda molti aspetti differenti (ad esempio quello infrastrutturale, software, licenze, etc.) e anche delle competenze molto verticali. Per quanto riguarda GitHub, tuttavia, viene abbastanza in aiuto Dependabot, un tool nato per aiutare i developer nella gestione delle dipendenze, evidenziando quelle che devono essere aggiornate e quelle che sono esposte ad un potenziale rischio di sicurezza secondo delle CVE pubbliche.
E' sempre un bene averlo abilitato, ma come ci assicuriamo che lo sia su tutti i repository dell'organizzazione che dobbiamo gestire? La risposta è scontata: tramite un workflow di GitHub! Possiamo fare, infatti, un automatismo che controlla tutti i repository che vengono creati in GitHub e, se non è già abilitato, attiviamo Dependabot tramite la CLI.
- name: Enable Dependabot alerts run: | gh api -X PUT /repos/${{ github.repository_owner }}/${{ inputs.repo-name }}/vulnerability-alerts --silent gh api -X PUT /repos/${{ github.repository_owner }}/${{ inputs.repo-name }}/automated-security-fixes --silent env: GITHUB_TOKEN: ${{ secrets.MY_ADMIN_TOKEN }}
Con i due comandi dell'esempio, andiamo ad abilitare entrambe le funzionalità di Dependabot, ovvero vulnerability alerts e security fixes. Se vogliamo essere anche più dettagliati sulla tipologia di dipendenze di terze parti che dobbiamo controllare, ogni quanto Dependabot le deve verificare, chi deve essere l'owner responsabile di approvare le change di una pull request o così via, possiamo anche iniettare nel repository un file di configurazione di default, così che poi i developer lo possano customizzare come meglio credono per il loro caso d'uso.
- name: Configure Dependabot shell: pwsh run: | @" version: 2 updates: - package-ecosystem: "nuget" directory: "/" schedule: interval: "weekly" "@ | Tee-Object -FilePath "dependabot.yml" -Append $Bytes = [System.Text.Encoding]::UTF8.GetBytes((Get-Content -Path dependabot.yml -Raw)) $content = [Convert]::ToBase64String($Bytes) gh api repos/${{ github.repository_owner }}/${{ inputs.repo-name }}/contents/.github/dependabot.yml --method PUT -F 'message=Added dependabot.yml' -F content="$content" --silent env: GITHUB_TOKEN: ${{ secrets.MY_ADMIN_TOKEN }}
In questo caso abbiamo usato la console di PowerShell per creare un file di configurazione chiamato dependabot.yml, che poi passiamo in input alla API e che deve finire in una known location di GitHub (".github/" o nella root del repository). E' anche possibile personalizzare il parametro message, che rappresenta il commit che verrà eseguito nel repository per segnalare il fatto che abbiamo fatto una operazione all'interno dello stesso.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Hybrid Cache in .NET 9
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Applicare un filtro per recuperare alcune issue di GitHub
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Supportare la sessione affinity di Azure App Service con Application Gateway
Triggerare una pipeline su un altro repository di Azure DevOps
Gestione degli eventi nei Web component HTML
Utilizzare Azure AI Studio per testare i modelli AI
Loggare le query più lente con Entity Framework
Collegare applicazioni server e client con .NET Aspire