Wzorzec kwarantanny

Korzystaj z artefaktów oprogramowania innych firm w łańcuchu dostaw tylko wtedy, gdy są weryfikowane i oznaczone jako bezpieczne do użycia zgodnie z dobrze zdefiniowanymi procesami. Ten wzorzec jest operacyjnym sidecarem procesu wytwarzania oprogramowania. Podmiot korzystający z tego wzorca wywołuje ten proces, aby zweryfikować i zablokować użycie oprogramowania, które może potencjalnie wprowadzić luki w zabezpieczeniach.

Kontekst i problem

Rozwiązania w chmurze często korzystają z oprogramowania innych firm uzyskanego ze źródeł zewnętrznych. Pliki binarne typu open source, publiczne obrazy kontenerów, obrazy systemu operacyjnego dostawcy to kilka przykładów tego typu artefaktów. Wszystkie takie artefakty zewnętrzne muszą być traktowane jako niezaufane.

W typowym przepływie pracy artefakt jest pobierany z magazynu poza zakresem rozwiązania, a następnie integrowany z potokiem wdrażania. W tym podejściu występują pewne potencjalne problemy. Źródło może nie być zaufane, artefakt może zawierać luki w zabezpieczeniach lub może nie być odpowiednie w inny sposób dla środowiska deweloperskiego.

Jeśli te problemy nie zostaną rozwiązane, integralność danych i gwarancje poufności rozwiązania mogą zostać naruszone, a także może dojść do niestabilności z powodu niezgodności z innymi składnikami.

Niektórych z tych problemów z zabezpieczeniami można uniknąć, dodając kontrole do każdego artefaktu.

Solution

Przed wprowadzeniem go do obciążenia roboczego należy walidować oprogramowanie pod kątem zabezpieczeń. W trakcie tego procesu każdy artefakt przechodzi dokładną weryfikację operacyjną, która weryfikuje go pod kątem określonych warunków. Dopiero po spełnieniu tych warunków proces oznacza artefakt jako zaufany.

Proces kwarantowania jest środkiem bezpieczeństwa, który składa się z serii punktów kontrolnych, które są stosowane przed użyciem artefaktu. Te punkty kontrolne zabezpieczeń zapewniają, że artefakt przechodzi ze stanu niezaufanego do zaufanego stanu.

Proces kwarantanny nie zmienia kompozycji artefaktu. Proces jest niezależny od cyklu tworzenia oprogramowania i jest wywoływany przez konsumentów zgodnie z potrzebami. Jako użytkownik artefaktu zablokuj użycie artefaktów, dopóki nie przejdą kwarantanny.

Oto typowy przepływ pracy kwarantanny:

Ten diagram przedstawia ogólny przepływ pracy wzorca kwarantanny.

  1. Odbiorca sygnalizuje swoją intencję, określa źródło wejściowe artefaktu i blokuje jego użycie.

  2. Proces kwarantanny weryfikuje pochodzenie żądania i pobiera artefakty z określonego magazynu.

  3. Dedykowany proces weryfikacji jest przeprowadzany w ramach kwarantanny i obejmuje weryfikowanie ograniczeń wejściowych oraz sprawdzanie atrybutów, źródła i typu zgodnie z ustalonymi standardami.

    Niektóre z tych testów zabezpieczeń mogą być skanowaniem luk w zabezpieczeniach, wykrywaniem złośliwego oprogramowania i innymi testami uruchamianymi na każdym przesłanym artefaktie.

    Rzeczywiste kontrole zależą od typu artefaktu. Ocena obrazu systemu operacyjnego różni się od oceny pakietu NuGet, na przykład.

  4. Jeśli proces weryfikacji zakończy się pomyślnie, artefakt zostanie opublikowany w bezpiecznym magazynie z wyraźnymi adnotacjami. W przeciwnym razie pozostaje niedostępny dla konsumenta.

    Proces publikowania może zawierać raport zbiorczy, który pokazuje dowód weryfikacji i poziom krytyczności każdego sprawdzenia. Uwzględnij datę wygaśnięcia w raporcie, po upływie której raport należy uznać za nieważny, a artefakt jest uznawany za niebezpieczny.

  5. Proces oznacza koniec kwarantanny, sygnalizując zdarzenie z informacjami o stanie, któremu towarzyszy raport.

    Na podstawie informacji konsumenci mogą podejmować działania w celu korzystania z zaufanego artefaktu. Te akcje wykraczają poza zakres wzorca „Kwarantanna”.

