Zabezpieczanie środowiska deweloperskiego dla programu Zero Trust

Ten artykuł pomoże Ci, jako deweloper, zabezpieczyć środowisko projektowe, aby można było zaimplementować zasady Zero Trust (sprawdź jawnie, użyj dostępu z najmniejszymi uprawnieniami, przyjmij naruszenie). Zawiera on zawartość z naszego podręcznika Securing Enterprise DevOps Environments i wyróżnia najlepsze rozwiązania dotyczące zabezpieczeń i zaufania gałęzi, rozszerzeń i integracji.

Szybkość pracy deweloperów polega na możliwości pracy nad sposobem i miejscem, w którym chcesz zmaksymalizować wyniki biznesowe. Potrzebujesz zaawansowanych, dostosowywalnych maszyn z dostępem do katalogu głównego lub administratora. Jednak wymagania deweloperów mogą być sprzeczne z przepisami dotyczącymi zgodności oraz konieczność przeprowadzania inspekcji i kontrolowania dostępu i magazynowania prywatnego środowiska pracowników.

Niezarządzane maszyny łączące się z siecią organizacji muszą kwestionować zespoły zabezpieczeń, zaopatrzenie i zarząd ds. ładu. Najlepszy scenariusz udostępniania deweloperom domyślnych i wzmocnionych środowisk pracowników tworzy pogardę po obu stronach. Gdy pracownicy łączą się z dowolnego miejsca, narażone sieci Wi-Fi są otwartymi drzwiami cyberataku. Kradzież sprzętu i utrata są poważnymi problemami.

Luki w zabezpieczeniach rozszerzają się na integracje środowiska deweloperskiego. Narzędzia programistyczne, które zawierają rozbudowaną rozszerzalność, mogą mieć niezamierzone integracje na swoich platformach handlowych. Złośliwe rozszerzenia mogą zagrozić narzędziom deweloperów i spowodować naruszenia w całej firmie.

Na poniższym diagramie zwróć uwagę, jak środowisko deweloperskie łączy się ze środowiskiem narzędzi DevOps w celu wpływu na gałęzie usługi Git. Rozszerza środowisko za pośrednictwem połączenia z pakietami open source innych firm i rozszerzeniami aplikacji. Rozszerzenia przedstawiają wektory ataków w lukach w zabezpieczeniach aplikacji zależności i rozszerzeń.

Diagram przedstawia środowiska deweloperskie i zagrożenia bezpieczeństwa zgodnie z opisem w poprzedniej książce eBook i podsumowane w powiązanych artykułach połączonych w niniejszym dokumencie.

Zapewnienie członkom zespołu DevOps elastyczności i kontroli przy jednoczesnym zapobieganiu złośliwym atakom jest podstawowym wyzwaniem dla biur zabezpieczeń. Metodyka DevOps może kontrolować środowisko deweloperskie za pomocą środowiska w chmurze (zobacz Zaufane uruchamianie maszyn wirtualnych platformy Azure i GitHub Enterprise Cloud Docs) i zabezpiecza środowisko deweloperskie za pomocą kontenerów (zobacz dokumentację usługi GitHub Codespaces).

Ponadto deweloperzy mogą zaimplementować te miary zero trust, aby pomóc w zabezpieczeniu środowiska deweloperskiego:

  • Skonfiguruj najmniejsze uprawnienia.
  • Ogranicz, kto może zmienić i zatwierdzić kod z zabezpieczeniami gałęzi.
  • Wdrażanie tylko zaufanych narzędzi, rozszerzeń i integracji.

Najlepsze rozwiązania dotyczące najniższych uprawnień

Deweloperzy często uważają, że mogą przechwytywać złośliwe oprogramowanie, wyłudzać informacje i naruszać je w swoich środowiskach. Duże powierzchnie zagrożeń środowiska deweloperskiego sprawiają, że deweloperzy nie są realne, aby utrzymać wszechobecną wiedzę systemu. Gdy organizacja wykryje naruszenie po ataku, naruszy środowisko deweloperskie, które ma dostęp administratora do wszystkich systemów, cenny czas korygowania mógł już upłynął.

