Ustanowić dyscyplinę bezpieczeństwa tworzenia oprogramowania

Ten artykuł pomaga zespołom ds. zabezpieczeń i technologii ustanowić i zmodernizować dyscyplinę zabezpieczeń programowania. Ta dyscyplina pomaga zespołom ds. zabezpieczeń, inżynierii i technologii zapewnić, że oprogramowanie zostało zaprojektowane, skompilowane, zintegrowane i wdrożone bezpiecznie — bez spowalniania innowacji.

Dyscypliny zabezpieczeń to grupy powiązanych prac związanych z zabezpieczeniami, które pomagają organizacjom spójnie dostarczać wyniki zabezpieczeń w całej infrastrukturze technologicznej. W ramach modelu wdrażania zabezpieczeń dyscypliny pomagają zapewnić most między scenariuszami biznesowymi a implementacją techniczną, zapewniając, że inwestycje w zabezpieczenia przekładają się na rzeczywiste mierzalne wyniki w ramach modelu wdrażania zabezpieczeń.

Dlaczego ta dyscyplina?

Oprogramowanie jest głęboko połączone z tożsamościami, danymi, infrastrukturą i procesami biznesowymi. Gdy zabezpieczenia programistyczne są słabe lub niespójne, każda wersja oprogramowania może wprowadzać nowe luki w zabezpieczeniach, które osoby atakujące wykorzystują w celu uzyskania dostępu do szerszych zasobów organizacyjnych.

Bez skutecznego podejścia do bezpieczeństwa w procesie tworzenia oprogramowania organizacje często borykają się z następującymi problemami:

  • Zwiększone ryzyko związane z lukami w zabezpieczeniach oprogramowania wprowadzonymi podczas opracowywania.
  • Kompromitacja aplikacji umożliwiająca ruch boczny między tożsamościami i danymi.
  • Zakłócenia operacji biznesowych i przychodów.
  • Ujawnienie lub nadużycie danych klienta i danych podlegających regulacjom.
  • Akumulacja długu technicznego, który zwiększa długoterminowe ryzyko i koszty korygowania.

Silny rygor w zakresie bezpieczeństwa procesu tworzenia oprogramowania zapewnia, że każde wydanie zmniejsza ryzyko, zamiast je zwiększać.

Misja i wyniki

Dyscyplina Zabezpieczenia programistyczne zmniejsza ryzyko organizacyjne, zapewniając, że całe oprogramowanie, zarówno opracowane wewnętrznie, jak i przez partnerów, jest zaprojektowane, skompilowane, zintegrowane i wdrożone zgodnie ze standardami zabezpieczeń, bez spowalniania dostarczania lub innowacji.

Organizacje, które osiągną dojrzałość w tej dziedzinie, osiągają:

  • Zabezpieczenia wbudowane w procesy programistyczne, a nie dodane późno.
  • Wcześniejsza identyfikacja i korygowanie wad projektu i implementacji.
  • Bardziej przewidywalne, bezpieczne cykle wydawania.
  • Mniej przeróbek, awaryjnych poprawek i zakłóceń operacyjnych.
  • Niższa akumulacja długu technicznego i zabezpieczającego w czasie.

Zabezpieczenia programistyczne zapewniają ciągłą poprawę stanu zabezpieczeń przy każdym wydaniu, a nie okresowe resetowanie.

Zmiany w pracy zespołowej

Ważne jest, aby dyscyplina Zabezpieczenia programistyczne spełniała wymagania deweloperów i zespołów produktów, w których się znajdują, koncentrując się na integracji zabezpieczeń z istniejącymi przepływami pracy deweloperskich, zamiast wprowadzać mechanizmy kontroli późnych etapów, procesy przeglądu z dużym obciążeniem, a nawet pomijać zabezpieczenia w procesach programowania.

Takie podejście jest często opisywane jako przesunięcie w lewo, wprowadzenie myślenia o zabezpieczeniach wcześniej w ideowaniu, projektowaniu i implementacji, gdy problemy są łatwiejsze i mniej kosztowne do rozwiązania. Podejście shift-left nie oznacza wcześniejszego mówienia „nie” w procesie. Zamiast tego wprowadza na wczesnym etapie dyskusję na temat zabezpieczeń, aby poprawić decyzje dotyczące produktów i zapewnić, że rozwiązania spełniają wymagania dotyczące zabezpieczeń i działalności biznesowej.