Problemy i zagadnienia

  • Jako zespół, który korzysta z artefaktów innych firm, upewnij się, że są pozyskiwane z zaufanego źródła. Wybór musi być zgodny ze standardami zatwierdzonymi przez organizację dla artefaktów, które są pozyskiwane od dostawców innych firm. Dostawcy muszą mieć możliwość spełnienia wymagań dotyczących zabezpieczeń Twojego obciążenia roboczego (i Twojej organizacji). Upewnij się na przykład, że zasady odpowiedzialnego ujawniania podatności dostawcy spełniają wymagania organizacji dotyczące bezpieczeństwa.

  • Utwórz segmentację zasobów przechowujących zaufane i niezaufane artefakty. Użyj mechanizmów kontroli tożsamości i sieci, aby ograniczyć dostęp wyłącznie upoważnionym użytkownikom.

  • Zapewnij niezawodny sposób wywoływania procesu kwarantanny. Upewnij się, że artefakt nie jest przetwarzany przypadkowo, dopóki nie zostanie oznaczony jako zaufany. Sygnalizacja powinna być zautomatyzowana. Na przykład zadania związane z powiadamianiem osób odpowiedzialnych, gdy artefakt jest integrowany do środowiska deweloperskiego, zatwierdzanie zmian w repozytorium GitHub i dodawanie obrazu do prywatnego rejestru.

  • Alternatywą dla implementacji wzorca kwarantanny jest zlecenie go na zewnątrz. Istnieją praktycy kwarantanny, którzy specjalizują się w weryfikacji zasobów publicznych w ramach swojego modelu biznesowego. Oceń zarówno koszty finansowe, jak i operacyjne wdrożenia wzorca w porównaniu z outsourcingiem tej odpowiedzialności. Jeśli wymagania dotyczące zabezpieczeń wymagają większej kontroli, zalecane jest zaimplementowanie własnego procesu.

  • Zautomatyzuj proces pozyskiwania artefaktów, a także proces publikowania artefaktu. Ponieważ zadania weryfikacji mogą zająć trochę czasu, proces automatyzacji musi móc kontynuować działanie do momentu ukończenia wszystkich zadań.

  • Wzorzec służy jako pierwsza okazja do chwilowej weryfikacji. Pomyślne przejście przez kwarantannę nie gwarantuje, że artefakt pozostaje wiarygodny na czas nieokreślony. Artefakt musi być nadal poddawany ciągłemu skanowaniu, walidacji potoku i innym rutynowym kontrolom bezpieczeństwa, które służą jako końcowe kontrole walidacyjne przed promowaniem wydania.

  • Wzorzec może być implementowany przez centralne zespoły organizacji lub przez indywidualny zespół roboczy. Jeśli istnieje wiele wystąpień lub odmian procesu kwarantanny, te operacje powinny być ustandaryzowane i scentralizowane przez organizację. W takim przypadku zespoły odpowiedzialne za obciążenia współdzielą proces i czerpią korzyści z odciążenia związanego z zarządzaniem procesem.

Kiedy należy używać tego wzorca

Użyj tego wzorca, gdy:

  • Obciążenie robocze integruje artefakt opracowany poza zakresem prac zespołu odpowiedzialnego za to obciążenie robocze. Do powszechnych przykładów należą:

    • Artefakt Open Container Initiative (OCI) z rejestrów publicznych, takich jak DockerHub, Rejestr kontenerów GitHub, Rejestr kontenerów firmy Microsoft

    • Biblioteka oprogramowania lub pakiet ze źródeł publicznych, takich jak galeria NuGet, indeks pakietów języka Python, repozytorium Apache Maven

    • Zewnętrzny pakiet infrastruktury jako kodu (IaC), taki jak moduły programu Terraform, Cookbooks Community Chef, moduły zweryfikowane na platformie Azure

    • Obraz systemu operacyjnego lub instalator oprogramowania dostarczony przez dostawcę

  • Zespół ds. obciążeń roboczych uważa artefakt za ryzyko, które warto ograniczyć. Zespół rozumie negatywne konsekwencje integracji skompromitowanych artefaktów oraz wartość kwarantanny w zapewnianiu zaufanego środowiska.

  • Zespół ma jasne i wspólne zrozumienie reguł walidacji, które powinny być stosowane do typu artefaktu. Bez konsensusu wzorzec może nie być skuteczny.

    Na przykład, jeśli za każdym razem, gdy obraz systemu operacyjnego jest przekazywany do kwarantanny, stosowany jest inny zestaw kontroli walidacyjnych, ogólny proces weryfikacji obrazów systemu operacyjnego staje się niespójny.

Ten wzorzec może nie być przydatny w następujących sytuacjach:

  • Artefakt oprogramowania jest tworzony przez zespół workload lub zaufany zespół partnerski.

  • Koszt braku weryfikacji artefaktu jest niższy niż koszt budowy i utrzymania procesu kwarantanny.

Projektowanie obciążenia pracy

Architekt i zespół odpowiedzialny za workload powinni ocenić, jak wzorzec kwarantanny może być używany w ramach praktyk DevSecOps workloadu. Zasady leżące u podstaw zostały omówione w filarach Azure Well-Architected Framework.

Filar Jak ten wzorzec obsługuje cele filaru
Decyzje dotyczące projektowania zabezpieczeń pomagają zapewnić poufność, integralność i dostępność danych i systemów obciążenia. Pierwsze zadanie walidacji zabezpieczeń realizuje wzorzec kwarantanny. Weryfikacja artefaktu zewnętrznego jest przeprowadzana w środowisku segmentowanym, zanim zostanie on wykorzystany w procesie wytwarzania oprogramowania.

- SE:02 Zabezpieczony cykl projektowania
- SE:11 Testowanie i walidacja
Doskonałość operacyjna pomaga zapewnić jakość obciążeń dzięki ustandaryzowanym procesom i spójności zespołu. Wzorzec kwarantanny obsługuje bezpieczne praktyki wdrażania (SDP), upewniając się, że skompromitowane artefakty nie są wykorzystywane przez obciążenie, co może prowadzić do naruszeń zabezpieczeń podczas wdrożeń ze stopniowym udostępnianiem.

- OE:03 Praktyki programistyczne
- OE:11 Testowanie i walidacja

Podobnie jak w przypadku każdej decyzji projektowej, należy rozważyć wszelkie kompromisy w stosunku do celów innych filarów, które mogą zostać wprowadzone przy użyciu tego wzorca.

Example

Ten przykład stosuje przepływ pracy rozwiązania w scenariuszu, w którym zespół odpowiedzialny za obciążenie chce zintegrować artefakty OCI z publicznych rejestrów z wystąpieniem usługi Azure Container Registry (ACR), należącym do zespołu odpowiedzialnego za obciążenie. Zespół traktuje tę instancję jako zaufany magazyn artefaktów.

Środowisko obciążeń używa usługi Azure Policy dla platformy Kubernetes do wymuszania ładu. Ogranicza to pobieranie obrazów kontenerów tylko z wystąpienia zaufanego rejestru. Ponadto alerty usługi Azure Monitor są konfigurowane w celu wykrywania wszelkich importów do tego rejestru kontenerów z nieoczekiwanych źródeł.

