Omówienie metodyki DevSecOps
Wdrażanie chmury nadal przyspiesza, ponieważ organizacje starają się wspierać produktywność biznesową, umożliwić pracę zdalną i wydajnie skalować operacje. Jednak to szybkie wdrożenie bez odpowiedniej infrastruktury zabezpieczeń może przypadkowo naruszyć bezpieczeństwo danych i uwidocznić organizacjom znaczne ryzyko.
Luka w zabezpieczeniach w aplikacjach w chmurze
Luki w zabezpieczeniach utrzymują się nawet w miarę wzrostu wdrażania chmury. Organizacje przechodzące na platformy w chmurze nie zawsze implementują odpowiednie mechanizmy kontroli zabezpieczeń:
Luki w szyfrowaniu: Wiele aplikacji w chmurze nie może prawidłowo chronić danych:
- Dane w spoczynku: Niezaszyfrowane bazy danych, konta pamięci masowej i systemy plików pozostawiają dane podatne na zagrożenia, gdy dostęp do nośników pamięci zostanie uzyskany, skradziony lub niewłaściwie usunięty.
- Dane w tranzycie: Aplikacje przesyłające dane za pośrednictwem niezaszyfrowanych połączeń narażają informacje na przechwycenie. Nawet ruch sieciowy wewnętrzny powinien być szyfrowany.
- Typowe luki: Znaczne wartości procentowe aplikacji SaaS nie szyfrują odpowiednio danych. Aplikacje do przechowywania danych często nie mają szyfrowania zarówno podczas przechowywania, jak i przesyłania. Aplikacje współpracy często przesyłają poufne informacje bez odpowiedniej ochrony.
Braki ochrony sesji: Słabe zarządzanie sesjami tworzy luki w zabezpieczeniach:
- Brak nagłówków zabezpieczeń HTTP: Aplikacje, które nie implementują nagłówków zabezpieczeń, takich jak HSTS (HTTP Strict Transport Security), CSP (Content Security Policy) i bezpieczne atrybuty plików cookie pozostawiają sesje podatne na porwanie.
- Ekspozycja tokenu: Tokeny sesji przesyłane niezabezpieczone mogą być przechwytywane i ponownie używane przez osoby atakujące do personifikacji uprawnionych użytkowników.
- Ograniczone wdrożenie: Bardzo niewiele aplikacji SaaS implementuje kompleksową ochronę nagłówków HTTP, pozostawiając użytkowników narażonych na ataki sesyjne.
Co to jest secure DevOps (DevSecOps)
Napięcie między szybkością a bezpieczeństwem: Metodyka DevOps podkreśla szybsze działanie dzięki automatyzacji, ciągłej integracji i szybkiego wdrażania. Bezpieczeństwo tradycyjnie podkreśla szczegółowość, staranne przeglądy i kompleksowe testowanie. Te cele mogą wydawać się sprzeczne.
Problemy z tradycyjnym podejściem do zabezpieczeń: Gdy problemy z zabezpieczeniami są rozwiązywane tylko na końcu cyklu programowania, pojawiają się kilka problemów:
- Nieplanowana praca pojawia się niespodziewanie bezpośrednio przed wdrożeniem, gdy zespoły są pod presją.
- Problemy z zabezpieczeniami wykryte późno wymagają kosztownego przerabiania ukończonych funkcji.
- Zabezpieczenia stają się wąskim gardłem, które spowalnia lub blokuje wydania.
- Zespoły postrzegają bezpieczeństwo jako przeszkodę, a nie jako czynnik wspierający.
- Krytyczne luki w zabezpieczeniach mogą zostać wycofane ze względu na presję wydania.
Rozwiązanie Secure DevOps: Bezpieczna metodyka DevOps integruje zabezpieczenia z praktykami DevOps w spójnym zestawie działań zaprojektowanych w celu osiągnięcia celów zarówno szybkości metodyki DevOps, jak i skuteczności zabezpieczeń. Zabezpieczenia stają się częścią procesu programowania od początku, a nie bramy na końcu.
Korzyści z integracji: Bezpieczny pipeline DevOps umożliwia zespołom deweloperów pracować szybko, nie narażając projektu na niepożądane luki w zabezpieczeniach. Bezpieczeństwo i szybkość stają się uzupełnieniem, a nie przeciwstawnymi celami.
Notatka
Metodyka Secure DevOps jest również czasami nazywana DevSecOps. Możesz napotkać oba terminy, ale każda z nich odnosi się do tej samej koncepcji. Różnica terminologii jest czysto stylistyczna. Praktyki i zasady pozostają identyczne.
Jak zmieniają się zabezpieczenia w usłudze Secure DevOps
Tradycyjne metodologie zabezpieczeń: W przeszłości zabezpieczenia działały na wolniejszych cyklach i koncentrowały się przede wszystkim na:
- Kontrola dostępu: Zarządzanie osobami, które mogą uzyskiwać dostęp do systemów i danych za pomocą mechanizmów uwierzytelniania i autoryzacji.
- Wzmacnianie zabezpieczeń środowiska: Konfigurowanie systemów w celu usuwania niepotrzebnych usług, stosowania poprawek zabezpieczeń i wymuszania bezpiecznych konfiguracji.
- Ochrona obwodowa: Używanie zapór, systemów wykrywania włamań i segmentacji sieci w celu ochrony granicy sieci.
Rozszerzony zakres zabezpieczeń: Bezpieczna metoda DevOps obejmuje te tradycyjne metodologie zabezpieczeń, ale rozszerza obawy dotyczące zabezpieczeń w całym cyklu tworzenia oprogramowania. Z Secure DevOps, bezpieczeństwo dotyczy zabezpieczenia samego potoku i wszystkiego, co przez niego przepływa.
Fokus zabezpieczeń potoku: Bezpieczna metodyka DevOps obejmuje określenie, gdzie dodawać zabezpieczenia do elementów podłączonych do potoków kompilacji i wdrażania:
- Repozytoria kodu źródłowego.
- Tworzenie serwerów i agentów.
- Magazyn artefaktów i rejestry.
- Narzędzia i procesy wdrażania.
- Infrastruktura jako szablony kodu.
- Systemy zarządzania konfiguracją.
- Rozwiązania do zarządzania tajnościami.
Kompleksowe podejście: Secure DevOps pokazuje, jak i gdzie dodać zabezpieczenia do praktyk automatyzacji, środowisk produkcyjnych i innych elementów potoku przy zachowaniu szybkich korzyści z metodyki DevOps. Mechanizmy kontroli zabezpieczeń są zautomatyzowane i zintegrowane, a nie ręczne i oddzielne.
Kluczowe pytania, które rozwiązuje Secure DevOps
Bezpieczna metodyka DevOps pomaga organizacjom odpowiedzieć na krytyczne pytania dotyczące zabezpieczeń:
Zabezpieczenia składników innych firm:
- Czy moja rura korzysta z komponentów zewnętrznych i czy są one bezpieczne?
- Czy te składniki pochodzą z zaufanych źródeł?
- Czy podpisy składników są weryfikowane?
- Czy licencje są zgodne z naszym użyciem?
Zarządzanie lukami w zabezpieczeniach
- Czy istnieją znane luki w zabezpieczeniach w dowolnym używanym przez nas oprogramowaniu innej firmy?
- Jak śledzimy zgłoszenia luk w zabezpieczeniach w naszych zależnościach?
- Jaki jest nasz proces aktualizowania składników podatnych na zagrożenia?
- Czy mamy spis wszystkich zależności, w tym przechodnich?
Szybkość wykrywania (czas wykrywania):
- Jak szybko mogę wykryć luki w zabezpieczeniach?
- Czy skanowanie zabezpieczeń jest zautomatyzowane w procesie?
- Czy mamy monitorowanie środowiska uruchomieniowego pod kątem problemów z zabezpieczeniami?
- Jak szybko alerty zabezpieczeń docierają do odpowiednich osób?
Szybkość korygowania (czas korygowania):
- Jak szybko mogę skorygować zidentyfikowane luki w zabezpieczeniach?
- Czy możemy wdrażać poprawki przez ten sam zautomatyzowany potok?
- Jaki jest nasz proces w przypadku poprawek zabezpieczeń awaryjnych?
- Jak sprawdzić, czy korygowanie jest skuteczne?
Zabezpieczenia jako kod
Zautomatyzowane rozwiązania w zakresie zabezpieczeń: Rozwiązania w zakresie zabezpieczeń do wykrywania potencjalnych anomalii zabezpieczeń muszą być tak niezawodne i szybkie, jak inne części potoku DevOps. Obejmuje to:
Automatyzacja zabezpieczeń infrastruktury:
- Zautomatyzowane skanowanie zabezpieczeń infrastruktury jako szablonów kodu.
- Wymuszanie zasad jako kodu dla konfiguracji zasobów w chmurze.
- Sprawdzanie zgodności przed wdrożeniem infrastruktury.
- Ciągłe monitorowanie stanu zabezpieczeń infrastruktury.
Automatyzacja zabezpieczeń aplikacji:
- Statyczne testowanie zabezpieczeń aplikacji (SAST) podczas kompilacji.
- Dynamiczne testowanie zabezpieczeń aplikacji (DAST) w środowiskach przejściowych.
- Analiza kompozycji oprogramowania pod kątem luk w zabezpieczeniach zależności.
- Skanowanie obrazów kontenera przed wdrożeniem.
- Samodzielna ochrona aplikacji środowiska uruchomieniowego (RASP) w środowisku produkcyjnym.
Ciągłe zabezpieczenia: Zabezpieczenia w usłudze Secure DevOps nie są pojedynczym punktem kontrolnym. Jest to ciągła walidacja w trakcie opracowywania, wdrażania i operacji. Każdy etap potoku obejmuje odpowiednie mechanizmy kontroli zabezpieczeń, które są wykonywane automatycznie bez spowalniania dostarczania.