Zarządzanie modułami uruchamiającym

Ukończone

W tej sekcji zapoznasz się z różnymi narzędziami i strategiami dostępnymi w usłudze GitHub Enterprise Cloud i GitHub Enterprise Server, aby zarządzać użyciem modułów uruchamiaczy funkcji GitHub Actions w przedsiębiorstwie.

Wybieranie odpowiedniego modułu uruchamiającego obciążenie

Dwa typy modułów uruchamiający mogą wykonywać przepływy pracy funkcji GitHub Actions: moduły uruchamiane przez usługę GitHub lub uruchamiane samodzielnie.

Uwaga

Moduły uruchamiane w usłudze GitHub są dostępne tylko dla chmury enterprise. Jeśli masz wystąpienie serwera Enterprise Server, ta sekcja nie ma zastosowania do Ciebie.

Moduły uruchamiane w usłudze GitHub oferują szybszy i prostszy sposób uruchamiania przepływów pracy, natomiast moduły uruchamiane samodzielnie są wysoce konfigurowalnym sposobem uruchamiania przepływów pracy we własnym środowisku niestandardowym. Jeśli na przykład musisz użyć listy dozwolonych adresów IP dla organizacji lub wyspecjalizowanej konfiguracji sprzętu do uruchamiania przepływów pracy, użyj własnego modułu uruchamiającego.

W poniższej tabeli porównaliśmy moduły uruchamiającego hostowane w usłudze GitHub z własnymi modułami uruchamiającym. Użyj go, aby wybrać odpowiedni moduł uruchamiający obciążenie.

Moduły uruchamiane w usłudze GitHub Moduły uruchamiane samodzielnie
Otrzymywanie automatycznych aktualizacji dla systemu operacyjnego, wstępnie zainstalowanych pakietów i narzędzi oraz aplikacji modułu uruchamiającego własne. Otrzymywanie aktualizacji automatycznych tylko dla aplikacji modułu uruchamiającego samodzielnie. Odpowiadasz za aktualizowanie systemu operacyjnego i wszystkich innych oprogramowania.
Usługa GitHub zarządzana i utrzymywana. Może korzystać z usług w chmurze lub maszyn lokalnych, za które już płacisz. Można również dostosowywać do wymagań dotyczących sprzętu, systemu operacyjnego, oprogramowania i zabezpieczeń.
Podaj czyste wystąpienie dla każdego wykonania zadania. Nie musisz mieć czystego wystąpienia dla każdego wykonania zadania.
Użyj bezpłatnych minut w planie usługi GitHub, a stawki za minutę są stosowane po przekroczeniu bezpłatnych minut. Korzystanie z funkcji GitHub Actions jest bezpłatne, ale ponosisz odpowiedzialność za utrzymanie maszyn modułu uruchamiającego.

Zarządzanie agentami w przedsiębiorstwie

Zarządzanie modułami uruchamiającymi dla przedsiębiorstwa obejmuje konfigurowanie i zabezpieczanie zarówno hostowanych w usłudze GitHub, jak i własnych modułów uruchamiających, aby zapewnić wydajne i bezpieczne przepływy pracy CI/CD. Takie zarządzanie obejmuje konfigurowanie list dozwolonych adresów IP w celu kontrolowania dostępu, zwiększania zabezpieczeń przez ograniczenie dostępu modułu uruchamiającego do określonych adresów IP oraz zapewnienie zgodności z zasadami organizacji. Właściwa konfiguracja list dozwolonych adresów IP zarówno dla agentów hostowanych w usłudze GitHub, jak i własnych, ma kluczowe znaczenie dla utrzymania bezpiecznych i niezawodnych interakcji między aplikacjami wewnętrznymi oraz agentami GitHub Actions. Regularne aktualizacje i przeglądy tych konfiguracji są niezbędne do dostosowania się do zmian w zakresach adresów IP i utrzymania optymalnego bezpieczeństwa.

Konfigurowanie list dozwolonych adresów IP na agentach uruchamiających hostowanych przez GitHub i agentach samodzielnie hostowanych