Kluczowe zasady obejmują:

  • Wczesna integracja: rozważ bezpieczeństwo podczas ideowania i projektowania, a nie tylko testowanie
  • Dostosowanie do potrzeb deweloperów: Dotrzyj do zespołów programistycznych i produktowych tam, gdzie już pracują
  • Mała, przyrostowa zmiana: preferuj automatyzację i ulepszenia o niskim tarciu
  • Ciągłe ulepszanie: traktuj bezpieczeństwo jako ciągłą dyscyplinę, a nie kamień milowy

Z czasem systematyczna integracja ogranicza gaszenie pożarów i przyspiesza wdrażanie, zamiast je spowalniać.

Jak zastosować tę dyscyplinę

Aby skutecznie zastosować dziedzinę Bezpieczeństwo programowania, skoncentruj się na ustanowieniu spójnego podejścia do tworzenia i utrzymywania bezpiecznych aplikacji i usług w całej organizacji:

  1. Definiowanie bezpiecznej strategii programowania dostosowanej do ryzyka biznesowego
    Ustal jasne zasady projektowania, tworzenia i utrzymywania aplikacji oraz usług, aby zmniejszyć ryzyko naruszenia bezpieczeństwa i chronić krytyczne funkcje biznesowe.
  2. Osadzanie zabezpieczeń w procesach programistycznych i inżynieryjnych
    Upewnij się, że praktyki zabezpieczeń są zintegrowane z planowaniem, projektowaniem, opracowywaniem i wdrażaniem, a nie zastosowanymi po fakcie.
  3. Ustanawianie ustandaryzowanych bezpiecznych praktyk programistycznych
    Podaj jasne wskazówki, aby zapewnić spójne stosowanie bezpiecznych praktyk kodowania, testowania i wydawania w zespołach i projektach.
  4. Dopasowywanie zabezpieczeń programistycznych do krytycznych zasobów i scenariuszy biznesowych
    Określanie priorytetów ochrony aplikacji i usług, które obsługują zasoby o wysokiej wartości i kluczowe operacje biznesowe.
  5. Ciągłe ulepszanie na podstawie ryzyka, luk w zabezpieczeniach i opinii
    Użyj szczegółowych informacji na podstawie luk w zabezpieczeniach, zdarzeń i wyników testowania, aby wzmocnić praktyki programistyczne i zmniejszyć ryzyko w czasie.

Zarządzanie zmianami

Nowoczesne zabezpieczenia programistyczne są zwykle implementowane za pomocą podejścia DevSecOps, które łączy elastyczne dostarczanie z podstawowymi rozwiązaniami dotyczącymi ładu i jakości przed wydaniem.

Zamiast wybierać między szybkością a bezpieczeństwem, metodyka DevSecOps koncentruje się na zabezpieczaniu kluczowych aspektów cyklu projektowania w celu ograniczenia pilnego ryzyka, nie utrudniając cykli szybkiego wydawania:

Zabezpieczanie projektu — używaj sprawdzonych wzorców projektowych zabezpieczeń i weryfikuj projekty za pomocą modelowania zagrożeń. Zabezpieczanie kodu — postępuj zgodnie z bezpiecznymi praktykami kodowania i zweryfikuj oprogramowanie i zależności. Zabezpiecz potok — zweryfikuj działanie potoku i chroń systemy CI/CD przed przejęciem oraz nieautoryzowanymi zmianami. Zapewnij możliwość śledzenia zmian potoku i oprogramowania przechodzącego przez potok. Bezpieczne operacje — upewnij się, że wdrożone obciążenia są zgodne z konfiguracją, stosowaniem poprawek i najlepszymi rozwiązaniami operacyjnymi.

Zespoły mogą poprawić wyniki, stale udoskonalając współpracę między programowaniem, zabezpieczeniami i operacjami, równoważąc cele dostarczania funkcjonalnego z niezawodnością i zmniejszeniem ryzyka.

Strategia DevSecOps, która łączy tradycyjne praktyki programistyczne z technikami Agile.

Ta ciągła poprawa przyrostowa powinna być stosowana zarówno do produkcji pracy (kodu oprogramowania utworzonego w cyklu życia), jak i do dojrzewania samego cyklu życia programowania.

Definiowanie procesu DevSecOps

Zabezpieczenia programistyczne są często implementowane za pomocą modelu operacyjnego DevSecOps, który ewoluuje wraz z upływem czasu, a nie pojawia się w pełni sformułowany. Metodyka DevSecOps łączy w sobie programowanie, zabezpieczenia i operacje, aby osiągnąć lepsze wyniki dzięki ciągłemu ulepszaniu.