Ten schemat przedstawia implementację wzorca Quarantine w Azure Container Registry.

  1. Żądanie dotyczące obrazu zewnętrznego jest składane przez zespół ds. obciążeń za pośrednictwem aplikacji niestandardowej hostowanej w usłudze Azure Web Apps. Aplikacja zbiera wymagane informacje tylko od autoryzowanych użytkowników.

    Punkt kontrolny zabezpieczeń: tożsamość osoby żądającej, docelowy rejestr kontenerów i żądane źródło obrazu są weryfikowane.

  2. Żądanie jest przechowywane w usłudze Azure Cosmos DB.

    Punkt kontrolny zabezpieczeń: ścieżka audytu jest przechowywana w bazie danych, śledząc pochodzenie i walidację obrazu. Ten ślad jest również używany do raportowania historycznego.

  3. Żądanie jest obsługiwane przez orkiestrator przepływu pracy, który jest trwałą funkcją Azure Function. Orkiestrator używa podejścia scatter-gather do uruchamiania wszystkich walidacji.

    Punkt kontrolny zabezpieczeń: orchestrator ma tożsamość zarządzaną i tylko niezbędne uprawnienia dostępu do wykonywania zadań weryfikacji.

  4. Orkiestrator wysyła żądanie zaimportowania obrazu do poddanego kwarantannie rejestru Azure Container Registry (ACR), który jest uznawany za niezaufany magazyn.

  5. Proces importowania w rejestrze kwarantanny pobiera obraz z niezaufanego repozytorium zewnętrznego. Jeśli importowanie zakończy się pomyślnie, rejestr kwarantanny ma lokalną kopię obrazu, aby przeprowadzić walidację.

    Punkt kontroli zabezpieczeń: rejestr kwarantanny chroni przed manipulowaniem i zużyciem zasobów podczas procesu weryfikacji.

  6. Orkiestrator uruchamia wszystkie zadania weryfikacji na lokalnej kopii obrazu. Zadania obejmują kontrole, takie jak wykrywanie typowych luk w zabezpieczeniach i ekspozycji (CVE), ocena zestawienia składników oprogramowania (SBOM), wykrywanie złośliwego oprogramowania, podpisywanie obrazów i inne.

    Orkiestrator decyduje o typie sprawdzeń, kolejności wykonywania i czasie wykonywania. W tym przykładzie używa się usługi Azure Container Instance jako modułów uruchamiających zadania, a wyniki znajdują się w bazie danych inspekcji usługi Cosmos DB. Wszystkie zadania mogą zająć dużo czasu.

    Punkt kontroli bezpieczeństwa: ten krok jest rdzeniem procesu kwarantanny, który wykonuje wszystkie kontrole walidacyjne. Rodzaje kontroli mogą to być niestandardowe rozwiązania typu open source lub zakupione od dostawcy.

  7. Orkiestrator podejmuje decyzję. Jeśli obraz kontenera przejdzie wszystkie walidacje, zdarzenie zostanie zanotowane w bazie danych inspekcji, obraz kontenera zostanie wypchnięty do zaufanego rejestru, a kopia lokalna zostanie usunięta z rejestru kwarantanny. W przeciwnym razie obraz zostanie usunięty z rejestru kwarantanny, aby zapobiec jego niezamierzonemu użyciu.

    Punkt kontrolny zabezpieczeń: orkiestrator utrzymuje segmentację między zaufanymi i niezaufanymi lokalizacjami zasobów.

    Note

    Zamiast podejmowania decyzji przez koordynatora zespół ds. obciążeń może przejąć tę odpowiedzialność. W tej alternatywie orkiestrator publikuje wyniki weryfikacji za pośrednictwem interfejsu API i przechowuje obraz w rejestrze kwarantanny przez pewien czas.

    Zespół ds. obciążeń podejmuje decyzję po przejrzeniu wyników. Jeśli wyniki mieszczą się w ich tolerancji ryzyka, pobierają obraz z repozytorium kwarantanny do instancji kontenera. Ten model pull jest bardziej praktyczny, gdy ten wzorzec jest używany do obsługi wielu zespołów odpowiedzialnych za obciążenia z różnymi tolerancjami ryzyka bezpieczeństwa.

Wszystkie rejestry kontenerów są objęte usługą Microsoft Defender for Containers, która stale skanuje je pod kątem nowo wykrywanych problemów. Te problemy są wyświetlane w usłudze Zarządzanie lukami w zabezpieczeniach w usłudze Microsoft Defender.

Następne kroki

Następujące wskazówki mogą być istotne podczas implementowania tego wzorca: