Wprowadzenie

Ukończone

Nowoczesne aplikacje są w dużym stopniu zależne od składników open source i bibliotek innych firm. Chociaż te zależności przyspieszają opracowywanie i zapewniają sprawdzone funkcje, wprowadzają również luki w zabezpieczeniach i zagrożenia związane ze zgodnością licencji. Analiza kompozycji oprogramowania (SCA) udostępnia zautomatyzowane narzędzia i procesy do identyfikowania, śledzenia i zarządzania ryzykiem bezpieczeństwa i zgodności w łańcuchu dostaw oprogramowania.

Bez systematycznej analizy zależności organizacje pozostają nieświadome luk w zabezpieczeniach w swoich aplikacjach do momentu wystąpienia naruszeń. Naukowcy zajmujący się zabezpieczeniami odkrywają tysiące nowych luk w zabezpieczeniach w składnikach typu open source rocznie, a aplikacje korzystające z wersji, których dotyczy problem, pozostają podatne na zagrożenia do czasu zaktualizowania zależności. Ręczne śledzenie zależności w setkach aplikacji jest niepraktyczne i wymaga zautomatyzowanych rozwiązań SCA.

Ten moduł zawiera kompleksowe wskazówki dotyczące implementowania analizy kompozycji oprogramowania w przepływach pracy programowania. Poznasz podstawy usługi SCA, zaimplementujesz automatyczne wykrywanie luk w zabezpieczeniach za pomocą narzędzia GitHub Dependabot, zintegrujesz narzędzia SCA z usługą Azure Pipelines, automatyzujesz skanowanie kontenerów i interpretujesz alerty zabezpieczeń w celu efektywnego określania priorytetów korygowania.

Czego się nauczysz

W tym module omówiono podstawową wiedzę na temat implementowania analizy kompozycji oprogramowania:

  • Omówienie analizy składu oprogramowania: Dowiesz się, czym jest analiza składu oprogramowania (SCA), dlaczego ma kluczowe znaczenie dla nowoczesnego rozwoju oprogramowania, jakie kwestie wykrywają narzędzia SCA oraz jakie korzyści niesie ze sobą zautomatyzowane skanowanie zależności. Zrozumienie podstaw usługi SCA pomaga zrozumieć, dlaczego ręczne zarządzanie zależnościami nie skaluje się i jak zautomatyzowane narzędzia zapewniają ciągły wgląd w zagrożenia związane z zabezpieczeniami i zgodnością.

  • Sprawdzanie i weryfikowanie baz kodu: Dowiesz się, jak utworzyć spis wszystkich zależności w aplikacjach, zweryfikować zgodność licencji, aby uniknąć problemów prawnych, wykryć znane luki w zabezpieczeniach za pośrednictwem baz danych CVE i ocenić jakość zależności, w tym stan konserwacji i kondycję społeczności.

  • Implementowanie narzędzia GitHub Dependabot: Dowiesz się, jak narzędzie GitHub Dependabot automatycznie skanuje zależności pod kątem luk w zabezpieczeniach, tworzy żądania ściągnięcia za pomocą aktualizacji zabezpieczeń, generuje wykresy zależności pokazujące zależności przechodnie i integruje się z kartą GitHub Security w celu scentralizowanego zarządzania lukami w zabezpieczeniach.

  • Integrowanie SCA z potokami: Dowiesz się, jak zaimplementować automatyczne skanowanie w usłudze Azure Pipelines podczas kompilowania i wdrażania, konfigurować narzędzia SCA, w tym Mend (WhiteSource), Snyk i OWASP Dependency-Check, ustanawiać wskaźniki jakości, które powodują niepowodzenie budowy w przypadku wykrycia krytycznych luk w zabezpieczeniach, oraz generować Zbiór Informacji o Oprogramowaniu (SBOM) w celu zapewnienia zgodności i przejrzystości.

  • Badanie narzędzi SCA: Porównasz różne rozwiązania SCA, aby zrozumieć ich mocne strony, ograniczenia i idealne przypadki użycia. Omówione narzędzia obejmują oferty komercyjne, takie jak Mend i Snyk, które zapewniają kompleksowe skanowanie z obsługą, opcje typu open source, takie jak OWASP Dependency-Check jako ekonomiczny wariant skanowania, oraz zintegrowane z platformą rozwiązania, takie jak źródła nadrzędne usługi Azure Artifacts i GitHub Dependabot.

  • Automatyzowanie skanowania kontenerów: Dowiesz się, jak skanować obrazy bazowe kontenerów pod kątem luk w zabezpieczeniach, analizować zależności aplikacji w kontenerach, integrować skanowanie kontenerów w potokach CI/CD oraz konfigurować rejestry kontenerów, takie jak Azure Container Registry i Docker Hub, aby automatycznie blokować obrazy zawierające podatności.

  • Interpretowanie alertów skanera: Dowiesz się, jak ocenić ważność luk w zabezpieczeniach przy użyciu wyników CVSS, określić możliwości wykorzystania, biorąc pod uwagę, czy luki w zabezpieczeniach są osiągalne w aplikacji, ustalać priorytety korygowania na podstawie wpływu na działalność biznesową i ryzyka oraz zarządzać fałszywie dodatnimi, które mogą przeciążać zespoły, jeśli nie są prawidłowo filtrowane.