Konfigurowanie list dozwolonych adresów IP pomaga kontrolować dostęp do modułów uruchamiających, ograniczając je do określonych adresów IP. Ta konfiguracja zwiększa bezpieczeństwo, uniemożliwiając nieautoryzowany dostęp, ale może wymagać dalszych konfiguracji sieci.

Moduły uruchamiane w usłudze GitHub Moduły uruchamiane samodzielnie
Moduły uruchamiane w usłudze GitHub używają dynamicznych adresów IP, co utrudnia konfigurowanie precyzyjnych list dozwolonych adresów IP. Używaj statycznych lub kontrolowanych adresów IP, co pozwala na dokładną listę dozwolonych adresów IP lub kontrolę dostępu opartą na adresach IP.
Organizacje muszą zezwalać na opublikowane zakresy adresów IP w usłudze GitHub. Można umieścić za zaporami lub sieciami VPN w celu zapewnienia dodatkowego bezpieczeństwa.
Agentów uruchamianych na platformie GitHub można ograniczyć przy użyciu ustawień zabezpieczeń przedsiębiorstwa GitHub. Wymagaj jawnej konfiguracji do komunikowania się z usługami zewnętrznymi, zwiększając bezpieczeństwo.

Lista dozwolonych adresów IP

Dozwolona lista adresów IP to funkcja zabezpieczeń, która ogranicza dostęp do usług lub zasobów na podstawie wstępnie zdefiniowanych adresów IP. Gdy organizacje konfigurują listę dozwolonych adresów IP, mogą:

  • Zwiększ bezpieczeństwo: Zapobiegaj nieautoryzowanemu dostępowi, zezwalając tylko na zaufane adresy IP.
  • Kontrolowanie ruchu sieciowego: Ogranicz żądania przychodzące i wychodzące do znanych i zweryfikowanych adresów IP.
  • Popraw zgodność: Zapewnienie zgodności z przepisami przez ograniczenie dostępu do autoryzowanych sieci.
Moduły uruchamiane w usłudze GitHub Moduły uruchamiane samodzielnie
Organizacje muszą zezwalać na okresowe zmiany opublikowanych zakresów adresów IP usługi GitHub. Administratorzy mogą definiować określone adresy IP, które mają dostęp do runnerów.
Agenty hostowane w GitHub są konfigurowalne w ramach ustawień bezpieczeństwa GitHub. Biegacze z własnym hostingiem działają dobrze z zaporami, sieciami VPN lub grupami zabezpieczeń w środowisku chmurowym.

Konfigurowanie listy dozwolonych adresów IP dla aplikacji wewnętrznych w celu interakcji z modułami uruchamiającymi GitHub-Hosted.

Aby skonfigurować listy zezwalanych adresów IP dla wewnętrznych aplikacji i systemów do interakcji z agentami uruchomieniowymi hostowanymi przez GitHub, możesz zapoznać się z następującą oficjalną dokumentacją GitHub.

1. Omówienie zakresów adresów IP usługi GitHub

Moduły uruchamiane w usłudze GitHub działają w określonych zakresach adresów IP. Aby zapewnić, że aplikacje wewnętrzne mogą komunikować się z tymi runnerami, należy przepuścić te zakresy adresów IP w zaporze. Usługa GitHub udostępnia punkt końcowy meta interfejsu https://api.github.com/meta API, który zawiera listę wszystkich bieżących zakresów adresów IP używanych przez usługi GitHub, w tym zakresy adresów IP dla modułów uruchamiających akcje. Regularne aktualizowanie list dozwolonych na podstawie tych informacji jest niezbędne, ponieważ zakresy adresów IP mogą ulec zmianie.

2. Konfigurowanie zapory

a. Uzyskaj zakresy adresów IP usługi GitHub:
  • Użyj endpointu meta API, aby uzyskać najnowsze zakresy adresów IP używane przez wykonawców GitHub Actions.
