Proces CI/CD w oparciu o DevSecOps
Szybkie tempo rozwoju oprogramowania i przechodzenie organizacji na model DevOps wymaga innowacyjnego podejścia do bezpieczeństwa. Organizacje muszą uwzględnić wszystkie aspekty bezpieczeństwa w całym cyklu życia ich produktu, począwszy od opracowania podstawowego szablonu projektu, a skończywszy na jego wdrożeniu.
W polskim tłumaczeniu CI/CD to nic innego jak Ciągła Integracja (CI) i Ciągłe Dostarczanie (CD) Jest to zestaw zasad działania i zbiór praktyk, które umożliwiają zespołom programistycznym częstsze i bardziej niezawodne dostarczanie zmian w kodzie. CI/CD to jedna z najlepszych praktyk do wdrożenia przez zespoły Devops. Ponieważ poszczególne etapy wdrażania są zautomatyzowane jest to również najlepsza praktyka metodologii zwinnej, umożliwiająca zespołom programistycznym skupienie się na spełnianiu wymagań biznesowych, jakości kodu i bezpieczeństwie. Ciągła integracja i ciągłe dostarczanie (CI/CD) pomagają zespołom międzyfunkcyjnym np. zespołowi wirtualizacji, sieci wraz z zespołem programistycznym w wypełnianiu ich zadań, zapewniając automatyzację, nadzór i bezpieczeństwo procesu dostarczania oprogramowania.
DevOps to sposób, w jaki zespoły programistyczne pracują z ludźmi, procesami i technologiami, pozwalając dostarczać wartość swoim klientom. W cyklu życia DevOps zespoły nie koncentrują się tylko na wydaniu swoich produktów/programów, ale aby odnieść sukces dzięki DevOps, zespoły muszą dostarczać wartość w szybki, bezpieczny i powtarzalny sposób.
Natomiast DevSecOps, to sposób na podejście do bezpieczeństwa IT z myślą „każdy jest odpowiedzialny za bezpieczeństwo”. Obejmuje on wprowadzenie praktyk bezpieczeństwa do cyklu DevOps organizacji. Celem jest włączenie zabezpieczeń na wszystkich etapach procesu tworzenia oprogramowania. Podejście to znacząco różni się w porównaniu z poprzednimi modelami rozwoju. DevSecOps oznacza bowiem, że nie zostawiamy bezpieczeństwa wyłącznie na końcowe etapy SDLC (cyklu życia tworzenia oprogramowania).
Jak włączyć DevSecOps do obecnego procesu DevOps lub SDLC?
Implementacja DevSecOps nie jest trywialnym zadaniem i wymaga dostosowania wielu zintegrowanych narzędzi, procesów i zasad. Wykorzystanie spójnej architektury referencyjnej zapewni ścisłą współpracę wszystkich aspektów automatyzacji.
DevSecOps to jednak obowiązkowa metodologia, którą należy zintegrować z procesem DevOps, aby pomóc poprawić bezpieczeństwo w SDLC. Istnieje pięć ważnych faz, które należy wykonać, aby włączyć DevSecOps w bieżącym procesie DevOps lub w SDLC. Przy wdrożeniach wykorzystuje się najlepsze praktyki kultury DevSecOps począwszy od planowania, inwentaryzacji, budowy przykładowego procesu CI/CD, poprzez wdrożenie i ewaluację.
Oto kluczowe fazy, które to umożliwiają:
Faza 1: Ochrona środowiska pracy.
Należy rozpocząć od wdrożenia bezpiecznych środowisk pracy. Podczas tworzenia aplikacji w większości przypadków deweloperzy korzystają z wielu technologii, w tym open-source. Docker jest świetnym pomocnikiem na tym etapie, ponieważ automatyzuje wdrażanie infrastruktury i usług nawet na komputerach lokalnych. Korzystając z tego gotowego do użycia środowiska, należy upewnić się, że używane są najnowsze / zaktualizowane wersje obrazów platformy Docker. Niestety nawet obrazy pochodzące od oficjalnych dostawców często zawierają już podatności.
Faza 2: Kontrola wersji i analiza bezpieczeństwa kodu.
Należy włączyć sprawdzanie błędów w zabezpieczeniach podczas przesyłania kodu źródłowego do repozytorium. Występowanie wielu dostawców lub osób pracujących nad fragmentem kodu może prowadzić do luk w zabezpieczeniach, zwłaszcza gdy są one rozproszone. Systemy Git, SonarQube czy też Microfocus Fortify są doskonałym usprawnieniem współpracy i uzupełnieniem mechanizmów bezpieczeństwa znajdujących się między członkami zespołu, a repozytorium.
Faza 3: Ciągła integracja i budowa.
Tworząc obraz / pakiet deweloperski, należ upewnić się, że narzędzie lub system do kompilacji posiada odpowiednie zabezpieczenia. Należy do nich protokół SSL, który jest odpowiednio bezpieczny, dostępny i chroniony przed atakami. Narzędzia, których można użyć to Jenkins, Circle CI, Openshift Pipelines.
Faza 4: Promocja i wdrożenie.
Podczas wdrażania w środowisku wstaw zmienne środowiskowe za pomocą narzędzia CI/CD. Zarządzanie kluczami dostępu polega na automatyzacji udostępniania i przechowywania kluczy. Pomocne są przy tym takie narzędzia, jak Vault, Conjure, Azure Key Vault. Zalecane jest odpowiednie szyfrowanie i zarządzanie nimi w celu ulepszenia protokołów bezpieczeństwa.
Faza 5: Bezpieczeństwo infrastruktury.
Tworzenie aplikacji w kontenerach jest łatwym i otwartym procesem, ale ma także wadę: może powodować nieumyślne użycie składników oprogramowania innych firm, które posiadają podatności. Dzięki ochronie kontenerów realizowane są zasady blokujące użycie obrazów z określonymi podatnościami. Programiści mogą nieustannie wykrywać podatności i korygować je w procesie DevOps, wdrażając wtyczki do narzędzi CI / CD, takie jak Jenkins lub Bamboo, lub za pośrednictwem interfejsów API REST. Rozwiązania do ochrony kontenerów oferują np. firmy Rapid7, Qualys czy Aquasec.
Należy pamiętać, iż gdy gotowy kod trafi do produkcji, nie oznacza to, że będzie on w 100% bezpieczny. Nowe podatności ujawniane są każdego dnia, ale ten cykl pomoże zespołowi przetestować kod pod kątem wszystkich repozytoriów znanych zagrożeń (np. CVE, Mitre) w czasie monitorowania, konfigurowania, rekonfiguracji, adaptacji i wdrażania rozwiązań w środowisku.
Jakie są kluczowe aspekty zabezpieczania CI/CD?
Oto najważniejsze praktyki przeznaczone dla organizacji, które chcą wdrożyć DevSecOps.
Platforma i bezpieczeństwo danych:
- Standaryzacja i automatyzacja środowiska.
- Każda usługa powinna mieć jak najmniejsze uprawnienia, aby zminimalizować nieautoryzowane połączenia i dostęp.
- Scentralizowana tożsamość użytkowników i możliwości kontroli dostępu. Ścisła kontrola dostępu i scentralizowane mechanizmy uwierzytelniania są niezbędne do zabezpieczenia mikrousług, ponieważ uwierzytelnianie jest inicjowane w wielu punktach.
- Izolacja kontenerów z mikrousługami od siebie i w sieci. Działanie to obejmuje dane zarówno w trakcie przesyłania, jak i spoczynku, ponieważ oba zasoby mogą stanowić wartościowe cele dla atakujących.
- Szyfrowanie danych między aplikacjami i usługami. Platforma do orkiestracji kontenerów ze zintegrowanymi funkcjami bezpieczeństwa pomaga zminimalizować ryzyko nieautoryzowanego dostępu.
- Wprowadzenie bezpiecznych interfejsów API. Bezpieczne interfejsy API zwiększają autoryzację i widoczność routingu. Zmniejszając liczbę narażonych interfejsów API, organizacje mogą zmniejszyć powierzchnię ataków.
Bezpieczeństwo procesu CI/CD:
- Zautomatyzowane testy bezpieczeństwa w procesie CI SAST i DAST. Działanie to obejmuje uruchamianie narzędzi do statycznej analizy kodu źródłowego w ramach kompilacji, a także skanowanie wszelkich gotowych obrazów kontenerów pod kątem znanych luk w zabezpieczeniach, gdy są one wciągane do potoku kompilacji.
- Zautomatyzowanie i aktualizacja zabezpieczeń, takie jak poprawki do znanych luk w zabezpieczeniach.
- Skanowanie bezpieczeństwa kontenerów – analiza obrazów kontenerów pod kątem ujawnionych kluczy, podatnej na ataki konfiguracji i zachowania zgodności.
- Dynamiczne testy bezpieczeństwa aplikacji – skanowanie uruchomionej aplikacji pod kątem typowych luk w zabezpieczeniach (jak top 10 OWASP).
- Zautomatyzowanie możliwości zarządzania konfiguracją systemu i usług. Pozwala to na zgodność z politykami bezpieczeństwa i eliminację ręcznych błędów. Audyty i działania naprawcze również powinny być zautomatyzowane.
Podsumowanie – Bezpieczna Architektura DevSecOps
Praktyki i technologie DevOps ewoluują tak szybko, że wiele organizacji ma problemy z nadążaniem za zmianami. Z tego powodu gotowe do użycia rozwiązanie DevOps może uprościć i przyspieszyć wdrożenie oraz pozwolić organizacjom skupić się na dostarczaniu strategicznych aplikacji, zamiast na narzędziach. Najlepsze w swojej klasie rozwiązanie musi integrować kluczowe technologie, a także uwzględniać dojrzewające metody DevOps w zakresie zabezpieczeń w DevSecOps. Każde środowisko jest wyjątkowe. Współpracujemy z wiodącymi dostawcami narzędzi do orkiestracji, w tym Kubernetes. Korzysta z narzędzi CI/CD, narzędzi do monitorowania i platform chmurowych, które upraszczają zarządzanie bezpieczeństwem kontenerów.
Data publikacji: 27.10.2021