Gestire gli strumenti di esecuzione

Completato

In questa sezione vengono esaminati i diversi strumenti e strategie disponibili in GitHub Enterprise Cloud e GitHub Enterprise Server per gestire l'uso degli strumenti di esecuzione di GitHub Actions nell'azienda.

Scegli un runner appropriato per il tuo carico di lavoro

Due tipi di runner possono eseguire i flussi di lavoro di GitHub Actions: runner ospitati da GitHub e runner self-hosted.

Nota

I runner ospitati da GitHub sono disponibili solo per Enterprise Cloud. Se si dispone di un'istanza Enterprise Server, questa sezione non si applica a voi.

Gli strumenti di esecuzione ospitati da GitHub offrono un modo più semplice e rapido di eseguire i flussi di lavoro, mentre gli strumenti self-hosted rappresentano una soluzione altamente configurabile con cui eseguire i flussi di lavoro nell'ambiente personalizzato. Ad esempio, se è necessario utilizzare un elenco di indirizzi IP consentiti per la tua organizzazione o una configurazione hardware specifica per eseguire i flussi di lavoro, utilizza un runner self-hosted.

La tabella seguente mette a confronto gli strumenti di esecuzione self-hosted con quelli ospitati da GitHub. È opportuno quindi consultarla per scegliere lo strumento di esecuzione più appropriato al carico di lavoro personale.

Strumenti di esecuzione ospitati da GitHub Strumenti di esecuzione self-hosted
Ricevono aggiornamenti automatici per il sistema operativo, pacchetti e strumenti preinstallati e l'applicazione dello strumento di esecuzione self-hosted. Ricevono aggiornamenti automatici solo per l'applicazione dello strumento di esecuzione self-hosted. È responsabilità dell'utente, quindi, aggiornare il sistema operativo e tutti gli altri componenti software.
Sono gestiti e mantenuti da GitHub. Possono usare servizi cloud o computer locali per i quali si è già pagato. Sono personalizzabili in base ai requisiti hardware, del sistema operativo, software e di sicurezza.
Forniscono un'istanza pulita per ogni esecuzione del processo. Non richiedono un'istanza pulita per ogni esecuzione del processo.
Usano i minuti gratuiti del piano di GitHub in uso e applicano tariffe al minuto dopo aver esaurito i minuti gratuiti. Possono essere usati gratuitamente con GitHub Actions, ma l'utente è responsabile dei costi di gestione dei computer in cui vengono eseguiti.

Gestire gli strumenti di esecuzione per l'organizzazione

La gestione degli strumenti di esecuzione per l'azienda prevede la configurazione e la protezione di strumenti di esecuzione ospitati da GitHub e self-hosted per garantire flussi di lavoro CI/CD efficienti e sicuri. Questa gestione include la configurazione di elenchi di indirizzi IP consentiti per controllare l'accesso, migliorare la sicurezza limitando l'accesso dello strumento di esecuzione a indirizzi IP specifici e garantendo la conformità ai criteri dell'organizzazione. La configurazione corretta degli elenchi di indirizzi IP consentiti per gli strumenti di esecuzione ospitati da GitHub e self-hosted è fondamentale per mantenere interazioni sicure e affidabili tra le applicazioni interne e gli strumenti di esecuzione di GitHub Actions. Gli aggiornamenti e le revisioni regolari di queste configurazioni sono necessari per adattarsi alle modifiche apportate agli intervalli di indirizzi IP e mantenere una sicurezza ottimale.

Configurazione degli elenchi di indirizzi IP consentiti in strumenti di esecuzione ospitati da GitHub e self-hosted

La configurazione degli elenchi di indirizzi IP consentiti consente di controllare l'accesso agli strumenti di esecuzione limitandoli a indirizzi IP specifici. Questa configurazione migliora la sicurezza impedendo l'accesso non autorizzato, ma potrebbe richiedere altre configurazioni di rete.

Strumenti di esecuzione ospitati da GitHub Strumenti di esecuzione self-hosted
Gli strumenti di esecuzione ospitati in GitHub usano indirizzi IP dinamici, rendendo difficile configurare elenchi di indirizzi IP precisi. Usare indirizzi IP statici o controllati, consentendo l'inserimento di indirizzi IP precisi o il controllo degli accessi in base all'IP.
Le organizzazioni devono consentire gli intervalli IP pubblicati di GitHub. Può essere posizionato dietro firewall o VPN per una maggiore sicurezza.
Gli strumenti di esecuzione ospitati da GitHub possono essere limitati usando le impostazioni di sicurezza aziendali di GitHub. Richiedere una configurazione esplicita per comunicare con i servizi esterni, migliorando la sicurezza.

