Udostępnij za pośrednictwem


Zabezpiecz środowisko platformy DevOps zgodnie z koncepcją Zero Trust

Ten artykuł pomaga ci, jako członkowi zespołu DevOps, zaimplementować zasadę Zero Trust oraz zasadę najmniejszych uprawnień i zabezpieczyć środowisko platformy DevOps. Zawiera on treści z naszego eBooka Securing Enterprise DevOps Environments i wyróżnia najlepsze praktyki dotyczące zarządzania danymi tajnymi i certyfikatami.

Nowoczesne przedsiębiorstwa korzystają z platform DevOps do wdrażania, w tym pipeline'ów i środowisk produkcyjnych, które są niezbędne, aby programiści mogli być produktywni. W przeszłości metody zabezpieczeń aplikacji nie uwzględniały zwiększonej powierzchni ataków, którą charakteryzują się obecne potoki i środowiska produkcyjne. Ponieważ źli aktorzy przesuwają się na wcześniejsze etapy i celują w narzędzia źródłowe, potrzebujesz innowacyjnych podejść do zabezpieczania środowisk platform 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).

Diagram przedstawia środowiska platformy DevOps i zagrożenia bezpieczeństwa.

Rozszerzenia potoku CI/CD przedstawiają atakującym możliwości angażowania się w eskalację uprawnień w środowisku aplikacji. Rozszerzenia i integracje zwiększają luki w zabezpieczeniach obszaru podatnego na ataki. Kluczowe jest bronienie się przed zagrożeniami związanymi ze włamaniami przez złośliwe oprogramowanie.

Jak i dlaczego złe podmioty atakują rurociągi

Potoki i środowiska produkcyjne mogą być niezależne od standardowych praktyk i procesów bezpieczeństwa aplikacji. Zazwyczaj wymagają poświadczeń dostępu wysokiego poziomu, które mogą zapewnić głęboki i znaczący dostęp do złych podmiotów.

Chociaż źli aktorzy znajdują nowe sposoby naruszenia zabezpieczeń systemów, najbardziej typowe luki w zabezpieczeniach potoków obejmują:

  • 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 praktyki dotyczące zarządzania tajemnicami i certyfikatami

Unikanie katastrofalnego naruszenia może być tak proste, jak skuteczne zarządzanie tajemnicami. Na poniższym diagramie przedstawiono przykład efektywnego zarządzania tajnymi danymi, hasłami, tokenami dostępu i certyfikatami.

Diagram ilustruje zarządzanie tajemnicami i certyfikatami.

Jak pokazano na poprzednim diagramie, deweloper uruchamia kompilację dla żądania klienta. Następnie GitHub uruchamia runnera z identyfikatorem roli aplikacji Vault i identyfikatorem tajnym. Jednostka zaufana okresowo żąda nowego tajnego identyfikatora z Vault i pobiera identyfikator tajnego klucza GitHub z GitHub. Skarbiec używa identyfikatora roli GitHub Secrets oraz identyfikatora wpisu tajnego, aby się zalogować i pobrać zasoby do podpisywania kodu. Runner 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ą tajne informacje w sejfach 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. OpenID Connect (OIDC) umożliwia przepływom pracy GitHub Actions uzyskiwanie dostępu do zasobów na platformie Azure bez konieczności przechowywania poświadczeń platformy Azure jako trwałych tajnych danych 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 audytu.Przejrzyj dzienniki audytu, aby śledzić, kto uzyskał dostęp, jakie zmiany zaszły oraz datę/godzinę dla dowolnego aktywnego systemu. W szczególności obejmują platformy DevOps z pipelines CI/CD, które przechodzą do środowiska produkcyjnego. Ścieżki audytowe dla narzędzi DevOps oferują skuteczne sposoby szybszego reagowania na zagrożenia, wykrywania podejrzanych działań i zgłaszania ich jako potencjalne naruszenia lub luki w zabezpieczeniach oraz identyfikowania przypadków potencjalnego nadużycia danych lub 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.
  • Automatyzuj skanowanie szablonów Infrastruktury jako Kod (IaC). W środowiskach IaC można łatwo skanować pod kątem błędów konfiguracji, audytów zgodności i kwestii związanych 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.
  • Automatyzuj przepływy pracy zatwierdzania. Aby jakikolwiek przepływ pracy zatwierdzania mógł wypchnąć kod do środowiska produkcyjnego, konieczne jest przeprowadzenie niektórych testów automatycznych lub ręcznych w celu weryfikacji bezpieczeństwa, wartości biznesowej, statusu oraz jakości każdej prośby. Te kontrole działają jako brama między rozwojem a produkcją, aby zapobiec atakom DoS (odmowa usługi) oraz złośliwym podmiotom wstrzykującym kod w środowiskach produkcyjnych bez wykrycia lub wyzwolenia 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ą jak najmniejszych uprawnień do wykonywania swojej pracy. 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