Zabezpiecz swój łańcuch dostaw oprogramowania na każdym etapie – od budowania po wdrożenie

Weryfikuj każdy element potoku
![[object Object]](https://assets.ovhcloud.com/1fitXw7nboFbjbnFuvgF3SzuC_sMTliYmQ0MDcwMTZlZGU4/b18ae264-0c9b-41c5-b6f9-05e25cbfa958_ima_0100bc39.png)
Zapewnij wiarygodność wydań oprogramowania dzięki weryfikowalnym mechanizmom kontroli
Chroń każdy etap, który może stać się celem ataku
Czym jest bezpieczeństwo łańcucha dostaw w nowoczesnym środowisku kontenerowym?
Czym jest bezpieczeństwo łańcucha dostaw w nowoczesnym środowisku kontenerowym? Obejmuje ono ochronę całego procesu – od kodu źródłowego i zależności pochodzących od firm trzecich, przez systemy budowania oprogramowania i przechowywanie obrazów kontenerów, aż po docelowe środowiska wdrożeniowe. Bezpieczeństwo łańcucha dostaw oprogramowania wymaga traktowania tych procesów jako wzajemnie powiązanych, ponieważ atak na jednym z początkowych etapów może osłabić wszystkie mechanizmy zabezpieczające na kolejnych etapach.
Ochrona repozytorium kodu źródłowego
Repozytorium kodu źródłowego jest oczywistym celem ataków. Atakujący może wykraść dane uwierzytelniające, zmodyfikować kod, wyłączyć regułę wymagającą przeglądu kodu lub wprowadzić zależność, która sprawia wrażenie wiarygodnej. Kontrolowane źródła pobierania oprogramowania, obowiązkowy przegląd kodu przez inną osobę i chronione gałęzie repozytorium stanowią pierwszą linię obrony. Zespoły powinny również przypinać wersje zależności oraz weryfikować sumy kontrolne, licencje i pochodzenie komponentów, zamiast dopuszczać do wykorzystywania zmieniających się elementów wejściowych przy każdym budowaniu oprogramowania. Kontrole te ograniczają ryzyko wprowadzenia do projektu złośliwego lub niezatwierdzonego oprogramowania pochodzącego od podmiotów zewnętrznych.
Ścieżki ataku na infrastrukturę budowania oprogramowania
Infrastruktura służąca do budowania oprogramowania może stać się celem ataków przeprowadzanych na różne sposoby. Przejęte przez atakujących agenty wykonawcze CI/CD (runnery), ujawnione poufne dane lub modyfikowalne obrazy bazowe mogą umożliwić zmianę artefaktu po zatwierdzeniu jego kodu źródłowego przez programistów. Izoluj procesy budowania oprogramowania, korzystaj z danych uwierzytelniających o krótkim okresie ważności i dokładnie rejestruj wszystkie elementy wykorzystywane w tych procesach. Takie podejście zwiększa bezpieczeństwo obrazów kontenerów, ułatwiając śledzenie nieoczekiwanych zmian w kodzie.
Mechanizmy kontroli między rejestrem a klastrem
Przekazywanie obrazów z rejestru do klastra wymaga niezależnych mechanizmów kontroli. Atakujący może podmienić zatwierdzony obraz, ponownie użyć starego tagu lub wykorzystać nadmiernie szerokie uprawnienia do wdrażania. Dostęp oparty na zasadzie najmniejszych uprawnień ogranicza zakres elementów, które poszczególne tożsamości mogą publikować lub pobierać. Niezmienne odwołania wiążą manifesty z konkretnymi obrazami, a narzędzie Kyverno może odrzucać wdrożenia, które nie mają wiarygodnego potwierdzenia zgodności lub naruszają wymagania bezpieczeństwa.
Wyznacz osoby odpowiedzialne za cztery priorytetowe obszary zarządzania
Zarządzanie zaufanym kodem i dostawcami
Wyznaczony lider powinien określić kryteria uznawania źródeł i dostawców za zaufanych, korzystając ze wsparcia zespołów ds. zakupów, inżynierii i bezpieczeństwa. Wykorzystuj wytyczne SLSA do zwiększania integralności procesu budowania oprogramowania i zapewniania możliwości weryfikacji pochodzenia artefaktów, nie zakładając przy tym osiągnięcia określonego poziomu SLSA. Dostosuj zakres przeglądów do wielkości organizacji i poziomu ryzyka związanego z łańcuchem dostaw oprogramowania.
Egzekwowanie polityk i infrastruktura zgodna z wymaganiami
Osoby odpowiedzialne za bezpieczeństwo i platformę powinny przekładać obowiązki związane z zapewnieniem zgodności z wymaganiami na mierzalne mechanizmy egzekwowania polityk obejmujące kod, środowisko chmurowe i infrastrukturę. Określ, kto może zatwierdzać wyjątki, jakie dowody musi przedstawić i w jaki sposób mechanizmy kontroli spełniają wymagania wewnętrzne.
Dokumentacja, audyty i dowody
Wyznacz osobę odpowiedzialną za prowadzenie dokumentacji dotyczącej podejmowanych decyzji, zależności i zmian w mechanizmach kontroli. Regularne audyty powinny weryfikować, czy dokumentacja odzwierciedla rzeczywiste praktyki operacyjne. Zapewnij osobom przeprowadzającym przeglądy odpowiednie wsparcie, aby mogły ustalić, kto odpowiada za dany problem, którego wydania oprogramowania on dotyczy i w jaki sposób został rozwiązany.
Gotowość do reagowania na incydenty i odpowiedzialność za działania naprawcze
Osoba kierująca zespołem ds. bezpieczeństwa powinna skoordynować role związane z reagowaniem na incydenty odpowiednio wcześnie, zanim atakujący wystawi je na próbę. Utrzymuj plan postępowania w przypadku potencjalnych incydentów, obejmujący ich wstępną ocenę i klasyfikację, powstrzymywanie zagrożeń, komunikację z interesariuszami oraz przywracanie normalnego działania. Dla każdego działania należy wyznaczyć osobę odpowiedzialną, zapewnić odpowiednie zasoby i ustalić terminy dostosowane do poziomu ryzyka, na jakie narażona jest organizacja.
Zarządzaj platformą Harbor w oparciu o cztery filary bezpieczeństwa
Precyzyjnie kontroluj dostęp
Harbor obsługuje kontrolę dostępu opartą na rolach (RBAC) na poziomie projektów i zespołów, co umożliwia rozdzielenie obciążeń roboczych i zakresów odpowiedzialności w przedsiębiorstwie. Twórz konta robotów o ograniczonych uprawnieniach do przesyłania (push) i pobierania (pull) obrazów w procesie CI/CD, zamiast udostępniać dane uwierzytelniające użytkowników o szerokich uprawnieniach. Każdej tożsamości przypisz jeden konkretny cel, regularnie zmieniaj powiązany z nią sekret uwierzytelniający i usuwaj nieużywane uprawnienia dostępu. Takie postępowanie ogranicza skutki ujawnienia danych uwierzytelniających, a jednocześnie zapewnia bezpieczeństwo podczas codziennego publikowania obrazów.
Wykrywaj niebezpieczne komponenty na bieżąco
Połącz ciągłe skanowanie za pomocą Trivy z analizą składu oprogramowania (SCA) i zarządzaniem zależnościami. Narzędzia te wykrywają znane podatności, nieaktualne pakiety oraz oznaki obecności złośliwego kodu w poszczególnych komponentach. Dla każdego wydania przygotowuj przejrzysty raport zawierający poziom istotności wykrytych problemów, miejsce ich występowania oraz status działań naprawczych. Dzięki temu zespoły mogą odróżniać problemy blokujące wdrożenie od zaakceptowanych wyjątków oraz identyfikować sytuacje, w których nowe informacje o zagrożeniach dotyczą przechowywanych artefaktów.
Zintegruj procesy tworzenia oprogramowania
Połącz platformę z GitLab CI, Tekton i innymi zatwierdzonymi procesami tworzenia oprogramowania. Egzekwuj polityki bezpieczeństwa bezpośrednio w procesie CI/CD, aby negatywny wynik kontroli dostarczał użytecznych informacji zwrotnych przed przekazaniem artefaktu do kolejnego etapu. Odwołania w systemie zarządzania kodem źródłowym (SCM) powinny umożliwiać powiązanie każdego artefaktu z odpowiednim commitem, uruchomieniem procesu budowania oprogramowania i osobą odpowiedzialną. Dzięki temu zespoły DevSecOps dysponują spójną dokumentacją, zamiast dowodów rozproszonych w różnych systemach.
Przygotuj procedury reagowania na incydenty
Utrzymuj aktualny plan reagowania na incydenty związane z przejęciem danych uwierzytelniających, obrazami stwarzającymi zagrożenie dla bezpieczeństwa oraz nieskutecznymi mechanizmami kontroli. Określ, kto odpowiada za wstrzymanie dystrybucji, wycofanie wersji, której dotyczy incydent, sprawdzenie historii dostępu i zatwierdzenie przywrócenia działania. Każdy alert musi mieć przypisaną osobę odpowiedzialną i określoną ścieżkę reagowania – samo generowanie alertów nie zmniejsza ryzyka. Przeprowadzaj ćwiczenia, aby upewnić się, że zespoły ds. bezpieczeństwa i zarządzania platformą potrafią znaleźć odpowiedni raport, odizolować zagrożoną zawartość i przekazać podjęte decyzje. Ten filar operacyjny pozwala przekładać wykrywanie zagrożeń na szybkie działania w całej platformie dostarczania oprogramowania.
Zachowuj wiarygodne dowody potwierdzające bezpieczeństwo każdego wydania
![[object Object]](https://assets.ovhcloud.com/1fizSgoLX7LAb5m2AAqmCv3gA_sZTMwNzM1NGY2YWQ5N2M0/9f9bf6c7-1f30-418e-aec9-ae4917f627c3_ima_c561b8a0.png)