Co to jest metodyka DevSecOps?
Dowiedz się, jak zintegrować rozwiązania w zakresie zabezpieczeń z każdą fazą cyklu życia tworzenia oprogramowania w środowisku wielu chmur.
Definicja metodyki DevSecOps
DevSecOps, czyli programowanie, zabezpieczenia i operacje, to struktura, która integruje zabezpieczenia we wszystkich fazach cyklu tworzenia oprogramowania. Organizacje stosują to podejście, aby zmniejszyć ryzyko wydania kodu z lukami w zabezpieczeniach. Dzięki współpracy, automatyzacji i przejrzystym procesom zespoły dzielą się odpowiedzialnością za bezpieczeństwo, zamiast pozostawiać je na końcu, kiedy to rozwiązywanie problemów może być znacznie trudniejsze i kosztowniejsze. DevSecOps to kluczowy składnik strategii zabezpieczeń wielu chmur.
DevSecOps versus DevOps
W przypadku tradycyjnego tworzenia oprogramowania projekty są podzielone na odrębne fazy planowania, projektowania, programowania, integracji i testowania, które są wykonywane sekwencyjnie przez kilka miesięcy, a nawet lat. Chociaż takie podejście jest bardzo metodyczne, wiele organizacji uznało, że jest zbyt wolne, co utrudnia spełnienie oczekiwań klientów dotyczących ciągłych ulepszeń produktów. Ponadto zabezpieczenia zwykle są zostawiane na samym końcu, co naraża firmy na ryzyko naruszenia zabezpieczeń.
Aby zachować konkurencyjność, wiele firm wdrożyło model DevOps, który priorytetyzuje dostarczanie mniejszych pakietów kodu wysokiej jakości, a nie projektów rozbudowanych w funkcje, które trwa dłużej. W tej strukturze zespoły programistyczne i operacyjne współpracują nad testowaniem i integracją w całym procesie. Automatyzacja, ustandaryzowane procesy i współpraca ułatwiają zespołom szybkie działanie bez obniżania jakości.
DevSecOps to rozszerzenie metodyki DevOps, które tworzy zabezpieczenia we wszystkich aspektach procesu. Celem jest rozwiązanie problemów z zabezpieczeniami od samego początku projektu. W tej strukturze nie tylko cały zespół bierze odpowiedzialność za zapewnianie jakości i integrację kodu, ale także za bezpieczeństwo. W praktyce oznacza to, że zespoły dyskutują o implikacjach bezpieczeństwa podczas planowania i rozpoczynają testowanie pod kątem problemów z zabezpieczeniami w środowiskach deweloperskich, zamiast czekać do końca. Inną nazwą tego podejścia jest przesunięcie zabezpieczenia w lewo (shift left security).
Dlaczego metodyka DevSecOps jest ważna?
Istnieje wiele metod, za pomocą których atakujący uzyskują dostęp do danych i zasobów organizacji, ale powszechną taktyką jest wykorzystywanie luk w zabezpieczeniach oprogramowania. Tego typu naruszenia są kosztowne, czasochłonne i w zależności od ważności, szkodliwe dla reputacji firmy. Struktura DevSecOps zmniejsza ryzyko wdrażania oprogramowania z błędnymi konfiguracjami i innymi lukami w zabezpieczeniach, z których mogą korzystać niewłaściwi aktorzy.
Kluczowe składniki metodyki DevSecOps
Pomyślny proces DevSecOps obejmuje następujące składniki:
-
Ciągła integracja
Dzięki ciągłej integracji deweloperzy zatwierdzają swój kod w centralnym repozytorium wiele razy dziennie. Następnie kod zostaje automatycznie zintegrowany i przetestowany. Takie podejście umożliwia zespołom wykrywanie problemów z integracją i usterek na wczesnym etapie procesu, zamiast czekać do końca, gdy może istnieć kilka problemów, które należy rozwiązać.
-
Ciągłe dostarczanie
Ciągłe dostarczanie opiera się na ciągłej integracji, aby zautomatyzować proces przenoszenia kodu ze środowiska kompilacji do środowiska przejściowego. W środowisku przejściowym oprócz testowania jednostek oprogramowanie jest automatycznie testowane w celu zapewnienia działania interfejsu użytkownika, pomyślnego zintegrowania kodu, niezawodności interfejsów API i obsługi oczekiwanych woluminów ruchu. Celem tego podejścia jest spójne dostarczanie kodu gotowego do produkcji, który zapewnia wartość klientom.
-
Ciągłe zabezpieczenia
Tworzenie zabezpieczeń w całym cyklu życia tworzenia oprogramowania jest kluczowym składnikiem metodyki DevSecOps. Obejmuje to modelowanie zagrożeń na wczesnym etapie procesu i zautomatyzowane testowanie zabezpieczeń w całym cyklu życia, począwszy od własnych środowisk deweloperów. Dzięki dokładnym testom oprogramowania pod kątem problemów z zabezpieczeniami na wczesnym i częstym etapie organizacje mogą wydajnie dostarczać oprogramowanie z minimalnymi problemami.
-
Komunikacja i współpraca
Metodyka DevSecOps jest w dużym stopniu zależna od osób i zespołów, które ściśle ze sobą współpracują. Ciągła integracja wymaga współpracy w celu rozwiązywania konfliktów w kodzie, a zespoły muszą skutecznie komunikować się, aby ujednolicić te same cele.
Jak wdrożyć metodykę DevSecOps
Dodanie zabezpieczeń do procesu DevOps wymaga starannego planowania. Rozpocznij wolno od procesów, które powodują najmniejsze problemy dla zespołu i oferują największe korzyści związane z zabezpieczeniami. Oto kilka sposobów dodawania zabezpieczeń do typowego przebiegu metodyki DevOps.
-
Planowanie i opracowywanie
Wprowadzenie zabezpieczeń na wczesnym etapie przebiegów programistycznych nie tylko pomaga całkowicie zmniejszyć luki w zabezpieczeniach, ale także oszczędza czas, ponieważ łatwiej jest rozwiązywać problemy przed skompilowaniem i integracją kodu. Podczas planowania i programowania używaj modelowania zagrożeń do identyfikowania i ograniczania potencjalnych zagrożeń dla aplikacji. Pomoże to skompilować zabezpieczenia w aplikację od samego początku. Aby odkryć problemy z zabezpieczeniami przed zatwierdzeniem kodu w repozytorium udostępnionym, zaimplementuj zautomatyzowane kontrole, takie jak zintegrowane wtyczki zabezpieczeń środowiska projektowego, które przekazują deweloperom natychmiastową opinię, jeśli w napisanym kodzie istnieje potencjalne zagrożenie bezpieczeństwa. Podczas przeglądu kodu poproś osobę z doświadczeniem w zakresie zabezpieczeń o przedstawienie zaleceń dotyczących wprowadzania ulepszeń.
-
Zatwierdzanie kodu
Jednym z kluczy do pomyślnego procesu DevSecOps jest ciągła integracja. Deweloperzy zwykle zatwierdzają swój kod w centralnym repozytorium kilka razy dziennie, aby zapewnić wczesne wykrywanie problemów z integracją. Ważne jest, aby dodać zautomatyzowane kontrole zabezpieczeń do tej fazy. Może to obejmować skanowanie bibliotek i zależności innych firm, testowanie jednostek i statyczne testowanie zabezpieczeń aplikacji. Ważne jest również wdrożenie kontroli dostępu na podstawie ról w celu ochrony infrastruktury ciągłej integracji i ciągłego dostarczania przed osobami atakującymi, które chcą uruchomić złośliwy kod lub wykraść poświadczenia.
-
Kompilowanie i testowanie
Uruchamianie zautomatyzowanych skryptów zabezpieczeń w środowisku testowym pomaga odkryć potencjalne problemy, które nie zostały wcześniej wykryte. Niektóre testy zabezpieczeń, które można uruchomić w tej fazie, obejmują dynamiczne testowanie zabezpieczeń aplikacji, skanowanie infrastruktury, skanowanie kontenerów, weryfikację konfiguracji chmury i testy akceptacyjne zabezpieczeń.
-
Produkcja
Po wdrożeniu aplikacji w środowisku produkcyjnym niektóre organizacje przeprowadzają testy penetracyjne, aby spróbować znaleźć słabe strony w aktywnym środowisku. W testach penetracyjnych ludzie przyjmują sposób myślenia osoby atakującej i wyszukują sposoby naruszenia aplikacji.
-
Operacja
Nawet najlepszy proces DevSecOps nie wychwyci wszystkiego, więc ciągłe monitorowanie aplikacji pod kątem luk w zabezpieczeniach i zagrożeń ma kluczowe znaczenie. Dane analityczne mogą pomóc w ocenie, czy stan zabezpieczeń poprawia się, i wyróżnić obszary optymalizacji.
-
Narzędzia i technologie DevSecOps
Podczas wybierania narzędzi zabezpieczeń ważne jest wybranie tych, które dobrze współdziałają z bieżącą technologią DevOps. Ułatwi to uwzględnienie zabezpieczeń w całym procesie. Poniżej przedstawiono kilka typów narzędzi, które mogą być potrzebne:
-
Skanowanie infrastruktury jako kodu
Aby zwiększyć wydajność, zespoły DevSecOps zwykle używają narzędzi typu open source, takich jak Terraform, do zarządzania infrastrukturą, taką jak sieci, maszyny wirtualne i moduły równoważenia obciążenia, i aprowizowania jej za pomocą kodu, a nie ręcznego wykonywania tej operacji. Narzędzie Terraform pomaga zapewnić, że infrastruktura jest skonfigurowana i spójnie aktualizowana na setkach lub tysiącach serwerów. Aby zmniejszyć ryzyko, że błędy konfiguracji zostaną wdrożone w środowisku produkcyjnym, narzędzia do skanowania infrastruktury jako kodu automatycznie sprawdzają infrastrukturę na poziomie kodu pod kątem niezgodności z zasadami zabezpieczeń i standardami.
-
Statyczne testowanie zabezpieczeń aplikacji
Zanim ich kod zostanie skompilowany, deweloperzy DevSecOps rozpoczną testowanie niestandardowego kodu pod kątem luk w zabezpieczeniach. Ułatwia to rozwiązywanie problemów bez wpływu na kompilację. Statyczne narzędzia do testowania zabezpieczeń aplikacji ułatwiają ten proces dzięki automatycznym kontrolom i opiniom w czasie rzeczywistym. Wiele narzędzi określa dokładnie, który kod jest ryzykowny, i oferuje sugerowane poprawki.
-
Analiza kompozycji oprogramowania
Jednym ze sposobów wydajniejszego tworzenia aplikacji i funkcji przez zespoły jest użycie wtyczek i struktur innych firm. Te wstępnie utworzone narzędzia oszczędzają czas, ale mogą również powodować zagrożenia, takie jak problemy z licencjonowaniem, źle napisany kod lub luki w zabezpieczeniach. Narzędzia do analizy kompozycji oprogramowania identyfikują składniki typu open source w aplikacjach i oceniają je pod kątem zastrzeżonych lub bezpłatnych baz danych w celu wykrywania naruszeń licencji oraz problemów z zabezpieczeniami i jakością.
-
Interakcyjne testowanie zabezpieczeń aplikacji
Podczas testowania kontroli jakości lub używania aplikacji interakcyjne narzędzia zabezpieczeń aplikacji skanują kod w celu znalezienia luk w zabezpieczeniach i udostępniają raporty identyfikujące tam, gdzie w kodzie występuje problem.
-
Dynamiczne testowanie zabezpieczeń aplikacji
Dynamiczne testowanie zabezpieczeń aplikacji naśladuje metody, których niewłaściwy aktor może użyć do ataku na aplikację. To testowanie odbywa się, gdy aplikacja jest uruchomiona i jest oparta na wstępnie zdefiniowanych przypadkach użycia.
-
Skanowanie kontenerów
Kontenery są powszechnie używane w metodyce DevSecOps, ponieważ ułatwiają deweloperom łatwe wdrażanie samodzielnych jednostek kodu. W kontenerze znajduje się obraz kontenera, który zawiera kod uruchamiający procesy dla kontenera. Jednak te obrazy są często kompilowane przy użyciu istniejących obrazów lub pobierane z repozytoriów publicznych. Narzędzia do skanowania kontenerów, skanowanie kontenerów i porównywanie ich z publicznymi lub zastrzeżonymi bazami danych luk w zabezpieczeniach w celu wykrycia potencjalnych problemów z zabezpieczeniami.
Najlepsze rozwiązania dotyczące metodyki DevSecOps
Metodyka DevSecOps dotyczy tak samo zmian kultury, jak i procesów oraz narzędzi. Poniżej przedstawiono niektóre najlepsze rozwiązania ułatwiające jak najbardziej bezproblemowe wdrożenie tej struktury.
-
Zmiana kultury
Należy zauważyć, że ludzie mogą mieć trudności ze zmianą sposobu pracy i mogą wystąpić konflikty. Aby ułatwić im dostosowanie się, jasno informuj o celach i oczekiwaniach organizacji, zapewnij wiele możliwości dialogu i miej na uwadze, że będziesz potrzebować elastyczności, dopóki zespoły nie znajdą narzędzi, procesów i harmonogramu, które będą dla nich najlepsze.
-
Definiowanie wymagań i metryk
Ustanowienie planu bazowego minimalnych zabezpieczeń. Aby uzyskać wskazówki, zapoznaj się z wymaganiami branżowymi i prawnymi lub The Open Worldwide Application Security Project® (OWASP) Top Ten krytycznymi zagrożeniami dla aplikacji internetowych oraz 25 najważniejszymi błędami oprogramowania według SANS. Po zdefiniowaniu wymagań określ metryki, które chcesz śledzić, aby ułatwić monitorowanie postępu.
-
Rozpocznij od małych rzeczy
Narzędzia automatyzacji zabezpieczeń oferują wiele opcji sprawdzania kodu pod kątem problemów, ale włączenie ich wszystkich, szczególnie na wczesnym etapie wdrażania metodyki DevSecOps, może przytłoczyć Twój zespół. Zastanów się, które narzędzia zaimplementujesz i ile problemów przeskanujesz.
-
Wykonaj modelowanie zagrożeń
Opracuj proces modelowania zagrożeń, który może być tak prosty, jak to tylko konieczne, lub szczegółowy i techniczny. Użyj tego podejścia, aby udokumentować realistyczny widok zabezpieczeń aplikacji, który obejmuje:
- Sposób, w jaki osoby atakujące mogą nadużyć w projekcie aplikacji.
- Jak naprawić luki w zabezpieczeniach.
- Priorytet różnych problemów.
-
Wdróż automatyzację
Automatyzacja jest kluczem do umożliwienia zarówno jakości, jak i szybkości w procesie DevSecOps. Osadzanie zautomatyzowanych skanów zabezpieczeń we wszystkich fazach cyklu ciągłej integracji i ciągłego dostarczania pozwala zwiększyć bezpieczeństwo aplikacji bez znaczącego spowalniania procesu.
-
Zarządzanie zależnościami
Większość deweloperów używa pakietów i bibliotek innych firm do wydajnego tworzenia aplikacji. Problem polega na tym, że niektóre z tych rozwiązań mają luki w zabezpieczeniach, a deweloperzy nie zawsze dbają o ich aktualność. Aby zmniejszyć ryzyko, upewnij się, że używane składniki są sprawdzane pod kątem zagrożeń bezpieczeństwa, i opracuj ustandaryzowany proces ich aktualizowania.
-
Ocenianie i ulepszanie
Regularnie oceniaj sposób działania procesu i dostosowuj go odpowiednio do potrzeb, aby upewnić się, że Twoja organizacja spełnia swoje cele. Bezkrytyczna analiza po zakończeniu przebiegu może pomóc odkryć możliwości poprawy. Dane analityczne i analiza zagrożeń również mogą pomóc w ustaleniu, czy istnieją potrzeby w zakresie zabezpieczeń, które nie są spełnione przez bieżące podejście.
-
Metodyka DevSecOps dla aplikacji natywnych dla chmury
Aplikacje natywne dla chmuryAplikacje natywne dla chmury zaprojektowano pod kątem chmury i zwykle są one neutralne pod względem dostawcy, co pozwala na przenoszenie ich z jednej chmury do drugiej. Zaprojektowane tak, aby były wysoce skalowalne i odporne na błędy, zespoły programistyczne zazwyczaj tworzą je przy użyciu mikrousług, kontenerów i automatyzacji, dzięki czemu idealnie nadają się do procesu DevSecOps. Tworzenie ciągłych zabezpieczeń, ciągłej integracji i ciągłego dostarczania w procesie tworzenia aplikacji natywnych dla chmury zapewnia skalowalność bez naruszania zabezpieczeń. Korzystaj ze zautomatyzowanych rozwiązań zabezpieczeń, takich jak Microsoft Defender dla DevOps, aby pomóc w zabezpieczeniu kodu i całego potoku DevOps. ’Po wdrożeniu aplikacji w chmurze nadal monitoruj ją pod kątem ryzyk. Platformy ochrony obciążeń w chmurze (CWPP)Platformy ochrony obciążeń w chmurze (CWPP) pomagają chronić te aplikacje i dane bazowe przez wykrywanie i eliminowanie zagrożeń dla obciążeń w środowiskach wielu chmur. Zarządzanie stanem zabezpieczeń chmury (CSPM)Rozwiązania do zarządzania stanem zabezpieczeń chmury (CSPM) odnajdują i usuwają błędy konfiguracji i luki w zabezpieczeniach w całym środowisku.
Dowiedz się więcej o rozwiązaniach zabezpieczających firmy Microsoft
Microsoft Defender dla Chmury
Chroń środowiska wielu chmur i hybrydowe od etapu programowania po środowisko uruchomieniowe używając do tego kompleksowej platformy ochrony aplikacji natywnych dla chmury.
Microsoft Defender for Cloud Apps
Zmodernizuj sposób zabezpieczania aplikacji, ochrony danych i podnoszenia poziomu zabezpieczeń aplikacji dzięki temu oprogramowaniu jako rozwiązaniu usługowemu.
Zarządzanie stanem zabezpieczeń w usłudze Microsoft Defender dla Chmury
Skoncentruj się na najważniejszych zagrożeniach w środowisku wielu chmur dzięki kontekstowemu zarządzaniu stanem zabezpieczeń chmury.
Microsoft Defender dla DevOps
Uzyskaj ujednolicone zarządzanie zabezpieczeniami metodyki DevOps w środowiskach wielu chmur i wielu potoków.
Często zadawane pytania
-
DevSecOps to proces, który integruje zabezpieczenia w całym cyklu życia tworzenia oprogramowania. Organizacje stosują to podejście, aby zmniejszyć ryzyko wydania kodu z lukami w zabezpieczeniach. Dzięki współpracy, automatyzacji i przejrzystym procesom zespoły dzielą się odpowiedzialnością za bezpieczeństwo, zamiast pozostawiać je na końcu, kiedy to rozwiązywanie problemów może być znacznie trudniejsze i kosztowniejsze.
-
DevSecOps to skrót od programowania, zabezpieczeń i operacji. Odnosi się on do procesu integrowania zabezpieczeń we wszystkich fazach tworzenia oprogramowania.
-
Przesunięcie w lewo to koncepcja w metodyce DevSecOps, która odnosi się do dołączania rozwiązań w zakresie zabezpieczeń od samego początku procesu programowania.
-
Struktura DevSecOps obejmuje ciągłą integrację, ciągłe dostarczanie i ciągłe zabezpieczenia. Jest to metoda, za pomocą której zespoły ds. zabezpieczeń, operacji i zabezpieczeń współpracują ze sobą i dzielą się odpowiedzialnością za szybkie dostarczanie wysokiej jakości oprogramowania przy jednoczesnym zmniejszeniu luk w zabezpieczeniach.
-
Nie ma jednego procesu DevSecOps, ale typowym sposobem prowadzenia tych projektów jest podzielenie pracy na przebiegi, z których każdy obejmuje następujące składniki: planowanie i opracowywanie, kompilowanie i testowanie oraz produkcja. W trakcie przebiegu zespoły korzystają z automatyzacji w celu ciągłego rozwiązywania problemów z zapewnianiem jakości, ciągłej integracji i ciągłego testowania pod kątem zagrożeń bezpieczeństwa.
Obserwuj rozwiązania zabezpieczające firmy Microsoft