Elenco di indirizzi IP consentiti

Un elenco di indirizzi IP consentiti è una funzionalità di sicurezza che limita l'accesso ai servizi o alle risorse in base agli indirizzi IP predefiniti. Quando le organizzazioni configurano un elenco indirizzi IP consentiti, possono:

  • Migliorare la sicurezza: Impedire l'accesso non autorizzato consentendo solo indirizzi IP attendibili.
  • Controllare il traffico di rete: Limitare le richieste in ingresso e in uscita agli indirizzi IP noti e verificati.
  • Migliorare la conformità: Garantire la conformità alle normative limitando l'accesso alle reti autorizzate.
Strumenti di esecuzione ospitati da GitHub Strumenti di esecuzione self-hosted
Le organizzazioni devono consentire gli intervalli IP pubblicati di GitHub, che cambiano periodicamente. Gli amministratori possono definire indirizzi IP specifici autorizzati per accedere ai runner.
I runner ospitati su GitHub possono essere configurati tramite le impostazioni di sicurezza di GitHub. Gli strumenti di esecuzione self-hosted funzionano bene con firewall, VPN o gruppi di sicurezza cloud.

Configurazione degli elenchi di indirizzi IP consentiti per le applicazioni interne per interagire con GitHub-Hosted Runner

Per configurare gli elenchi di indirizzi IP consentiti per applicazioni e sistemi interni per interagire con gli strumenti di esecuzione ospitati in GitHub, è possibile fare riferimento alla documentazione ufficiale di GitHub seguente:

1. Comprendere gli intervalli di indirizzi IP di GitHub

Gli strumenti di esecuzione ospitati in GitHub operano all'interno di intervalli di indirizzi IP specifici. Per garantire che le applicazioni interne possano comunicare con questi strumenti di esecuzione, è necessario consentire questi intervalli IP attraverso il firewall. GitHub fornisce un endpoint meta API https://api.github.com/meta che elenca tutti gli intervalli di indirizzi IP correnti usati dai servizi GitHub, inclusi gli intervalli IP per i runner di Actions. Aggiornare regolarmente gli elenchi di elementi consentiti in base a queste informazioni è essenziale, in quanto gli intervalli IP possono cambiare.

2. Configurare il firewall

a) Ottenere gli intervalli IP di GitHub:
  • Usare l'endpoint meta API per recuperare gli intervalli di indirizzi IP più recenti usati dagli strumenti di esecuzione di GitHub Actions.
b. Aggiornare le regole del firewall:
  • Aggiungere regole al firewall per consentire il traffico in ingresso e in uscita da e verso questi intervalli IP. Questa configurazione garantisce che i sistemi interni possano interagire con gli strumenti di esecuzione ospitati in GitHub senza problemi di connettività.

3. Prendere in considerazione l'uso di strumenti di esecuzione self-hosted

Se la gestione di un elenco di indirizzi IP consentiti per gli strumenti di esecuzione ospitati in GitHub è complessa a causa di frequenti modifiche negli intervalli IP, è consigliabile configurare strumenti di esecuzione self-hosted all'interno della rete. Questo approccio consente di avere un maggiore controllo sull'ambiente di esecuzione e sulle configurazioni di rete. Tuttavia, l'uso di strumenti di esecuzione self-hosted richiede maggiore manutenzione e gestione dell'infrastruttura.

Screenshot di una schermata degli strumenti di esecuzione vuota.

4. Esaminare e aggiornare regolarmente gli elenchi consentiti

Poiché gli intervalli di indirizzi IP di GitHub possono cambiare, è fondamentale esaminare e aggiornare periodicamente gli elenchi di indirizzi IP consentiti del firewall. L'automazione di questo processo tramite script per il recupero degli intervalli IP dall'API meta di GitHub può contribuire a garantire che gli elenchi consentiti rimangano aggiornati senza intervento manuale.

Effetti e potenziali vettori di abuso dell'abilitazione di strumenti di esecuzione self-hosted nei repository pubblici