Aby skorygować potencjalne możliwości dostępu, które powodują, że hakerzy będą kierować się do roli dewelopera oprogramowania, należy wziąć pod uwagę następujące najlepsze rozwiązania w zakresie zabezpieczeń najniższych uprawnień w przypadku aplikacji.

  • Implementowanie najniższych uprawnień i dostępu just in time dla metodyki DevOps. Upewnij się, że członkowie zespołu utrzymują tylko minimalny dostęp do środowisk przez najkrótszy wymagany czas. Umieść zasady w celu objęcia praw dostępu administratora na głównych urządzeniach, narzędziach DevOps, potokach wydania, repozytoriach kodu, środowiskach, magazynach wpisów tajnych i bazach danych. W przypadku zespołów DevOps podstawowe wymaganie jest połączeniem z magazynem tożsamości organizacji. Użyj federacji tożsamości do integracji ze środowiskami SaaS, aby uniknąć duplikowania tożsamości na platformach innych firm i zmniejszyć ryzyko narażenia.
  • Nie używaj osobistych tokenów dostępu do kodu źródłowego. Bezpieczne rozwiązania dla zespołów DevOps obejmują dostęp do narzędzi DevOps opartych na modelu SaaS, repozytoriów kodu (za pośrednictwem protokołu SSH, HTTPS lub osobistego tokenu dostępu). W przypadku dostępu do środowiska opartego na modelu SaaS mają jasne instrukcje dotyczące sposobu, w jaki zasady dostępu określają, kto może pobierać (klonować) repozytoria kodu systemów oraz z których urządzeń (lokalnych, chmurowych i kontenerów). Na przykład usługa OneDrive może blokować lub ograniczać dostęp niezarządzanych urządzeń.
  • Ustandaryzuj i zsynchronizuj konta użytkowników zarządzanych przez usługę GitHub Enterprise (EMU) z tożsamościami firmowymi. Za pomocą użytkowników zarządzanych w przedsiębiorstwie możesz kontrolować konta użytkowników członków przedsiębiorstwa za pośrednictwem dostawcy tożsamości (IdP). W magazynie tożsamości organizacji jawnie zdefiniuj nazwy użytkowników, wiadomości e-mail i nazwy wyświetlane w usłudze GitHub. Użytkownicy mogą łatwo identyfikować współpracowników nawet wtedy, gdy nigdy nie spotkali się twarzą w twarz.
  • Na trzy sposoby deweloper może nawiązać połączenie ze środowiskiem SaaS (HTTPS z tożsamością, osobistym tokenem dostępu, nawiązywaniem połączenia z kluczem SSH), nawiązywaniem połączeń z magazynem tożsamości organizacji. Dzięki usłudze GitHub (z wyjątkiem kont EMU usługi GitHub) Twoja tożsamość jest i zawsze będzie twoją tożsamością publiczną. Kontrolowany dostęp za pośrednictwem logowania jednokrotnego wymaga połączenia z magazynem tożsamości organizacji.
  • Użyj urzędu certyfikacji SSH, aby zapewnić podpisane certyfikaty SSH dla członków w celu bezpiecznego uzyskiwania dostępu do zasobów za pomocą usługi Git. Certyfikat SSH to mechanizm podpisywania innego klucza SSH przez jeden klucz SSH. Usługa GitHub Enterprise Cloud obsługuje certyfikaty SSH, aby zapewnić organizacjom większą kontrolę nad sposobem uzyskiwania dostępu do repozytoriów przez członków. Administracja mogą przekazać swój klucz publiczny urzędu certyfikacji SSH i wystawiać certyfikaty dla członków do użycia na potrzeby uwierzytelniania git. Certyfikaty mogą uzyskiwać dostęp tylko do repozytoriów należących do organizacji. Administracja mogą wymagać od członków używania certyfikatów podczas uzyskiwania dostępu do swoich repozytoriów.
  • Użyj menedżera poświadczeń usługi Git, aby wzmocnić dostęp do kodu. Narzędzia takie jak Visual Studio (VS) obsługują wbudowaną obsługę tożsamości. Program VS Code odroczyć menedżera poświadczeń usługi Git.

Najlepsze rozwiązania dotyczące zabezpieczeń gałęzi

