Wprowadzenie

Ukończone

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.

Czteroczęściowy diagram okręgowy przedstawiający infrastruktury, architekturę aplikacji, monitorowanie i ciągłą walidację jako połączone składniki zabezpieczeń.

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.