Effetti dell'abilitazione di strumenti di esecuzione self-hosted

  1. Personalizzazione e ottimizzazione delle prestazioni

    • Gli strumenti di esecuzione self-hosted consentono il controllo dell'hardware, del software installato e delle impostazioni dell'ambiente.
    • I flussi di lavoro possono essere ottimizzati per le prestazioni usando computer dedicati ad alte prestazioni.
  2. Risparmi sui costi

    • A differenza degli strumenti di esecuzione ospitati da GitHub (che hanno un utilizzo gratuito limitato), gli strumenti di esecuzione self-hosted vengono eseguiti nell'infrastruttura, riducendo i vincoli di costo.
  3. Persistenza dello stato

    • Gli strumenti di esecuzione self-hosted non vengono reimpostati tra processi come gli strumenti di esecuzione ospitati da GitHub.
    • Consente la memorizzazione nella cache delle dipendenze, il riutilizzo di set di dati di grandi dimensioni e la gestione degli stati persistenti.
  4. Responsabilità di sicurezza e manutenzione

    • Le patch di sicurezza, gli aggiornamenti delle dipendenze e il monitoraggio del sistema diventano responsabilità del proprietario dello strumento di esecuzione.
    • Configurazioni errate potrebbero esporre il runner a minacce esterne.

Potenziali vettori di abuso di strumenti di esecuzione self-hosted

L'abilitazione di strumenti di esecuzione self-hosted nei repository pubblici introduce rischi significativi per la sicurezza. Poiché chiunque può attivare flussi di lavoro inviando una richiesta pull, gli utenti malintenzionati possono sfruttare questa funzionalità in diversi modi:

  1. Esecuzione di codice arbitrario (RCE) da parte di attori malintenzionati

    • Gli utenti malintenzionati possono inviare richieste pull contenenti script dannosi, che il runner autogestito esegue automaticamente.
    • Se lo strumento di esecuzione ha privilegi elevati, l'utente malintenzionato ottiene l'accesso completo al sistema.
  2. Mining e sfruttamento delle risorse di criptovaluta

    • Gli utenti malintenzionati possono abusare di strumenti di esecuzione self-hosted per estrarre criptovaluta, causando un utilizzo imprevisto elevato della CPU e della GPU.
    • Ciò aumenta i costi operativi e riduce la disponibilità per i flussi di lavoro legittimi.
  3. Esfiltrazione dei dati e furto di credenziali

    • Se i segreti (chiavi API, credenziali del database, chiavi SSH) vengono archiviati nello strumento di esecuzione, gli utenti malintenzionati potrebbero estrarli.
    • Vettore di attacco di esempio: una richiesta pull dannosa potrebbe leggere e inviare variabili di ambiente archiviate a un server esterno.
  4. Attacchi Denial of Service (DoS)

    • Gli utenti malintenzionati possono inondare il repository con numerose richieste pull per eseguire l'overload di strumenti di esecuzione self-hosted.
    • Se gli strumenti di esecuzione si trovano nell'infrastruttura condivisa, è possibile che altri flussi di lavoro critici vengano interrotti.
  5. Spostamento laterale e sfruttamento della rete

    • Se lo strumento di esecuzione self-hosted si trova all'interno di una rete aziendale, un utente malintenzionato potrebbe passare nei sistemi interni.
    • Potrebbe causare violazioni dei dati, attacchi ransomware o accesso permanente alle risorse private.

Strategie di mitigazione

Per ridurre i rischi per la sicurezza, seguire queste procedure consigliate:

  • Limitare gli strumenti di esecuzione self-hosted solo ai repository privati
  • Richiedere l'approvazione del flusso di lavoro per le richieste pull da collaboratori esterni
  • Eseguire strumenti di esecuzione self-hosted in un ambiente sicuro e isolato (ad esempio, contenitori, macchine virtuali)
  • Usare firewall e regole di rete per bloccare l'accesso non autorizzato
  • Limitare l'accesso ai segreti sensibili e archiviare le credenziali in modo sicuro
  • Monitorare e registrare l'attività del runner per rilevare anomalie

Selezione gli strumenti di esecuzione appropriati per supportare i carichi di lavoro

Informazioni sui strumenti di esecuzione GitHub

