Gestire le funzionalità e gli avvisi di GitHub Advanced Security

Completato

Ora che la sicurezza per il progetto è configurata, è necessario monitorare e gestire le funzionalità e gli avvisi di sicurezza avanzata GitHub per il progetto.

In questa unità si apprenderà come usare Panoramica della sicurezza per monitorare i rischi per la sicurezza nel progetto. Si apprenderà anche come usare GitHub endpoint di sicurezza avanzata per gestire funzionalità e avvisi di sicurezza.

Usa Panoramica della sicurezza

Panoramica della sicurezza è disponibile nella scheda Sicurezza e qualità per organizzazioni e repository. È possibile usarlo per ottenere una panoramica generale del comportamento di sicurezza dell'organizzazione o identificare i repository che richiedono attenzione.

  • Livello organizzazione: Visualizza informazioni di sicurezza aggregate e specifiche del repository per i repository di proprietà dell'organizzazione. Le informazioni possono anche essere filtrate in base alla funzionalità di sicurezza.
  • Livello team: Visualizza le informazioni di sicurezza specifiche del repository per i repository in cui il team dispone dei privilegi di amministratore.
  • Livello repository: Mostra le funzionalità di sicurezza abilitate per il repository e fornisce opzioni per configurare le funzionalità disponibili che non sono attualmente abilitate.

Screenshot della panoramica della sicurezza a livello di organizzazione.

Grazie alle funzionalità interattive di interfaccia e filtro, Panoramica della sicurezza supporta sia l'analisi della sicurezza estesa che quella mirata.

Ad esempio, è possibile usarlo per:

  • Monitorare l'adozione delle funzionalità di sicurezza nell'organizzazione.
  • Monitorare l'adozione dei singoli team durante la distribuzione di GitHub Advanced Security.
  • Esaminare gli avvisi di un tipo o una gravità specifici in tutti i repository.

Usare gli endpoint di GitHub Advanced Security

La tabella seguente riepiloga gli endpoint API disponibili per ogni GitHub funzionalità sicurezza avanzata.

Caratteristica Endpoint Documentazione
Analisi del codice Recuperare e aggiornare gli avvisi di analisi del codice.
Creare report automatizzati per le organizzazioni.
Caricare i risultati dell'analisi CodeQL offline.
API analisi del codice
Analisi dei segreti Abilita o disabilita la scansione dei segreti nei repository.
Recuperare e aggiornare gli avvisi di analisi dei segreti.
API dei repository
API di scansione dei segreti
Revisione delle dipendenze Abilitare o disabilitare gli avvisi delle dipendenze e il grafico delle dipendenze.
Abilitare o disabilitare le correzioni di sicurezza.
Visualizzare le informazioni sulle dipendenze.
API dei repository
API GraphQL

Configurare le GITHUB_TOKEN autorizzazioni

Se si usa GitHub Actions per automatizzare i flussi di lavoro di sicurezza, è importante configurare le autorizzazioni concesse all'GITHUB_TOKENoggetto usato per le chiamate API autenticate.

La tabella seguente riepiloga le autorizzazioni predefinite.

Ambito Accesso predefinito (permissivo) Accesso predefinito (con restrizioni) Accesso massimo dai repository con fork
Azioni lettura/scrittura Nessuno lettura
controlli lettura/scrittura Nessuno lettura
contenuti lettura/scrittura lettura lettura
distribuzioni lettura/scrittura Nessuno lettura
token id lettura/scrittura Nessuno lettura
problemi lettura/scrittura Nessuno lettura
dati descrittivi lettura lettura lettura
Pacchetti lettura/scrittura Nessuno lettura
richieste pull lettura/scrittura Nessuno lettura
progetti repository lettura/scrittura Nessuno lettura
eventi di sicurezza lettura/scrittura Nessuno lettura
stati lettura/scrittura Nessuno lettura

È possibile modificare le autorizzazioni concesse a GITHUB_TOKEN in singoli file del flusso di lavoro.

  • Se le autorizzazioni predefinite sono restrittive, potrebbe essere necessario aumentare le autorizzazioni in modo che i flussi di lavoro possano essere completati correttamente.
  • Se le autorizzazioni predefinite sono permissive, è consigliabile rimuovere autorizzazioni non necessarie.

Come procedura consigliata per la sicurezza, concedere sempre il privilegio minimo richiesto.

È anche possibile usare la permissions chiave per configurare le autorizzazioni per un intero flusso di lavoro o per singoli processi. Quando viene specificato permissions, tutte le autorizzazioni non specificate vengono impostate su none, ad eccezione dell'ambito metadata, che ha sempre accesso read.

name: Create issue on commit

on:
  - push

jobs:
  create_commit:
    runs-on: ubuntu-latest
    permissions:
      issues: write

    steps:
      - name: Create issue using REST API
        run: |
          curl --request POST \
            --url http(s)://[hostname]/api/v3/repos/${{ github.repository }}/issues \
            --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
            --header 'content-type: application/json' \
            --data '{
              "title": "Automated issue for commit: ${{ github.sha }}",
              "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**.\n\nThe commit hash was: _${{ github.sha }}_."
            }' \
            --fail

Nell'esempio precedente viene concesso l'accesso in scrittura per un ambito di problemi per un singolo processo.

È anche possibile usare la permissions chiave per aggiungere o rimuovere le autorizzazioni di lettura per i flussi di lavoro attivati dai repository con fork. Le autorizzazioni di scrittura in genere non possono essere concesse a meno che l'opzione Invia token di scrittura ai flussi di lavoro dalle richieste pull sia abilitata nelle impostazioni di GitHub Actions.

