Programowanie i testowanie w usłudze DevSecOps

Tworzenie oprogramowania i testowanie w DevSecOps określają, czy bezpieczeństwo staje się częścią codziennej pracy inżynieryjnej, czy też pozostaje czymś, czym zespoły zajmują się zbyt późno. Silne praktyki w zakresie kodowania, narzędzi, integracji i testowania pomagają zespołom znajdować i rozwiązywać problemy, gdy kod jest nadal pisany.

W tym obszarze możliwości opisano, jak zespoły piszą bezpieczny kod, przyspieszają opracowywanie za pomocą zaakceptowanych narzędzi i składników oraz integrują i testują swoją pracę. Jest to punkt, w którym bezpieczeństwo staje się częścią codziennej inżynierii lub pozostaje następstwem.

Gdy organizacje dojrzały, programowanie i testowanie przechodzi z różnych, niezarządzanych działań w kierunku zoptymalizowanego środowiska dostosowanego dla poszczególnych deweloperów. Testowanie zabezpieczeń staje się ciągłe, AI i oprogramowanie open source przechodzą od rozwiązań nieobjętych nadzorem do bezpiecznych dla przedsiębiorstw i wdrażanych w sposób celowy, a testowanie zmienia się z okresowego i ręcznego na zautomatyzowane i prowadzone wcześniej w cyklu wytwarzania.

Podstawowe obszary możliwości

Programowanie i testowanie w usłudze DevSecOps koncentruje się na trzech możliwościach podrzędnych:

  • Zabezpieczenia kodu: sposób stosowania narzędzi zabezpieczeń i testowania do kodu podczas jego pisania i przeglądania.

  • Akceleratory rozwoju: Jak sztuczna inteligencja, oprogramowanie open source i komponenty wielokrotnego użytku są zarządzane i wykorzystywane w celu przyspieszenia dostarczania.

  • Integracja i testowanie: jak zarządzane są repozytoria, gałęzie, kompilacje i zautomatyzowane testowanie.

Etapach

Prace programistyczne i testowanie przechodzą przez pięć etapów dojrzałości. Te etapy pokazują, jak zasady DevSecOps pojawiają się w działaniach deweloperów, od niezarządzanych eksperymentów po zoptymalizowany kod i środowisko testowe, które poprawia wydajność deweloperów.

Ogólny etap Pseudonim sceniczny Jak wygląda
Ad hoc Różne Brak zarządzania zasobami; szybkie tworzenie prototypów i nieujawniane eksploracje.
Inicjowanie Nowo powstające Zespoły improwizują w zakresie nadzoru, zaczynając skłaniać się ku podejściu DevOps.
Orkiestracja Ciągły Kompleksowa strategia wraz z automatyzacją wbudowuje standardy w ciągłe procesy.
Usprawnianie Przesunięte w lewo Przesunięcie w lewo oznacza, że problemy są znajdowane wcześniej i kosztują mniej, aby rozwiązać problem.
Pionierskie Zoptymalizowane Środowisko kodowe i testowe jest zoptymalizowane pod kątem wydajności poszczególnych deweloperów.

Różne (ad hoc)

Bez konieczności zarządzania zasobami ani wstępnego kodowania możliwe są szybkie prototypowanie i nieskrępowana eksploracja. Ten stan jest naturalnym punktem wyjścia dla startupów i nowych organizacji.

  • Zabezpieczenia kodu: nie ma spójnego zastosowania narzędzi zabezpieczeń kodu, co powoduje rosnące ryzyko.

  • Akceleratory rozwoju: Zespoły używają niezatwierdzonych narzędzi AI poza organizacją oraz na szeroką skalę, bez odpowiedniego nadzoru, korzystają z oprogramowania open source lub przykładów kodu udostępnianych przez społeczność. Brak zasad może również spowodować, że niektórzy deweloperzy całkowicie unikają tych narzędzi, nie ma możliwości zwiększenia wydajności.

  • Integracja i testowanie: praca jest rozproszona w wielu repozytoriach, a kompilacje są wykonywane ręcznie i rzadko z różnymi konfiguracjami.

Wyłaniający się (początkowy)

Zespoły zaczynają improwizować nadzór nad aktywami i metodologiami, rozpoczynając szerszą zmianę podejścia devOps.

  • Bezpieczeństwo kodu: Zespoły od czasu do czasu korzystają z lokalnych narzędzi do testowania bezpieczeństwa.

  • Akceleratory tworzenia oprogramowania: zespoły dostrzegają ryzyka związane z niezatwierdzoną AI i oprogramowaniem open source, a w różnych częściach organizacji pojawiają się polityki, w tym ograniczenia lub wytyczne dotyczące ponownego wykorzystywania kodu pochodzącego ze społeczności deweloperskich.

  • Integracja i testowanie: usługa Teams definiuje strategie repozytorium i rozgałęziania. Testowanie jest nadal w większości okresowe, ręczne, a czasami zlecone. Jednocześnie testowalność zaczyna pojawiać się miejscami, a niektóre zespoły wdrażają praktyki ciągłej integracji.

Ciągłe (Orkiestracja)

Dzięki kompleksowej strategii wspieranej automatyzacją dynamiczne narzędzia i procesy pomagają trwale wbudować standardy w ciągłe przepływy pracy i monitorowanie.

  • Bezpieczeństwo kodu: niektóre testy bezpieczeństwa są już stosowane, bezpieczeństwo staje się częścią przeglądu kodu, a bardziej zaawansowane testy bezpieczeństwa są przeprowadzane zgodnie z harmonogramem. Przyjmuje się standardowe strategie nazewnictwa i rozgałęziania.

  • Akceleratory rozwoju: bezpieczna dla przedsiębiorstw sztuczna inteligencja i oprogramowanie open source są udostępniane zgodnie z zasadami użytkowania. Sztuczna inteligencja jest zintegrowana ze środowiskami IDE jako pomoc w programowaniu oraz z narzędziami DevOps, które usprawniają procesy obsługi pull requestów.

  • Integracja i testowanie: obowiązują standardowe nazewnictwo, strategie rozgałęziania i struktury testowania. Zautomatyzowane testowanie zostaje wdrożone w głównych potokach CI/CD, w tym obejmuje niektóre testy integracyjne.

Przesunięte w lewo (Usprawnienie)

Tworzenie środowiska sprzyjającego przesunięciu działań na wcześniejszy etap oznacza, że problemy są wykrywane wcześniej, a ich usunięcie kosztuje mniej.

  • Zabezpieczenia kodu: zespoły wymuszają gating w przypadku wyników zabezpieczeń o wysokiej ważności. Narzędzia do kodowania w środowisku IDE zawierają funkcje zabezpieczeń, w tym ochronę przed atakami typu prompt injection i zatruwaniem danych.

  • Akceleratory programistyczne: usługa Teams używa bezpiecznych dla przedsiębiorstw modeli dużych języków (LLMs) dostosowanych do jasnych wzorców i standardów. Inżynieria oprogramowania oparta na sztucznej inteligencji i agenci DevOps zaczynają automatyzować pracę i działać z rosnącą autonomią.

  • Integracja i testowanie: obowiązują powszechne praktyki testowania, w tym testy jednostkowe i integracyjne. Testowanie automatyczne jest uruchamiane w sposób ciągły i wychwytuje problemy we wcześniejszej fazie procesu. Zespoły używają również symulacji wyłudzania informacji.

Zoptymalizowane (pionierskie)

Podczas optymalizowania kodu i środowiska testowego dla poszczególnych deweloperów tworzysz bardziej spersonalizowaną wydajność.

  • Bezpieczeństwo kodu: staje się procesem ciągłym i jest wspierane przez zaawansowane monitorowanie.

  • Akceleratory tworzenia oprogramowania: Programiści rozszerzają modele językowe asystentów kodowania o własne niestandardowe wzorce. Użycie składników staje się celowe i jest przeznaczone do osiągania celów związanych z wydajnością, zgodnością i zarządzaniem ryzykiem. Serwery MCP i orkiestracja stają się częścią zestawu narzędzi.

  • Integracja i testowanie: automatyzacja testów staje się kompleksowa, w tym testowanie wydajnościowe. Zespoły wykorzystują również wykrywanie zagrożeń oparte na sztucznej inteligencji i szukają innych sposobów usprawnienia pętli informacji zwrotnej w procesie inżynieryjnym.