Cele kształcenia

Po ukończeniu tego modułu będziesz mieć następujące umiejętności:

  • Zapoznaj się z analizą kompozycji oprogramowania (SCA) i dowiedz się, dlaczego automatyczne skanowanie zależności jest niezbędne do zarządzania ryzykiem zabezpieczeń i zgodności w nowoczesnych aplikacjach utworzonych na podstawie składników typu open source.
  • Sprawdź i zweryfikuj bazy kodu , spisując wszystkie zależności, w tym zależności przechodnie, weryfikując zgodność licencji, wykrywając znane luki w zabezpieczeniach za pośrednictwem baz danych CVE i oceniając jakość zależności.
  • Zaimplementuj narzędzie GitHub Dependabot , aby automatycznie wykrywać zależności podatne na zagrożenia, odbierać żądania ściągnięcia za pomocą aktualizacji zabezpieczeń, wizualizować wykresy zależności i integrować alerty luk w zabezpieczeniach za pomocą karty Zabezpieczenia usługi GitHub.
  • Integrowanie kontroli SCA w usłudze Azure Pipelines przez zaimplementowanie zautomatyzowanego skanowania podczas kompilacji, konfigurowanie bram jakości, które zatrzymują kompilacje w przypadku krytycznych luk w zabezpieczeniach, generowanie raportów zgodności i tworzenie listy materiałowej oprogramowania (SBOM).
  • Przeanalizuj i skonfiguruj narzędzia SCA w tym komercyjne rozwiązania, takie jak Mend (WhiteSource) i Snyk, narzędzia typu open source, takie jak OWASP Dependency-Check, oraz rozwiązania zintegrowane z platformą, takie jak źródła nadrzędne Azure Artifacts.
  • Automatyzowanie skanowania obrazów kontenera w celu wykrywania luk w zabezpieczeniach obrazów podstawowych i zależności aplikacji, integrowania skanowania z przepływami pracy ciągłej integracji/ciągłego wdrażania oraz konfigurowania rejestrów w celu zapobiegania wdrażaniu kontenerów podatnych na zagrożenia.
  • Interpretowanie alertów z narzędzi do skanowania poprzez ocenę ważności za pomocą wyników CVSS, określanie eksploatowalności oraz osiągalności, priorytetyzowanie poprawy na podstawie wpływu biznesowego i efektywne zarządzanie fałszywie pozytywnymi wynikami.

Warunki wstępne

Przed rozpoczęciem tego modułu należy dysponować następującymi informacjami:

  • Rozumienie zależności oprogramowania: Podstawowa wiedza na temat używania bibliotek, frameworków i pakietów przez menedżerów pakietów, takich jak npm, pip, NuGet lub Maven.
  • Znajomość pojęć związanych z metodykami DevOps: Zrozumienie ciągłej integracji, ciągłego dostarczania, potoków kompilacji i cyklu życia tworzenia oprogramowania.
  • Doświadczenie z systemem kontroli wersji: Podstawowe doświadczenie z Git, żądaniami ściągnięcia i przeglądem kodu w przepływach pracy, gdzie zazwyczaj odbywa się zarządzanie zależnościami.
  • Świadomość typu open source: Ogólne zrozumienie, że składniki typu open source mogą zawierać luki w zabezpieczeniach i mieć wymagania licencyjne (wiedza z poprzednich modułów jest przydatna).
  • Środowisko usługi Azure DevOps lub GitHub: Znajomość usługi Azure Pipelines lub GitHub Actions w celu implementacji automatycznego skanowania w przepływach pracy CI/CD.

Doświadczenie w pracy w organizacjach dostarczających oprogramowanie jest korzystne, ale nie jest wymagane. Ten moduł opiera się na pojęciach dotyczących oprogramowania typu open source i zawiera praktyczne wskazówki dotyczące implementacji analizy kompozycji oprogramowania.