GitHub Actions supporta due tipi di strumenti di esecuzione:

  1. Strumenti di esecuzione ospitati da GitHub

    • Gestito da GitHub, con approvvigionamento e scalabilità in modo automatico.
    • Include software, strumenti e dipendenze preinstallati per i flussi di lavoro comuni.
    • Disponibile per Windows, Linux e macOS.
    • Consigliato per l'automazione generale, i progetti open source e la configurazione rapida.
  2. Strumenti di esecuzione self-hosted

    • Gestito dall'utente, fornendo il controllo completo sull'ambiente e sulle risorse.
    • Può essere configurato per hardware personalizzato, locale o infrastruttura cloud.
    • Supporta gli stati permanenti tra processi, consentendo una migliore memorizzazione nella cache e dipendenze personalizzate.
    • Consigliato per repository privati, carichi di lavoro aziendali e attività con prestazioni più elevate.

Scelta tra Runner ospitati da GitHub e auto-ospitati

Due tipi di runner possono eseguire i flussi di lavoro di GitHub Actions: runner ospitati da GitHub e runner self-hosted.

Nota

I runner ospitati da GitHub sono disponibili solo per Enterprise Cloud. Se si dispone di un'istanza Enterprise Server, questa sezione non si applica a voi.

Gli strumenti di esecuzione ospitati da GitHub offrono un modo più semplice e rapido di eseguire i flussi di lavoro, mentre gli strumenti self-hosted rappresentano una soluzione altamente configurabile con cui eseguire i flussi di lavoro nell'ambiente personalizzato. Ad esempio, se è necessario utilizzare un elenco di indirizzi IP consentiti per la tua organizzazione o una configurazione hardware specifica per eseguire i flussi di lavoro, utilizza un runner self-hosted.

La tabella seguente mette a confronto gli strumenti di esecuzione self-hosted con quelli ospitati da GitHub. È opportuno quindi consultarla per scegliere lo strumento di esecuzione più appropriato al carico di lavoro personale.

Strumenti di esecuzione ospitati da GitHub Strumenti di esecuzione self-hosted
Ricevono aggiornamenti automatici per il sistema operativo, pacchetti e strumenti preinstallati e l'applicazione dello strumento di esecuzione self-hosted. Ricevono aggiornamenti automatici solo per l'applicazione dello strumento di esecuzione self-hosted. È responsabilità dell'utente, quindi, aggiornare il sistema operativo e tutti gli altri componenti software.
Sono gestiti e mantenuti da GitHub. Possono usare servizi cloud o computer locali per i quali si è già pagato. Sono personalizzabili in base ai requisiti hardware, del sistema operativo, software e di sicurezza.
Forniscono un'istanza pulita per ogni esecuzione del processo. Non richiedono un'istanza pulita per ogni esecuzione del processo.
Usano i minuti gratuiti del piano di GitHub in uso e applicano tariffe al minuto dopo aver esaurito i minuti gratuiti. Possono essere usati gratuitamente con GitHub Actions, ma l'utente è responsabile dei costi di gestione dei computer in cui vengono eseguiti.

Scelta del sistema operativo appropriato per gli strumenti di esecuzione

1. Strumenti di esecuzione Linux (impostazione predefinita)
  • Ideale per la maggior parte dei carichi di lavoro
  • Veloce, conveniente e ampiamente supportato
  • Usato in CI/CD, scripting, Docker e automazione
    Esempio: ubuntu-latest, ubuntu-22.04
2. Strumenti di esecuzione di Windows
  • Necessario per .NET, software basato su Windows e app GUI
  • Supporta PowerShell, dipendenze specifiche di Windows
    Esempio: windows-latest, windows-2022
3. Strumenti di esecuzione macOS
  • I runner macOS sono richiesti per build specifiche di iOS, macOS, Xcode e Apple
  • Supporta applicazioni Swift, Objective-C e macOS
    Esempio: macos-latest, macos-13

Migliori pratiche per la selezione di corridori

  • Usare gli strumenti di esecuzione ospitati in GitHub per flussi di lavoro e automazione generali.
  • Usare strumenti di esecuzione self-hosted per ambienti personalizzati, carichi di lavoro di grandi dimensioni o applicazioni sensibili alla sicurezza.
  • Scegliere strumenti di esecuzione Linux per la maggior parte dei carichi di lavoro a causa delle prestazioni e dell'efficienza dei costi.
  • Usare gli strumenti di esecuzione di Windows o macOS solo quando necessario per la compatibilità.
  • Aggiornare e monitorare regolarmente gli strumenti di esecuzione self-hosted per evitare rischi per la sicurezza.

