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
Creare una libreria CSS universale: Clip-path
Recuperare App Service cancellati su Azure
Configurare lo startup di applicazioni server e client con .NET Aspire
Creare una libreria CSS universale: i bottoni
Simulare Azure Cosmos DB in locale con Docker
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Usare il colore CSS per migliorare lo stile della pagina
Ottenere un token di accesso per una GitHub App
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare una qualunque lista per i parametri di tipo params in C#
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
I più letti di oggi
- Organizzare i moduli sfruttando CommonJS in Javascript
- .NET Aspire per applicazioni distribuite
- Animare la rotazione di un'immagine dentro un canvas in HTML5
- Importare un file JavaScript in un web worker
- .NET Conference Italia 2024 - Milano
- La nostra prova su strada di Windows Phone 7
- Utilizzare Hybrid Cache in .NET 9
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps