CI runner na tym samym serwerze GitLab?

12

Konfiguruję serwer GitLab w mojej firmie i teraz dodaję do niego GitLab CI.

Przed rozpoczęciem tego zadania chciałbym zrozumieć, czy są jakieś wady związane z uruchamianiem moich programów uruchamiających na tym samym serwerze, z którego korzystają GitLab i GitLab CI.

Czytałem, że istnieją obawy dotyczące bezpieczeństwa, ale używamy go tylko wewnętrznie, więc nie sądzę, że może to stanowić problem.

Czy coś brakuje?

Fez Vrasta
źródło

Odpowiedzi:

11

Wyobraź sobie następujące sytuacje:

  • Wewnętrzny programista chce zaszkodzić firmie (ponieważ uważa, że ​​jest niedopłacony, ponieważ jego szef śpi z żoną; powód nie ma znaczenia) przeprowadza test jednostkowy, który po uruchomieniu zamiast testowania aplikacji wyszukuje repozytorium GitLab i usuwa to. Przy następnym zatwierdzeniu, niespodzianka, cały kod źródłowy projektu jest tracony (ale wykonujesz kopie zapasowe i testowałeś je, prawda?)

  • Lub te same informacje dla programistów, że kopie zapasowe repozytorium są skonfigurowane na tym samym komputerze. Zmienia tę konfigurację za pomocą testu jednostkowego, dzięki czemu kopia zapasowa zawiera teraz inne repozytorium i czeka przez miesiąc - czas przechowywania kopii zapasowych. Teraz, gdy wszystkie kopie zapasowe są uszkodzone, może przeprowadzić test jednostkowy, który usuwa kod źródłowy z serwera.

  • Lub stażysta chce sprzedać kod źródłowy konkurencji. Ostrożnie skonfigurowałeś dostęp, ograniczając go tylko do tego, czego potrzebuje do swojej pracy. Jednocześnie ma nieograniczony dostęp do samego repozytorium poprzez testy jednostkowe, będąc w stanie wykonać pełny zrzut.

O ile testy jednostkowe nie są przeprowadzane w kontekście ograniczonych uprawnień i nie mogą uzyskać dostępu do niczego poza katalogami i plikami potrzebnymi do testów, mieszanie serwera CI z serwerem, który utrzymuje twoje repozytorium, jest naprawdę niebezpieczne.

Innym problemem jest to, że serwer kontroli wersji powinien być szybki. Serwer CI zainstalowany na tym samym komputerze może spowolnić zatwierdzanie.

Arseni Mourzenko
źródło
8
Jesteśmy 3 programistami ... jeśli ktoś z nas chce skrzywdzić firmę, może to zrobić na tysiące sposobów = (... Więc jedynym problemem byłyby wolne wydajności, ale jeśli użyję ładnej maszyny, nie powinienem mieć dużej kłopoty, prawda? Dzięki!
Fez Vrasta
ps: a chroot? Nie można użyć, aby proces był bezpieczny?
Fez Vrasta
4
@ FezVrasta: jeśli bezpieczeństwo nie jest problemem w twoim przypadku, podobnie jak wydajność, jedyną korzyścią z posiadania oddzielnych komputerów, które widzę, jest skalowalność w przyszłości. Ale szczerze mówiąc, wprowadzanie zmian, zanim pojawią się problemy ze skalowalnością, wygląda podobnie do przedwczesnej optymalizacji.
Arseni Mourzenko
@FezVrasta: „co z chroot? Nie można go wykorzystać do zapewnienia bezpieczeństwa procesu?” - Nie mam wystarczających umiejętności w zakresie bezpieczeństwa Uniksa, aby odpowiedzieć na to pytanie.
Arseni Mourzenko
0

Biorąc pod uwagę, że nie ma centralnego „wszechwiedzącego” serwera dla git, nie jest to złe, jak w przypadku niektórych innych systemów kontroli kodu źródłowego.

Pod warunkiem, że istnieje automatyczny syk serwera git poza witryną innego serwera git (który jest testowany), nie martwiłbym się tą konfiguracją w małej firmie.

Idealnie chciałbym zobaczyć, jak programiści wypychają swoje zmiany na serwer git serwera offsetowego, a następnie serwer CI, aby pobierać opłaty z serwera offsetowego - w ten sposób testowany jest serwer offsite po każdym sprawdzeniu.

Jeśli programiści zawsze robili to z serwera lokalnego, aby zaoszczędzić czas, nie stanowi to problemu.

Ian
źródło
1
jeśli potrzebuję 2 serwerów ... dlaczego nie powinienem po prostu uruchamiać programów biegających na drugim serwerze?
Fez Vrasta
@FezVrasta, w „ poza biurem serwer” może być ktoś, że będzie sprzedawać git hostingu, to nie musi być serwerem jesteś właścicielem. Również w Internecie będzie to robić powoli.
Ian
1
Konfiguruję to dla mojej firmy, używamy własnych serwerów ...
Fez Vrasta