b. Aktualizowanie reguł zapory:
  • Dodaj reguły do zapory, aby zezwolić na ruch przychodzący i wychodzący do i z tych zakresów adresów IP. Ta konfiguracja gwarantuje, że wewnętrzne systemy mogą korzystać z uruchomień hostowanych w usłudze GitHub bez problemów z łącznością.

3. Rozważ użycie samohostowanych agentów

Jeśli utrzymanie listy dozwolonych adresów IP dla agentów działających w usłudze GitHub jest trudne ze względu na częste zmiany w zakresach adresów IP, rozważ skonfigurowanie własnych agentów działających w sieci. Takie podejście umożliwia większą kontrolę nad środowiskiem modułu uruchamiającego i konfiguracjami sieci. Jednak korzystanie z modułów uruchamianych samodzielnie wymaga większej konserwacji i zarządzania infrastrukturą.

Zrzut ekranu przedstawiający pusty ekran biegaczy.

Regularne przeglądanie i aktualizowanie listy dozwolonych

Ponieważ zakresy adresów IP usługi GitHub mogą ulec zmianie, ważne jest, aby okresowo przeglądać i aktualizować listy dozwolonych adresów IP zapory. Automatyzacja tego procesu przez wykonywanie skryptów pobierania zakresów adresów IP z meta interfejsu API usługi GitHub może pomóc zapewnić, że listy dozwolonych pozostaną aktualne bez ręcznej interwencji.

Skutki i potencjalne wektory nadużyć umożliwiające samoobsługowe moduły uruchamiające moduły uruchamiające w repozytoriach publicznych

Skutki włączania samodzielnie hostowanych agentów

  1. Dostosowywanie i optymalizacja wydajności

    • Samodzielnie hostowane runnery umożliwiają kontrolę nad sprzętem, zainstalowanym oprogramowaniem i ustawieniami środowiska.
    • Przepływy pracy można zoptymalizować pod kątem wydajności przy użyciu dedykowanych maszyn o wysokiej wydajności.
  2. Oszczędności

    • W przeciwieństwie do agentów hostowanych w usłudze GitHub (które mają ograniczone bezpłatne użycie), agenci uruchamiani na własnej infrastrukturze zmniejszają ograniczenia kosztów.
  3. Trwałość stanu

    • Samodzielne uruchomienia nie resetują się między zadaniami w odróżnieniu od uruchomień hostowanych przez GitHub.
    • Umożliwia buforowanie zależności, ponowne używanie dużych zestawów danych i utrzymywanie stanów trwałych.
  4. Odpowiedzialność za zabezpieczenia i konserwację

    • Poprawki zabezpieczeń, aktualizacje zależności i monitorowanie systemu stają się odpowiedzialnością właściciela procesu uruchamiania.
    • Niepoprawne konfiguracje mogą narażać wykonawcę na zewnętrzne zagrożenia.

Potencjalne wektory nadużyć runnerów hostowanych lokalnie

Włączenie własnych modułów uruchamiających testy w repozytoriach publicznych powoduje znaczne zagrożenie bezpieczeństwa. Ponieważ każdy może wyzwalać procesy robocze, przesyłając pull request, osoby atakujące mogą wykorzystać tę funkcję na różne sposoby:

  1. Dowolne wykonywanie kodu (RCE) przez złośliwych podmiotów

    • Osoby atakujące mogą przesyłać pull requesty zawierające złośliwe skrypty, które są wykonywane automatycznie przez samodzielnego runnera.
    • Jeśli moduł uruchamiający ma podwyższone uprawnienia, osoba atakująca uzyska pełny dostęp do systemu.
  2. Górnictwo kryptowalut i wykorzystywanie zasobów

    • Osoby atakujące mogą nadużywać samodzielnie hostowane narzędzia, aby wydobyć kryptowalutę, powodując nieoczekiwane wysokie użycie procesora CPU i GPU.
    • Zwiększa to koszty operacyjne i zmniejsza dostępność uzasadnionych przepływów pracy.
  3. Kradzież poświadczeń i eksfiltracji danych

    • Jeśli wpisy tajne (klucze interfejsu API, poświadczenia bazy danych, klucze SSH) są przechowywane w module uruchamiającym, osoby atakujące mogą je wyodrębnić.
    • Przykładowy wektor ataku: złośliwe żądanie ściągnięcia może odczytywać i wysyłać przechowywane zmienne środowiskowe do serwera zewnętrznego.
  4. Ataki typu "odmowa usługi" (DoS)

    • Osoby atakujące mogą zalać repozytorium licznymi prośbami scalającymi, aby przeciążyć własne uruchamiane serwery.
    • Jeśli moduły uruchamiające znajdują się w udostępnionej infrastrukturze, inne krytyczne przepływy pracy mogą być zakłócane.
  5. Ruch boczny i wykorzystywanie sieci

    • Jeśli własny moduł uruchamiający znajduje się w sieci firmowej, osoba atakująca może przeniknąć do systemów wewnętrznych.
    • Może prowadzić do naruszeń danych, ataków wymuszającego okup lub trwałego dostępu do zasobów prywatnych.

Strategie ograniczania ryzyka

Aby zmniejszyć zagrożenia bezpieczeństwa, postępuj zgodnie z następującymi najlepszymi rozwiązaniami:

  • Ogranicz samodzielne hostowane procesory tylko do repozytoriów prywatnych
  • Wymaganie zatwierdzenia przepływu pracy dla żądań ściągnięcia od zewnętrznych współautorów
  • Uruchamianie własnych modułów uruchamianych w bezpiecznym, izolowanym środowisku (na przykład kontenerach, maszynach wirtualnych)
  • Blokowanie nieautoryzowanego dostępu przy użyciu zapór i reguł sieci
  • Ograniczanie dostępu do poufnych tajemnic i bezpieczne przechowywanie danych uwierzytelniających
  • Monitorowanie i rejestrowanie aktywności procesu w celu wykrywania anomalii

Wybieranie odpowiednich wykonawców do obsługi obciążeń

Omówienie modułów uruchamiaczy usługi GitHub

Funkcja GitHub Actions obsługuje dwa typy modułów uruchamiaczy:

  1. Moduły uruchamiane w usłudze GitHub

    • Zarządzane przez usługę GitHub, automatycznie aprowizowane i skalowane.
    • Obejmuje wstępnie zainstalowane oprogramowanie, narzędzia i zależności dla typowych przepływów pracy.
    • Dostępne dla systemów Windows, Linux i macOS.
    • Zalecane w przypadku ogólnych automatyzacji, projektów typu open source i szybkiej konfiguracji.
  2. Moduły uruchamiane samodzielnie

    • Zarządzane przez użytkownika, zapewniając pełną kontrolę nad środowiskiem i zasobami.
    • Można skonfigurować pod kątem niestandardowej infrastruktury sprzętowej, lokalnej lub chmurowej.
    • Obsługuje trwałe stany między zadaniami, umożliwiając lepsze buforowanie i niestandardowe zależności.
    • Zalecane w przypadku repozytoriów prywatnych, obciążeń przedsiębiorstwa i zadań intensywnie korzystających z wydajności.

Wybór między runnerami hostowanymi przez GitHub a własnymi runnerami.

Dwa typy modułów uruchamiający mogą wykonywać przepływy pracy funkcji GitHub Actions: moduły uruchamiane przez usługę GitHub lub uruchamiane samodzielnie.

Uwaga

Moduły uruchamiane w usłudze GitHub są dostępne tylko dla chmury enterprise. Jeśli masz wystąpienie serwera Enterprise Server, ta sekcja nie ma zastosowania do Ciebie.

Moduły uruchamiane w usłudze GitHub oferują szybszy i prostszy sposób uruchamiania przepływów pracy, natomiast moduły uruchamiane samodzielnie są wysoce konfigurowalnym sposobem uruchamiania przepływów pracy we własnym środowisku niestandardowym. Jeśli na przykład musisz użyć listy dozwolonych adresów IP dla organizacji lub wyspecjalizowanej konfiguracji sprzętu do uruchamiania przepływów pracy, użyj własnego modułu uruchamiającego.