Visualizzazioni di rilevamento, correzione e prevenzione

Panoramica della sicurezza organizza le informazioni dettagliate in tre visualizzazioni principali.

View Purpose
Rilevamento Monitorare la posizione in cui vengono individuate vulnerabilità, segreti e rischi per le dipendenze.
Bonifica Tenere traccia del modo in cui gli avvisi vengono corretti, classificati in ordine di priorità e risolti tra repository.
Prevenzione Misurare la modalità di prevenzione delle vulnerabilità prima di raggiungere rami protetti.

La visualizzazione Prevenzione aiuta le organizzazioni a valutare in che modo i controlli di sicurezza interrompono le modifiche rischiose prima che vengano unite.

Ecco alcuni esempi:

  • Vulnerabilità risolte durante la revisione delle richieste pull.
  • Risultati dell'analisi del codice risolti prima dell'unione.
  • Attività di correzione automatica di Copilot.
  • Eventi di protezione push dell'analisi dei segreti.
  • È stato impedito il rischio di dipendenza.

Interpretazione degli avvisi tra le funzionalità di sicurezza

Security Overview raggruppa le informazioni provenienti da più funzionalità di sicurezza di GitHub per aiutare i team a comprendere il rischio dell'organizzazione.

Le origini di avviso comuni includono:

  • Avvisi di analisi del codice: Vulnerabilità e modelli di codifica non sicuri rilevati da scanner CodeQL o di terze parti.
  • Avvisi di analisi dei segreti: Credenziali esposte, chiavi API e token.
  • Avvisi di Dependabot: Dipendenze vulnerabili e rischi relativi ai pacchetti.
  • Revisione delle dipendenze: Rischi introdotti dalle modifiche alle dipendenze nelle pull request.

Teams può filtrare gli avvisi in base a:

  • Severity
  • Repository
  • Tipo di funzionalità
  • Intervallo di tempo
  • Proprietà del team
  • Stato dell'avviso

Questi filtri supportano sia l'analisi a livello di organizzazione che le indagini incentrate.

Monitoraggio degli interventi di correzione e informazioni sulla correzione automatica

Panoramica della sicurezza consente anche di monitorare lo stato di avanzamento della correzione.

I team di sicurezza possono tenere traccia di:

  • Avvisi delle pull request corretti prima del merge.
  • Tendenze di correzione.
  • Pull request generate da Autofix di Copilot.
  • Tassi di convalida e di completamento delle unioni.
  • Repository con avvisi ricorrenti non risolti.

Queste informazioni aiutano le organizzazioni a identificare i colli di bottiglia, assegnare priorità ai repository ad alto rischio e misurare l'efficacia degli interventi correttivi.

Visibilità sugli eventi di bypass e i segnali di governance

La panoramica della sicurezza illustra anche le metriche relative alla governance e ai criteri nell'intera organizzazione.

Ecco alcuni esempi:

  • Eventi di bypass della protezione push.
  • Attività di applicazione della protezione dei rami.
  • Tendenze di chiusura degli avvisi.
  • Attività del registro di controllo.
  • Metriche di adozione e di copertura dei criteri.

Queste metriche consentono agli amministratori di comprendere:

  • Dove gli utenti ignorano le protezioni.
  • Indica se i criteri richiedono l'affinamento.
  • Indica se i controlli di sicurezza vengono applicati in modo coerente.

Insieme ai log di controllo, ai set di regole e ai criteri di protezione dei rami, questi dati analitici supportano la creazione di report sulla conformità, le revisioni operative e il miglioramento continuo della sicurezza.

Ruoli e responsabilità di sicurezza

Il successo dell'adozione di GitHub Advanced Security richiede una chiara attribuzione delle responsabilità tra i team di sviluppo, sicurezza e amministrazione.

Diversi ruoli interagiscono con GitHub funzionalità di sicurezza avanzata in tutto il ciclo di vita di sviluppo software e risposta agli eventi imprevisti.

Responsabilità Gli sviluppatori Ingegneri della sicurezza Repository/Amministratori dell'organizzazione
Esaminare e correggere gli avvisi di analisi del codice No
Rivedere gli avvisi di scansione dei segreti
Aggiornare le dipendenze vulnerabili No
Convalidare le pull request di Copilot Autofix No
Valutare e classificare in ordine di priorità gli avvisi di sicurezza No
Configurare criteri di sicurezza e set di regole No
Gestire i criteri di protezione dei rami e del flusso di lavoro No No
Monitorare le dashboard della panoramica della sicurezza No
Esaminare i log di controllo e i segnali di governance No
Configurare le impostazioni di sicurezza del repository e dell'organizzazione No No
Coordinare i flussi di lavoro di risposta agli eventi imprevisti No
Approvare eccezioni ai criteri o rifiuti No

Titolarità del flusso di lavoro di esempio

Un tipico flusso di lavoro di sicurezza avanzata GitHub prevede l'uso di più ruoli.

  1. Uno sviluppatore riceve un avviso di analisi del codice in una richiesta pull.
  2. Un tecnico della sicurezza esamina la gravità dell'avviso e consiglia un approccio di correzione.
  3. Copilot Autofix suggerisce un aggiornamento della pull request.
  4. Lo sviluppatore convalida la correzione e aggiorna il codice, se necessario.
  5. Gli amministratori del repository applicano le protezioni dei rami e i controlli necessari prima dell'unione.
  6. I team di sicurezza esaminano i log di controllo e le tendenze di correzione tramite Panoramica della sicurezza.

Definire chiaramente le responsabilità aiuta le organizzazioni a estendere l’adozione di GitHub Advanced Security, mantenendo al contempo governance, responsabilità e coerenza operativa.