Wprowadzenie
Praktyki devOps umożliwiają zespołom deweloperów szybsze i częstsze wdrażanie aplikacji. Jednak szybkość bez zabezpieczeń stwarza ryzyko. Szybkie zbliżanie się do luki w zabezpieczeniach nie pomaga Twojej firmie. Wyzwaniem jest utrzymanie szybkości przy jednoczesnym zapewnieniu bezpieczeństwa aplikacji w całym cyklu życia.
Wyzwanie bezpieczeństwa we współczesnym rozwoju
Zespoły DevOps mają dostęp do bezprecedensowej infrastruktury i skalowania za pośrednictwem platform w chmurze. Ta dostępność zapewnia możliwości, ale także uwidacznia organizacjom zaawansowane zagrożenia bezpieczeństwa. Każde wdrożenie aplikacji może potencjalnie stanowić zagrożenie dla bezpieczeństwa biznesowego, danych klientów i reputacji organizacji.
Tradycyjne podejścia do zabezpieczeń kończą się niepowodzeniem w nowoczesnych środowiskach: Modele zabezpieczeń oparte na obwodzie, które chroniły centra danych za pomocą zapór i mechanizmów kontroli sieci, nie przekładają się na rozproszone środowiska chmury. Aplikacje obejmują wiele usług, regionów i dostawców usług w chmurze. Przepływy danych między mikrousługami, interfejsami API i integracją zewnętrzną. Tradycyjne podejście do zamku i moaty nie zapewnia już odpowiedniej ochrony.
Nowoczesne zabezpieczenia wymagają wielu warstw obrony: Organizacje muszą wdrażać zabezpieczenia na wielu poziomach, w tym kod aplikacji, infrastrukturę, sieć, dane i tożsamość. Zabezpieczenia nie mogą istnieć jako pojedynczy punkt kontrolny. Musi być zintegrowany w całej strukturze stosu, oferując wiele możliwości wykrywania i zapobiegania zagrożeniom.
Podejście DevSecOps
Jak zapewnić bezpieczeństwo aplikacji i zachować bezpieczeństwo dzięki ciągłej integracji i ciągłego dostarczania? Jak można znaleźć i rozwiązać problemy z zabezpieczeniami na wczesnym etapie procesu programowania? Odpowiedź polega na praktykach często określanych jako DevSecOps.
Zabezpieczenia jako wspólna odpowiedzialność: DevSecOps włącza zespoły ds. zabezpieczeń i ich możliwości do praktyk DevOps, czyniąc bezpieczeństwo odpowiedzialnością wszystkich członków zespołu, a nie oddzielną funkcją. Deweloperzy, inżynierowie operacyjni i specjaliści ds. zabezpieczeń współpracują w całym cyklu projektowania.
Przesunięcie zabezpieczeń na lewo: Zabezpieczenia muszą przejść od bycia ocenianymi po zakończeniu etapu opracowywania do rozważania na każdym kroku procesu. Podejście „przesunięcia do przodu” pozwala na wczesne wykrycie problemów z zabezpieczeniami, kiedy są łatwiejsze i tańsze do naprawienia. Luka w zabezpieczeniach znaleziona podczas przeglądu kodu kosztuje znacznie mniej niż jedna wykryta w środowisku produkcyjnym.
Zabezpieczenia jako proces ciągły
Zabezpieczanie aplikacji to ciągły proces obejmujący wiele obszarów:
Bezpieczna infrastruktura: Buduj na bezpiecznych podstawach, w tym na wzmocnionych systemach operacyjnych, prawidłowo skonfigurowanych sieciach, zaszyfrowanym przechowywaniu i bezpiecznym zarządzaniu tożsamością.
Architektura z zabezpieczeniami warstwowymi: Projektowanie aplikacji z zabezpieczeniami wbudowanymi w architekturę. Zaimplementuj ochronę w głębi systemu z wieloma warstwami zabezpieczeń, więc jeśli jedna kontrolka ulegnie awarii, inne pozostaną skuteczne.
Ciągła weryfikacja zabezpieczeń: Automatyzuj testowanie zabezpieczeń w całym potoku. Uruchom skanowania zabezpieczeń, oceny luk w zabezpieczeniach i testy zgodności w ramach ciągłej integracji i wdrażania.
Monitorowanie i reagowanie: Monitorowanie aplikacji w środowisku produkcyjnym pod kątem zagrożeń bezpieczeństwa i nietypowego zachowania. Szybkie reagowanie na wykryte problemy z automatycznym korygowaniem tam, gdzie to możliwe.
Całościowe podejście zabezpieczeń: Bezpieczeństwo to odpowiedzialność wszystkich użytkowników i należy ją zająć całościowo w całym cyklu życia aplikacji od początkowego projektu poprzez operację produkcyjną i ostateczne zlikwidowanie.
Co obejmuje ten moduł
W tym module przedstawiono pojęcia i praktyki devSecOps, które integrują zabezpieczenia w całym cyklu projektowania:
Typowe luki w zabezpieczeniach: Dowiesz się więcej na temat ataków polegających na wstrzyknięciu kodu SQL, jednej z najbardziej rozpowszechnionych i niebezpiecznych luk w zabezpieczeniach. Zrozumienie sposobu działania tych ataków pomaga zapobiegać im w aplikacjach.
Zasady metodyki DevSecOps: Dowiesz się, jak metodyka DevSecOps różni się od tradycyjnych podejść zabezpieczeń i jak zintegrować praktyki zabezpieczeń z istniejącymi przepływami pracy metodyki DevOps bez poświęcania szybkości programowania.
Zabezpieczenia potoku: W potoku ciągłej integracji/ciągłego wdrażania odnajdziesz krytyczne punkty weryfikacji, w których powinny zostać wykonane testy zabezpieczeń. Dowiedz się, jak zaimplementować zautomatyzowane testowanie zabezpieczeń, które przechwytuje luki w zabezpieczeniach przed dotarciem do środowiska produkcyjnego.
Modelowanie zagrożeń: Poznasz systematyczne podejścia do identyfikowania, oceniania i określania priorytetów zagrożeń bezpieczeństwa. Modelowanie zagrożeń pomaga skupić się na wysiłkach związanych z zabezpieczeniami na najbardziej znaczącym ryzyku dla aplikacji i firmy.
Automatyczna analiza zabezpieczeń: Zapoznasz się z narzędziami, takimi jak GitHub CodeQL, które zapewniają zautomatyzowaną analizę zabezpieczeń. Te narzędzia skanują kod pod kątem luk w zabezpieczeniach i wzorców zabezpieczeń, umożliwiając wczesne znajdowanie problemów bez ręcznych przeglądów zabezpieczeń dla każdej zmiany kodu.
Przyspieszanie zespołów ds. zabezpieczeń: Potoki ciągłej integracji i wdrażania mogą rzeczywiście przyspieszyć pracę zespołów ds. zabezpieczeń, automatyzując powtarzające się kontrole zabezpieczeń i poprawiając współpracę z zespołami deweloperów oprogramowania. Zespoły ds. zabezpieczeń mogą skupić się na złożonych zagrożeniach, a nie na ręcznym przeglądzie rutynowych zmian.
Cele kształcenia
Po ukończeniu tego modułu będziesz mieć następujące umiejętności:
- Identyfikowanie i interpretowanie ataków polegających na wstrzyknięciu kodu SQL oraz ich wpływ na zabezpieczenia aplikacji.
- Wyjaśnienie zasad metodyki DevSecOps i sposobu integrowania zabezpieczeń w całym cyklu projektowania.
- Zaimplementuj walidację zabezpieczeń w kluczowych punktach w potoku DevOps.
- Przeprowadzanie modelowania zagrożeń w celu zidentyfikowania i nadania priorytetów zagrożeniom bezpieczeństwa.
- Użyj języka GitHub CodeQL do zautomatyzowanej analizy zabezpieczeń i wykrywania luk w zabezpieczeniach.
Warunki wstępne
- Znajomość pojęć i praktyk metodyki DevOps.
- Znajomość potoków ciągłej integracji i ciągłego wdrażania.
- Podstawowa wiedza na temat tworzenia aplikacji i typowych pojęć dotyczących zabezpieczeń.
- Doświadczenie w pracy z systemami kontroli wersji, takimi jak Git.
- Korzystne jest posiadanie doświadczenia w organizacji, która dostarcza oprogramowanie.