Contrasto tra gli strumenti di esecuzione ospitati da GitHub e self-hosted

GitHub Actions supporta due tipi di runner per eseguire i flussi di lavoro:

  1. Strumenti di esecuzione ospitati da GitHub : gestiti da GitHub, con provisioning automatico e preconfigurati con strumenti di sviluppo comuni.
  2. strumenti di esecuzione self-hosted: gestiti dall'utente, consentono il controllo completo sull'ambiente, sulle risorse e sulle configurazioni.

In questa sezione vengono evidenziate le differenze principali tra gli strumenti di esecuzione ospitati da GitHub e self-hosted.

Confronto: Strumenti di esecuzione ospitati da GitHub e strumenti di esecuzione self-hosted

Caratteristica / Funzionalità Strumento di esecuzione ospitato da GitHub Strumento di esecuzione self-hosted
Installazione e manutenzione Nessuna configurazione necessaria; GitHub gestisce tutto L'utente deve installare, configurare e gestire
Scalabilità Scalabilità automatica in modo dinamico È necessario effettuare manualmente il provisioning degli strumenti di esecuzione aggiunti
sicurezza Sicurezza elevata; nuovo ambiente virtuale per ogni processo Richiede protezione avanzata manuale
Personalizzazione Limitato; solo strumenti preinstallati Completamente personalizzabile; l'utente può installare tutte le dipendenze
Prestazioni Risorse di calcolo standardizzate Può usare hardware ad alte prestazioni
Persistenza dello stato Viene reimpostato dopo ogni processo Può rendere persistenti i dati tra processi
costo Gratuito per i repository pubblici; utilizzo gratuito limitato per i repository privati Nessun costo di GitHub, ma richiede investimenti nell'infrastruttura
Accesso alla rete Nessun accesso diretto alle reti interne Può accedere a reti interne o private
caso d'uso Ideale per progetti CI/CD generali, automazione e open source Ideale per ambienti aziendali, compilazioni sicure e carichi di lavoro di grandi dimensioni

Differenze e considerazioni principali

1. Installazione e manutenzione
  • Gli strumenti di esecuzione ospitati in GitHub richiedono zero installazione; gli utenti possono avviare immediatamente l'esecuzione dei flussi di lavoro.
  • Gli strumenti di esecuzione self-hosted richiedono l'installazione manuale, la configurazione, gli aggiornamenti e la gestione della sicurezza.
2. Rischi per la sicurezza
  • Gli strumenti di esecuzione ospitati in GitHub vengono eseguiti in macchine virtuali isolate che vengono reimpostate dopo ogni processo, riducendo al minimo le superfici di attacco.
  • Gli strumenti di esecuzione self-hosted persistono tra processi, ovvero uno strumento di esecuzione compromesso può essere sfruttato in più esecuzioni del flusso di lavoro.
3. Considerazioni sulle prestazioni e i costi
  • Gli strumenti di esecuzione ospitati in GitHub forniscono un ambiente standard , ma hanno limiti di utilizzo , ad esempio minuti gratuiti al mese per i repository privati.
  • I runner self-hosted consentono una migliore ottimizzazione delle prestazioni (ad esempio, su server di fascia alta), ma richiedono costi di infrastruttura e manutenzione.
4. Rete e accesso
  • Gli strumenti di esecuzione ospitati da GitHub non possono accedere a risorse private/interne senza altre configurazioni.
  • Gli strumenti di esecuzione self-hosted possono accedere a sistemi interni, rendendoli ideali per repository privati, strumenti interni e distribuzioni locali.

Quando usare ogni strumento di esecuzione?

Usare gli strumenti di esecuzione ospitati da GitHub se:

  • È necessaria una configurazione rapida e semplice senza la gestione dell'infrastruttura.
  • Il flusso di lavoro non richiede dipendenze personalizzate oltre gli strumenti preinstallati.
  • Si sta lavorando in un repository open source o pubblico con minuti di strumenti di esecuzione ospitati gratuiti.

Usare gli strumenti di esecuzione self-hosted se:

  • Il flusso di lavoro richiede dipendenze, configurazioni o stati permanenti specifici.
  • È necessario accedere alle risorse di rete privata , ad esempio database locali, servizi interni.
  • Sono necessari computer con prestazioni più elevate per pipeline CI/CD su larga scala.