W poniższej tabeli porównaliśmy moduły uruchamiającego hostowane w usłudze GitHub z własnymi modułami uruchamiającym. Użyj go, aby wybrać odpowiedni moduł uruchamiający obciążenie.

Moduły uruchamiane w usłudze GitHub Moduły uruchamiane samodzielnie
Otrzymywanie automatycznych aktualizacji dla systemu operacyjnego, wstępnie zainstalowanych pakietów i narzędzi oraz aplikacji modułu uruchamiającego własne. Otrzymywanie aktualizacji automatycznych tylko dla aplikacji modułu uruchamiającego samodzielnie. Odpowiadasz za aktualizowanie systemu operacyjnego i wszystkich innych oprogramowania.
Usługa GitHub zarządzana i utrzymywana. Może korzystać z usług w chmurze lub maszyn lokalnych, za które już płacisz. Można również dostosowywać do wymagań dotyczących sprzętu, systemu operacyjnego, oprogramowania i zabezpieczeń.
Podaj czyste wystąpienie dla każdego wykonania zadania. Nie musisz mieć czystego wystąpienia dla każdego wykonania zadania.
Użyj bezpłatnych minut w planie usługi GitHub, a stawki za minutę są stosowane po przekroczeniu bezpłatnych minut. Korzystanie z funkcji GitHub Actions jest bezpłatne, ale ponosisz odpowiedzialność za utrzymanie maszyn modułu uruchamiającego.

Wybór odpowiedniego systemu operacyjnego dla biegaczy

1. Linuxowe runnery (ustawienie domyślne)
  • Najlepsze dla większości obciążeń
  • Szybkie, ekonomiczne i powszechnie obsługiwane
  • Używane w CI/CD, skryptach, Dockerze i automatyzacji
    Przykład: ubuntu-latest, ubuntu-22.04
2. Moduły uruchamiacze systemu Windows
  • Wymagane w przypadku aplikacji .NET, oprogramowania opartego na systemie Windows i graficznego interfejsu użytkownika
  • Obsługuje program PowerShell, zależności specyficzne dla systemu Windows
    Przykład: windows-latest, windows-2022
3. Moduły uruchamiacze systemu macOS
  • Moduły uruchamiacze systemu macOS są wymagane w przypadku kompilacji specyficznych dla systemu iOS, macOS, Xcode i firmy Apple
  • Obsługuje aplikacje Swift, Objective-C i macOS
    Przykład: macos-latest, macos-13

Najlepsze praktyki dotyczące wyboru biegaczy

  • Użyj agentów hostowanych w GitHub do ogólnych przepływów pracy i automatyzacji.
  • Używaj samodzielnie hostowanych procesów w środowiskach niestandardowych, przy dużych obciążeniach lub w aplikacjach wymagających zwiększonego bezpieczeństwa.
  • Wybierz uruchamiacze Linux dla większości obciążeń ze względu na wydajność i efektywność kosztową.
  • Używaj agentów Windows lub macOS tylko wtedy, gdy jest to konieczne dla zapewnienia zgodności.
  • Regularnie aktualizuj i monitoruj moduły uruchamiane samodzielnie, aby zapobiec zagrożeniom bezpieczeństwa.

Porównaj środowiska uruchomieniowe hostowane przez GitHub i samodzielnie hostowane

GitHub Actions obsługuje dwa typy runnerów do wykonywania przepływów pracy:

  1. Moduły uruchamiane w usłudze GitHub — zarządzane przez usługę GitHub, automatycznie aprowizowane i wstępnie skonfigurowane przy użyciu typowych narzędzi programistycznych.
  2. Własne moduły uruchamiające — zarządzane przez użytkownika, co umożliwia pełną kontrolę nad środowiskiem, zasobami i konfiguracjami.

W tej sekcji przedstawiono najważniejsze różnice między agentami hostowanymi przez GitHub i samodzielnie hostowanymi.

Porównanie: procesy uruchamiane na GitHubie a własne procesy uruchamiane na serwerze

