Zabezpieczanie środowiska platformy DevOps dla modelu Zero Trust
Ten artykuł pomaga, jako członek zespołu DevOps, zaimplementować zasadę zerowego zaufania najniższych uprawnień i zabezpieczyć środowisko platformy DevOps. Zawiera on zawartość z naszego książki eBook Securing Enterprise DevOps Environments i wyróżnia najlepsze rozwiązania dotyczące zarządzania wpisami tajnymi i certyfikatami.
Nowoczesne przedsiębiorstwa korzystają z platform DevOps na potrzeby wdrażania, w tym potoków i środowisk produkcyjnych, których deweloperzy wymagają produktywności. W przeszłości metody zabezpieczeń aplikacji nie uwzględniały zwiększonej powierzchni ataków, która uwidacznia bieżące potoki i środowiska produkcyjne. Gdy hakerzy przesuwają się w lewo i kierują narzędzia nadrzędne, potrzebne są innowacyjne podejścia do zabezpieczania środowisk platformy DevOps.
Na poniższym diagramie zwróć uwagę, że środowisko platformy DevOps łączy się ze środowiskiem aplikacji oraz z rozszerzeniami potoku ciągłej integracji i ciągłego dostarczania (CI/CD).
Rozszerzenia potoku ciągłej integracji/ciągłego wdrażania przedstawiają hakerom możliwości zaangażowania się w eskalację uprawnień ze środowiska aplikacji. Rozszerzenia i integracje zwiększają luki w zabezpieczeniach obszaru podatnego na ataki. Ochrona przed zagrożeniami włamań przed złośliwym oprogramowaniem ma kluczowe znaczenie.
Jak i dlaczego osoby atakujące kierują potoki docelowe
Potoki i środowiska produkcyjne mogą być niezależne od standardowych praktyk i procesów zabezpieczeń aplikacji. Zazwyczaj wymagają poświadczeń dostępu wysokiego poziomu, które mogą zapewnić głęboki i zrozumiały dostęp do osób atakujących.
Podczas gdy osoby atakujące znajdują nowe sposoby naruszenia zabezpieczeń systemów, najbardziej typowe wektory ataków dla potoków to:
- Wyodrębnianie zmiennych środowiska uruchomieniowego i iniekcji argumentów.
- Skrypty pobierające zasady usługi lub poświadczenia z potoków.
- Nieprawidłowo skonfigurowane osobiste tokeny dostępu, które umożliwiają każdemu, kto ma klucz dostępu do środowiska platformy DevOps.
- Luki w zabezpieczeniach i błędy konfiguracji w zintegrowanych narzędziach, które wymagają dostępu do kodu (często tylko do odczytu, ale czasami dostępu do zapisu). Zintegrowane narzędzia mogą obejmować struktury testowe, statyczne testowanie zabezpieczeń aplikacji (SAST) i dynamiczne testowanie zabezpieczeń aplikacji (DAST).
Najlepsze rozwiązania dotyczące zarządzania wpisami tajnymi i certyfikatami
Unikanie katastrofalnego naruszenia może być tak proste, jak skuteczne zarządzanie wpisami tajnymi. Na poniższym diagramie przedstawiono przykład efektywnego wpisu tajnego, hasła, tokenu dostępu i zarządzania certyfikatami.
Jak pokazano na powyższym diagramie, deweloper uruchamia kompilację dla żądania klienta. Następnie usługa GitHub uruchamia moduł uruchamiający z identyfikatorem roli aplikacji usługi Vault i identyfikatorem wpisu tajnego. Jednostka zaufana okresowo żąda nowego identyfikatora wpisu tajnego z magazynu i pobiera identyfikator wpisu tajnego usługi GitHub z usługi GitHub. Magazyn używa identyfikatora roli wpisów tajnych usługi GitHub i identyfikatora wpisu tajnego do logowania się i pobierania zasobów podpisywania kodu. Moduł uruchamiający dostosowuje aplikację mobilną i podpisuje kod.
Poniższe najlepsze rozwiązania pomagają utworzyć bezpieczną konfigurację, która minimalizuje ujawnienie wpisów tajnych i parametrów.
- Zapewnij bezpieczny magazyn dla wpisów tajnych i certyfikatów na każdym etapie cyklu życia aplikacji. Zawsze twórz tak, jakby był to projekt open source. Upewnij się, że zespoły przechowują wpisy tajne w magazynach kluczy, a nie w kodzie lub w środowiskach zespołowych. Usługa Azure Key Vault w chmurze umożliwia bezpieczne przechowywanie wpisów tajnych i uzyskiwanie do nich dostępu.
- Konfigurowanie platformy Azure w celu zaufania identyfikatorowi OIDC usługi GitHub jako tożsamości federacyjnej. Program OpenID Connect (OIDC) umożliwia przepływom pracy funkcji GitHub Actions uzyskiwanie dostępu do zasobów na platformie Azure bez konieczności przechowywania poświadczeń platformy Azure jako długotrwałych wpisów tajnych usługi GitHub.
Więcej najlepszych rozwiązań dotyczących zabezpieczeń środowiska DevOps
Aby pomóc w obronie przed zdarzeniami zabezpieczeń, zapoznaj się z poniższymi najlepszymi rozwiązaniami, aby wzmocnić środowiska platformy DevOps. Zapoznaj się ze szczegółową dyskusją na temat tych zaleceń w artykule eBook Securing Enterprise DevOps Environments (Zabezpieczanie środowisk DevOps Dla przedsiębiorstw).
- Wyposażyć każde środowisko platformy DevOps w ślady inspekcji. Przejrzyj dzienniki inspekcji, aby śledzić , kto uzyskał dostęp, jakie zmiany wystąpiły, oraz datę/godzinę dla dowolnego aktywnego systemu. W szczególności obejmują platformy DevOps z potokami ciągłej integracji/ciągłego wdrażania, które przepływają do środowiska produkcyjnego. Dzienniki inspekcji dla narzędzi DevOps zapewniają niezawodne sposoby szybszego korygowania zagrożeń, znajdowania i zgłaszania alertów o podejrzanych działaniach w celu uzyskania możliwych naruszeń lub luk w zabezpieczeniach oraz znajdowania potencjalnych danych lub niewłaściwego użycia uprawnień. Upewnij się, że szczegółowe dzienniki kontroli i inspekcji są dostępne w każdym środowisku.
- Zabezpieczanie łańcucha dostaw oprogramowania. Każda biblioteka, którą wprowadzasz do bazy kodu, rozszerza łańcuch dostaw oprogramowania i dziedziczy zależności z każdego projektu lub narzędzia typu open source. Ostrożnie usuń niepotrzebne biblioteki i składniki open source, aby zmniejszyć obszar ataków łańcucha dostaw oprogramowania.
- Automatyzowanie skanowania szablonów infrastruktury jako kodu (IaC). W środowiskach IaC można łatwo skanować pod kątem błędów konfiguracji, inspekcji zgodności i problemów z zasadami. Implementowanie kontroli zgodności i kontroli dostępu zwiększa poziom zabezpieczeń całej infrastruktury. Sprawdź zabezpieczenia integracji narzędzi spełniających wymagania systemowe automatyzacji.
- Przepływy pracy zatwierdzania. Aby każdy przepływ pracy zatwierdzania wypychał kod do środowiska produkcyjnego, niektóre testy automatyczne lub ręczne muszą potwierdzić bezpieczeństwo, wartość biznesową, stan i jakość każdego żądania. Te kontrole działają jako brama między programowaniem a produkcją, aby zapobiec atakom typu "odmowa usługi" i hakerom wstrzykiwania kodu do środowisk produkcyjnych bez flagowania lub wyzwalania alertu.
- Zezwalaj tylko na zweryfikowane integracje narzędzi DevOps. Podobnie jak w środowiskach deweloperskich, narzędzia DevOps są wyposażone w rozszerzenia i integracje, aby zespół DevOps był wydajny i bezpieczny. Upewnij się, że zweryfikowane integracje wymagają najniższych uprawnień, które mogą wykonać swoją pracę. Zaimplementuj dostęp z najniższymi uprawnieniami, jeśli to możliwe, i zapewnij odpowiedni poziom uprawnień do odczytu/zapisu. Dowiedz się, jak wyłączyć lub ograniczyć funkcję GitHub Actions dla organizacji.
Następne kroki
- Zabezpieczanie środowiska deweloperskiego pomaga zaimplementować zasady Zero Trust w środowiskach deweloperskich z najlepszymi rozwiązaniami dotyczącymi najniższych uprawnień, zabezpieczeń gałęzi i narzędzi, rozszerzeń i integracji zaufania.
- Osadzanie zabezpieczeń Zero Trust w przepływie pracy dla deweloperów ułatwia szybkie i bezpieczne wprowadzanie innowacji.
- W artykule Secure DevOps environments for Zero Trust opisano najlepsze rozwiązania dotyczące zabezpieczania środowisk DevOps przy użyciu podejścia Zero Trust , które uniemożliwia hakerom naruszenie pól deweloperskich, infekowanie potoków wydania za pomocą złośliwych skryptów i uzyskiwanie dostępu do danych produkcyjnych za pośrednictwem środowisk testowych.
- Zaimplementuj zasady Zero Trust zgodnie z opisem w memorandum 22-09 (na poparcie amerykańskiego nakazu wykonawczego 14028, Poprawa bezpieczeństwa cybernetycznego narodu) przy użyciu identyfikatora Microsoft Entra JAKO scentralizowanego systemu zarządzania tożsamościami.
- Przyspieszanie i zabezpieczanie kodu za pomocą usługi Azure DevOps za pomocą narzędzi, które zapewniają deweloperom najszybszy i najbezpieczniejszy kod w środowisku chmury.