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
Usare una container image come runner di GitHub Actions
Gestione dei nomi con le regole @layer in CSS
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Ordine e importanza per @layer in CSS
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Utilizzare un service principal per accedere a Azure Container Registry
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Creare un webhook in Azure DevOps
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Gestire domini wildcard in Azure Container Apps
Triggerare una pipeline su un altro repository di Azure DevOps