Gdy hakerzy uzyskują dostęp do repozytorium kodu, mogą badać zabezpieczenia systemu i modyfikować kod bez zauważenia przez zespoły. Aby zapobiec nieautoryzowanemu dostępowi do repozytorium kodu, zaimplementuj strategię rozgałęziania w celu ustanowienia kontroli nad zmianami kodu (zobacz przykład przedstawiony na poniższym diagramie).

Diagram przedstawia przykładową strategię rozgałęziania, która chroni repozytorium główne.

Aby skorygować potencjalne możliwości dostępu do repozytorium, rozważ następujące najlepsze rozwiązania w zakresie zabezpieczeń gałęzi.

  • Chroń gałęzie za pomocą przeglądów kodu, aby zapewnić zespołom DevOps kontrolę nad zmianami kodu i postępami inspekcji. Strategia rozgałęziania na powyższym diagramie przedstawia kontrolowany przepływ zmian, który zapewnia przejrzysty łańcuch poleceń i strategii na potrzeby rozwiązywania zmian kodu. Spośród różnych podejść strategii rozgałęziania jedną wspólnością jest to, że chronione gałęzie pełnią rolę źródła dla nowych wydań w środowisku produkcyjnym.
  • Administratorzy repozytoriów Git kontrolują autoryzacje zatwierdzeń. Mechanizm kontroli strategii rozgałęziania znajduje się w przepływie pracy zatwierdzania. Chronione gałęzie wymagają weryfikacji, przeglądów i zatwierdzeń przed zaakceptowaniem zmian. Jedną z opcji jest utworzenie reguły ochrony gałęzi w celu wymuszania przepływów pracy. Na przykład wymagaj przeglądu zatwierdzenia lub sprawdzenia stanu dla wszystkich żądań ściągnięcia scalonych z gałęzią chronioną. Zasady gałęzi pomagają zespołom chronić ważne gałęzie programowania. Zasady wymuszają jakość kodu zespołu i standardy zarządzania zmianami.

Najlepsze rozwiązania dotyczące zaufania narzędzi, rozszerzeń i integracji

Rozszerzalność w zintegrowanych środowiskach deweloperskich (IDE) jest tak wydajna, że zasadniczo jest to funkcja upoważniona. Polegasz na możliwości stosowania i curate rozszerzeń na platformie handlowej określonego środowiska IDE w celu zaprojektowania optymalnego środowiska pracy.

Aby skorygować bezpieczne środowiska IDE, rozważ następujące narzędzie, rozszerzenie i najlepsze rozwiązania dotyczące integracji.

  • Upewnij się, że integrujesz tylko narzędzia z zaufanych platform handlowych i wydawców. Na przykład platforma handlowa programu VS Code ma tysiące rozszerzeń, aby ułatwić sobie życie. Jednak gdy zespoły wdrażają nowe narzędzia lub rozszerzenia, najważniejszym aspektem może być zweryfikowanie wiarygodności wydawcy.
  • Konfigurowanie bezpiecznych rozwiązań w celu kontrolowania użycia rozszerzenia w celu ograniczenia obszaru ataków w środowiskach deweloperskich. Większość rozszerzeń IDE wymaga zatwierdzenia niektórych uprawnień do działania, często jako plik z uprawnieniami do odczytu w systemie do analizowania kodu. Rozszerzenia wymagają połączeń ze środowiskami chmury do działania (typowe w narzędziach metryk). Zatwierdzanie dodatkowych funkcji w środowisku IDE otwiera organizacje na więcej zagrożeń.
  • Na maszynach deweloperskich śledź liczbę i dojrzałość używanych rozszerzeń, aby zrozumieć potencjalną powierzchnię ataków. Uwzględnianie tylko rozszerzeń witryny Marketplace programu VS Code od zweryfikowanych wydawców. Podczas instalowania rozszerzeń aplikacji innych firm za pomocą programu VS Code regularnie sprawdzaj rozszerzenia, które są uruchamiane przy użyciu wiersza polecenia, kodu --list-extensions --show-versions. Dobrze zrozumieć rozszerzalne składniki, które są uruchomione w środowisku dewelopera.

Następne kroki