Korzystaj z artefaktów oprogramowania innych firm w łańcuchu dostaw tylko wtedy, gdy są weryfikowane i oznaczone jako bezpieczne do użycia przez dobrze zdefiniowane procesy. Ten wzorzec jest przyczepą operacyjną do procesu programowania. Użytkownik 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 zintegrowany 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 lub spowodować niestabilność z powodu niezgodności z innymi składnikami.
Niektóre z tych problemów z zabezpieczeniami można uniknąć, dodając kontrole do każdego artefaktu.
Rozwiązanie
Przed wprowadzeniem go do obciążenia należy walidować oprogramowanie pod kątem zabezpieczeń. W trakcie tego procesu każdy artefakt przechodzi dokładną rigor operacyjną, który weryfikuje go pod kątem określonych warunków. Dopiero po spełnieniu tych warunków artefakt oznacza go jako zaufany.
Proces kwarantowania jest środkiem bezpieczeństwa, który składa się z serii punktów kontrolnych, które są stosowane przed zużyciem artefaktu. Te punkty kontrolne zabezpieczeń zapewniają, że artefakt przechodzi ze stanu niezaufanego do zaufanego stanu.
Należy pamiętać, że proces kwarantanny nie zmienia kompozycji artefaktu. Proces jest niezależny od cyklu tworzenia oprogramowania i jest wywoływany przez użytkowników zgodnie z potrzebami. Jako użytkownik artefaktu zablokuj użycie artefaktów do momentu przekazania kwarantanny.
Oto typowy przepływ pracy kwarantanny:
Odbiorca sygnalizuje swoją intencję, określa źródło wejściowe artefaktu i blokuje jego użycie.
Proces kwarantanny weryfikuje pochodzenie żądania i pobiera artefakty z określonego magazynu.
Niestandardowy proces weryfikacji jest wykonywany w ramach kwarantanny, który obejmuje weryfikowanie ograniczeń wejściowych i sprawdzanie atrybutów, źródła i typu zgodnie z ustalonymi standardami.
Niektóre z tych testów zabezpieczeń mogą być skanowanie luk w zabezpieczeniach, wykrywanie złośliwego oprogramowania itd. w 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.
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 krytyczne znaczenie każdego sprawdzenia. Uwzględnij wygaśnięcie w raporcie, poza którym raport powinien być nieprawidłowy, a artefakt jest uznawany za niebezpieczny.
Proces oznacza koniec kwarantanny, sygnalizując zdarzenie z informacjami o stanie dołączonymi do raportu.
Na podstawie informacji użytkownicy mogą podejmować działania w celu korzystania z zaufanego artefaktu. Te akcje wykraczają poza zakres wzorca Kwarantanna.
Problemy i kwestie do rozważenia
Jako zespół, który korzysta z artefaktów innych firm, upewnij się, że jest uzyskiwany 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ń obciążenia (i organizacji). Upewnij się na przykład, że plan odpowiedzialnego ujawnienia dostawcy spełnia wymagania dotyczące zabezpieczeń organizacji.
Utwórz segmentację między zasobami, które przechowują zaufane i niezaufane artefakty. Użyj mechanizmów kontroli tożsamości i sieci, aby ograniczyć dostęp do autoryzowanych użytkowników.
Istnieje niezawodny sposób wywoływania procesu kwarantanny. Upewnij się, że artefakt nie jest używany przypadkowo, dopóki nie zostanie oznaczony jako zaufany. Sygnał powinien być zautomatyzowany. Na przykład zadania związane z powiadamianiem odpowiedzialnych stron, gdy artefakt jest pozyskiwany do środowiska deweloperskiego, zatwierdzając zmiany w repozytorium GitHub, dodając obraz do prywatnego rejestru itd.
Alternatywą dla implementacji wzorca kwarantanny jest jego przekazanie. Istnieją praktyków kwarantanny, którzy specjalizują się w weryfikacji zasobów publicznych jako modelu biznesowego. Oceń zarówno koszty finansowe, jak i operacyjne wdrażania wzorca, a nie outsourcingu 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 być w stanie kontynuować do momentu ukończenia wszystkich zadań.
Wzorzec służy jako pierwsza chwilowa weryfikacja szansy sprzedaży. Pomyślne przekazanie kwarantanny nie gwarantuje, że artefakt pozostaje wiarygodny na czas nieokreślony. Artefakt musi być nadal poddawany ciągłemu skanowaniu, walidacji potoku i innym rutynowym sprawdzaniom zabezpieczeń, które służą jako weryfikacje ostatnich szans sprzedaży przed podwyższeniem poziomu wydania.
Wzorzec może być implementowany przez centralne zespoły organizacji lub indywidualnego zespołu roboczego. Jeśli istnieje wiele wystąpień lub odmian procesu kwarantanny, te operacje powinny być ustandaryzowane i scentralizowane przez organizację. W takim przypadku zespoły ds. obciążeń współużytkują proces i korzystają z odciążania zarządzania procesami.
Kiedy używać tego wzorca
Użyj tego wzorca, gdy:
Obciążenie integruje artefakt opracowany poza zakresem zespołu roboczego. 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, podręczniki Community Chef, moduły zweryfikowane na platformie Azure
Obraz systemu operacyjnego dostarczonego przez dostawcę
Zespół ds. obciążeń uważa artefakt za ryzyko, które warto zmniejszyć. Zespół rozumie negatywne konsekwencje integracji artefaktów z naruszonymi zagrożeniami 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 pozyskiwany do kwarantanny, 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ół ds. obciążeń lub zaufany zespół partnerski.
Ryzyko braku weryfikacji artefaktu jest tańsze niż koszt budowy i utrzymania procesu kwarantanny.
Projekt obciążenia
Architekt i zespół ds. obciążeń powinni ocenić, jak wzorzec kwarantanny może być używany w ramach praktyk DevSecOps obciążenia. Podstawowe zasady zostały omówione w filarach platformy 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. | Pierwsza odpowiedzialność za walidację zabezpieczeń jest obsługiwana przez wzorzec kwarantanny. Weryfikacja artefaktu zewnętrznego jest przeprowadzana w środowisku segmentowanym przed jego zużyciem przez proces programowania. - 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 naruszone artefakty nie są używane przez obciążenie, co może prowadzić do naruszeń zabezpieczeń podczas wdrożeń progresywnych ekspozycji. - 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.
Przykład
W tym przykładzie przepływ pracy rozwiązania jest stosowany do scenariusza, w którym zespół obciążeń chce zintegrować artefakty OCI z publicznych rejestrów do wystąpienia usługi Azure Container Registry (ACR), które jest własnością zespołu obciążeń. Zespół traktuje to wystąpienie jako zaufany magazyn artefaktów.
Środowisko obciążenia używa usługi Azure Policy dla platformy Kubernetes do wymuszania ładu. Ogranicza to ściąganie kontenera tylko z wystąpienia zaufanego rejestru. Ponadto alerty usługi Azure Monitor są konfigurowane w celu wykrywania wszelkich importów do tego rejestru z nieoczekiwanych źródeł.
Żądanie dotyczące obrazu zewnętrznego jest wykonywane przez zespół 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.
Żądanie jest przechowywane w usłudze Azure Cosmos DB.
Punkt kontrolny zabezpieczeń: dziennik inspekcji jest przechowywany w bazie danych, śledząc pochodzenie i walidację obrazu. Ten szlak jest również używany do raportowania historycznego.
Żądanie jest obsługiwane przez orkiestrator przepływu pracy, który jest trwałą funkcją platformy Azure. Orkiestrator używa metody zbierania punktowego do uruchamiania wszystkich walidacji.
Punkt kontrolny zabezpieczeń: koordynator ma tożsamość zarządzaną z wystarczającą ilością dostępu do wykonywania zadań weryfikacji.
Orkiestrator wysyła żądanie zaimportowania obrazu do kwarantanny usługi Azure Container Registry (ACR), która jest uważana za niezaufany magazyn.
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 do wykonania walidacji.
Punkt kontrolny zabezpieczeń: rejestr kwarantanny chroni przed manipulowaniem i zużyciem obciążenia podczas procesu weryfikacji.
Orkiestrator uruchamia wszystkie zadania weryfikacji na lokalnej kopii obrazu. Zadania obejmują kontrole, takie jak wykrywanie typowych luk w zabezpieczeniach i ekspozycji (CVE), ocena rachunku za oprogramowanie (SBOM), wykrywanie złośliwego oprogramowania, podpisywanie obrazów i inne.
Orkiestrator decyduje o typie kontroli, kolejności wykonywania i czasie wykonywania. W tym przykładzie używa usługi Azure Container Instance jako modułów uruchamiający zadania i wyniki znajdują się w bazie danych inspekcji usługi Cosmos DB. Wszystkie zadania mogą zająć dużo czasu.
Punkt kontrolny zabezpieczeń: ten krok jest rdzeniem procesu kwarantanny, który wykonuje wszystkie testy weryfikacyjne. Typ kontroli może być niestandardowymi rozwiązaniami typu open source lub zakupionymi przez dostawcę.
Orkiestrator podejmuje decyzję. Jeśli obraz przejdzie wszystkie walidacje, zdarzenie zostanie zanotowane w bazie danych inspekcji, obraz 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.
Uwaga
Zamiast podejmowania decyzji przez koordynatora zespół ds. obciążeń może przejąć ten 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 spełniają ich tolerancję ryzyka, ściągają obraz z repozytorium kwarantanny do wystąpienia kontenera. Ten model ściągania jest bardziej praktyczny, gdy ten wzorzec jest używany do obsługi wielu zespołów obciążeń z różnymi tolerancjami ryzyka bezpieczeństwa.
Wszystkie rejestry kontenerów są objęte usługą Microsoft Defender for Containers, która stale skanuje pod kątem nowo znalezionych problemów. Te problemy są wyświetlane w 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:
Rekomendacje zabezpieczania cyklu projektowania zawiera wskazówki dotyczące używania zaufanych jednostek kodu we wszystkich etapach cyklu projektowania.
Najlepsze rozwiązania dotyczące bezpiecznego łańcucha dostaw oprogramowania, szczególnie w przypadku zależności NuGet w aplikacji.
Dokumentacja usługi Azure Artifacts to biblioteka informacji związanych z zarządzaniem pakietami oprogramowania za pomocą usługi Azure Artifacts.