Większość organizacji przechodzi przez następujące etapy:

Programowanie (deweloperskie) — pierwsza wersja produkcyjna koncentruje się na dostarczaniu produktu o minimalnych możliwościach( MVP), który spełnia podstawowe wymagania biznesowe. DevOps – po początkowym wydaniu zespoły koncentrują się na szybkiej iteracji, stabilności operacyjnej i nadzorze dzięki ciągłemu dostarczaniu. DevSecOps — w miarę dojrzewania współpracy programowanie, bezpieczeństwo i operacje współpracują ze sobą, aby stale udoskonalać procesy i równoważyć szybkość, ryzyko i niezawodność.

Strategia DevSecOps, która łączy tradycyjne mechanizmy kontroli jakości i elastyczne programowanie.

Ten postęp umożliwia organizacjom poprawę wyników zabezpieczeń bez poświęcania elastyczności ani innowacji.

Ustalenie bezpiecznej bazy wyjściowej MVP

Kluczowym krokiem w tym modelu jest zdefiniowanie tego, co stanowi minimalny opłacalny produkt (MVP) z perspektywy programowania, zabezpieczeń i operacji. Ustanowienie tego współużytkowanego punktu odniesienia zapewnia przejrzystość w różnych zespołach i umożliwia spójne ulepszanie w czasie.

Składnik Szczegóły
Dev(elopment) Upewnij się, że oprogramowanie spełnia minimalne wymagania biznesowe i funkcjonalne.
Sec(urity) Upewnij się, że oprogramowanie spełnia minimalne wymagania dotyczące zabezpieczeń i zgodności.
Op(eration)s Upewnij się, że oprogramowanie spełnia minimalne wymagania dotyczące jakości, niezawodności i gotowości operacyjnej.

Wymagania dotyczące MVP różnią się w zależności od organizacji i branży oraz zależą od akceptowanego poziomu ryzyka, narażenia na wymogi regulacyjne i znaczenia dla działalności biznesowej. Te wymagania często zmieniają się wraz ze zmianą organizacji, poziomu zagrożeń i modeli dostarczania.

Ciągłe ulepszanie oprogramowania

Po początkowym wdrożeniu produkcyjnym obciążenia robocze wchodzą w cykl ciągłego doskonalenia. W tej fazie zespoły ds. rozwoju, bezpieczeństwa i operacji udoskonalają zarówno oprogramowanie, jak i proces dostarczania. Wysiłki związane z zabezpieczeniami koncentrują się na:

  • Integrowanie zabezpieczeń natywnie z przepływami pracy programistycznych przy użyciu tych samych narzędzi i modeli priorytetyzacji co inne prace inżynieryjne
  • Szybkie identyfikowanie, określanie priorytetów i naprawianie usterek zabezpieczeń w ramach standardowych cykli wydania.

Takie podejście jest zgodne z uczeniem Microsoft Secure Future Initiative (SFI), takimi jak prPaved Paths gdzie bezpieczne praktyki są wbudowane w platformy i procesy, a nie wymuszane zewnętrznie.

Z czasem to ciągłe uczenie pomaga zespołom udoskonalać wymagania, usprawniać współpracę i lepiej równoważyć szybkość dostarczania, bezpieczeństwo i niezawodność.

Role i współpracownicy w dyscyplinie

Dziedzina Dev Security jest zwykle uruchamiana przez zespoły wykonujące tworzenie aplikacji i produktów.

Role podstawowe w tej dyscyplinie zwykle obejmują:

  • Dostarczanie technologii i menedżerowie produktów
  • Deweloperzy oprogramowania (w tym tworzenie sztucznej inteligencji)
  • Inżynierowie ds. zabezpieczeń oprogramowania
  • DevOps i inżynierowie platformy
  • Role inżynieryjne testowania i jakości
  • Role zabezpieczeń łańcucha dostaw i zależności

Kluczowi współpracownicy to:

  • Kierownictwo biznesowe i techniczne — zapewnianie sponsorowania i priorytetyzacji
  • Role architektury — wskazówki dotyczące bezpiecznego projektowania i podejmowania decyzji dotyczących integracji
  • Role ds. strategii zabezpieczeń, integracji i ładu — zapewnianie zasad, edukacji i nadzoru
  • Zespoły dotyczące infrastruktury i platform — włączanie bezpiecznych środowisk programistycznych
  • Operacje zabezpieczeń (SecOps) — monitorowanie i reagowanie na ataki aplikacji

Spójność z innymi dyscyplinami

Bezpieczeństwo rozwoju jest ściśle zintegrowane z innymi dyscyplinami SAF:

  • Dostęp i tożsamość — chroni tożsamości deweloperów, obciążeń roboczych i usług.
  • Bezpieczeństwo infrastruktury — zabezpiecza platformy obsługujące aplikacje i potoki przetwarzania.
  • Bezpieczeństwo danych — zapewnia ochronę poufnych danych w całym cyklu życia oprogramowania.
  • SecOps — wykrywa ataki na poziomie aplikacji i reaguje na nie.
  • Strategia zabezpieczeń, integracja i ład — dopasowuje praktyki programistyczne do priorytetów ryzyka dla przedsiębiorstw.

Razem te dyscypliny zapewniają, że bezpieczeństwo oprogramowania wspiera szersze cele biznesowe i cele w zakresie bezpieczeństwa.

Dopasowanie do filarów technologii

Wykonanie strategii dotyczącej dziedziny zabezpieczeń rozwoju wymaga kontroli zabezpieczeń w wielu filarach technologii.

Zabezpieczenia programistyczne — mapowanie na filary technologii.

Dopasowanie do filarów technologii obejmuje:

  • Tożsamości: chroni tożsamości i poświadczenia deweloperów oraz obciążeń roboczych.
  • Punkty końcowe: zabezpiecza stacje robocze deweloperów i systemy kompilacji.
  • Infrastruktura: chroni platformy obsługujące kod, potoki przetwarzania i obciążenia robocze.
  • Aplikacje: zapewnia główny nacisk na praktyki zabezpieczeń programowania.
  • Dane: chroni używane, generowane i przechowywane przez aplikacje dane.
  • Sieć: Projektuje oprogramowanie do bezpiecznego działania w niezaufanych sieciach.
  • Sztuczna inteligencja: zabezpiecza składniki i modele sztucznej inteligencji używane w nowoczesnych aplikacjach.

Ten szeroki zakres sprawia, że dyscyplina obejmuje rzeczywiste scenariusze ataku.

Co dalej?

Dodatkowe wskazówki dotyczące strategii zabezpieczeń programowania znajdują się w strategii zabezpieczeń programowania.

Weź udział w warsztatach

Microsoft Unified oferuje warsztaty prowadzone przez ekspertów, aby pomóc organizacjom zmodernizować swoją dyscyplinę zabezpieczeń deweloperów. Te warsztaty obejmują:

  • Warsztaty architektoniczne i strategiczneSecurity Adoption Framework (SAF) — sesja projektowania architektury: warsztaty z zakresu bezpieczeństwa infrastruktury i procesu wytwarzania oprogramowania koncentrują się na przyspieszeniu modernizacji bezpieczeństwa wytwarzania oprogramowania oraz jego integracji z bezpieczeństwem infrastruktury. Warsztaty te są dostępne w formie dyskusji trwającej krócej niż cztery godziny i koncentrującej się na kluczowych wnioskach oraz najlepszych praktykach.
  • Warsztaty wdrażania technologii: Microsoft Unified oferuje warsztaty, które pomagają organizacjom poznać, zaplanować, wdrożyć i zoptymalizować korzystanie z technologii Microsoft Development Security, jak pokazano na poniższym diagramie.

Warsztaty wdrażania technologii rozwoju

Przejrzyj Microsoft Security Development Lifecycle

Cykl życia ciągłego opracowywania zabezpieczeń Microsoft zapewnia metodologię bezpiecznego tworzenia oprogramowania. Cykl życia programowania zabezpieczeń (SDL) to podejście, Microsoft używane do integrowania zabezpieczeń z procesami DevOps (czasami nazywane podejściem DevSecOps). Wskazówki dotyczące zabezpieczeń programowania SAF pomagają dostosować podejście i rozwiązania SDL do organizacji.

Możesz stosować praktyki opisane w podejściu SDL do wszystkich rodzajów tworzenia oprogramowania i na wszystkich platformach, od klasycznego modelu kaskadowego po nowoczesne podejścia DevOps. To ogólnie stosowane podejście do zabezpieczeń oprogramowania działa w ramach dowolnego typu oprogramowania i platformy.

Aby uzyskać więcej informacji, zobacz Microsoft Security Development Lifecycle (SDL).

Skuteczne zabezpieczenia programistyczne wymagają cyklu projektowania zabezpieczeń (SDL), takiego jak Microsoft Security Development Lifecycle (SDL)

Następne kroki

Dowiedz się więcej na temat przejścia z metodyki DevOps do metodyki DevSecOps.