Funkcja Moduł uruchamiający hostowany w usłudze GitHub Własny moduł uruchamiający
Instalacja i konserwacja Nie jest wymagana żadna konfiguracja; Usługa GitHub zarządza wszystkimi elementami Użytkownik musi instalować, konfigurować i obsługiwać
Skalowalność Dynamicznie automatyzuje skalowanie Musi ręcznie provisionować dodane runnery
Bezpieczeństwo Wysoki poziom zabezpieczeń; nowe środowisko wirtualne dla każdego zadania Wymaga ręcznego wzmacniania zabezpieczeń
Dostosowywanie Tylko wstępnie zainstalowane narzędzia; ograniczone możliwości W pełni dostosowywalny; użytkownik może zainstalować dowolne zależności
Wydajność Standardowe zasoby obliczeniowe Może używać sprzętu o wysokiej wydajności
Trwałość stanu Wykonuje reset po każdej operacji Może utrwalać dane między zadaniami
Koszt Bezpłatna dla repozytoriów publicznych; ograniczone bezpłatne użycie dla prywatnych repozytoriów Brak kosztów usługi GitHub, ale wymaga inwestycji w infrastrukturę
Dostęp sieciowy Brak bezpośredniego dostępu do sieci wewnętrznych Może uzyskiwać dostęp do sieci wewnętrznych/prywatnych
Przypadek użycia Najlepsze do ogólnych projektów CI/CD, automatyzacji i projektów open-source Najlepsze dla środowisk korporacyjnych, bezpiecznych kompilacji i dużych obciążeń.

Kluczowe różnice i zagadnienia

1. Instalacja i konserwacja
  • Moduły uruchamiane w usłudze GitHub wymagają konfiguracji zerowej; użytkownicy mogą natychmiast rozpocząć uruchamianie przepływów pracy.
  • Moduły uruchamiane samodzielnie wymagają ręcznej instalacji, konfiguracji, aktualizacji i zarządzania zabezpieczeniami.
2. Zagrożenia bezpieczeństwa
  • Agenty GitHub uruchamiane w izolowanych maszynach wirtualnych, resetują się po zakończeniu każdego zadania, minimalizując powierzchnie ataków.
  • Własne moduły uruchamiające działają między zadaniami, co oznacza, że kompromitowany moduł uruchamiający może być użyty w wielu uruchomieniach przepływu pracy.
3. Zagadnienia dotyczące wydajności i kosztów
  • Moduły uruchamiane w usłudze GitHub zapewniają standardowe środowisko , ale mają limity użycia (na przykład bezpłatne minuty miesięcznie dla repozytoriów prywatnych).
  • Moduły uruchamiane samodzielnie umożliwiają lepsze dostrajanie wydajności (na przykład na serwerach wysokiej klasy), ale wymagają kosztów infrastruktury i konserwacji.
4. Sieć i dostęp
  • Runnerzy GitHub nie mogą uzyskać dostępu do zasobów prywatnych/wewnętrznych bez dodatkowych konfiguracji.
  • Moduły uruchamiane samodzielnie mogą uzyskiwać dostęp do systemów wewnętrznych, co czyni je idealnym rozwiązaniem w przypadku repozytoriów prywatnych, narzędzi wewnętrznych i wdrożeń lokalnych.

Kiedy używać każdego z runnerów?

Użyj uruchomień hostowanych w GitHubie, jeśli:

  • Potrzebna jest szybka i łatwa konfiguracja bez zarządzania infrastrukturą.
  • Przepływ pracy nie wymaga niestandardowych zależności poza wstępnie zainstalowanymi narzędziami.
  • Pracujesz nad repozytorium open source lub publicznym z bezpłatnymi minutami serwera uruchamiającego.

Użyj własnych modułów uruchamiaczy, jeśli:

  • Przepływ pracy wymaga określonych zależności, konfiguracji lub stanów trwałych.
  • Musisz uzyskać dostęp do zasobów sieci prywatnej (na przykład lokalnych baz danych, usług wewnętrznych).
  • Maszyny o większej wydajności są wymagane dla potoków ciągłej integracji/ciągłego wdrażania na dużą skalę.