Osadzanie zabezpieczeń zero trust w przepływie pracy dewelopera

Jako deweloper musisz czuć się pewnie i bezpiecznie, aby przejść z prędkością. Konieczność zabezpieczeń rozpoczyna się zaraz po sklonowania kodu. Z tego artykułu dowiesz się, jak programować przy użyciu zasad zero trust, dzięki czemu można szybko i bezpiecznie wprowadzać innowacje. Strategia zabezpieczeń Zero Trust i podejście do projektowania i implementowania aplikacji obejmują następujące zasady:

  • Sprawdź jawnie. Zawsze uwierzytelniaj się i autoryzuj na podstawie wszystkich dostępnych punktów danych.
  • Użyj dostępu z najmniejszymi uprawnieniami. Ogranicz dostęp użytkowników za pomocą zasad just in time i Just-Enough-Access (JIT/JEA), zasad adaptacyjnych opartych na ryzyku i ochrony danych.
  • Przyjmij naruszenie. Zminimalizuj promień wybuchu i dostęp segmentu. Zweryfikuj kompleksowe szyfrowanie i korzystaj z analizy, aby uzyskać widoczność, zwiększyć wykrywanie zagrożeń i poprawić ochronę.

Osadzanie zabezpieczeń w przepływie pracy ułatwia:

  • Szybsze wskazanie luk w zabezpieczeniach.
  • Zapewnij bezpieczniejsze narzędzia deweloperskie.
  • Tworzenie połączeń w celu poprawy współpracy między zespołami ds. zabezpieczeń i programowania.

Wprowadzanie innowacji i zabezpieczanie przepływu pracy podczas tworzenia kodu

Ujednolicone rozwiązanie firmy Microsoft, przedstawione na poniższym diagramie, mosty między zespołami DevOps i SecOps, które ułatwiają przyspieszenie i zabezpieczanie programowania między kodem i chmurą.

Diagram przedstawia technologie, które składają się na ujednolicone rozwiązanie programistyczne z kodem do chmury.

Nasze rozwiązanie do ochrony metodyki DevOps opiera się na dwóch głównych składnikach: dostarcza deweloperom narzędzia umożliwiające wprowadzanie innowacji i zabezpieczanie przepływu pracy deweloperów podczas tworzenia kodu przez deweloperów. Obejrzyj sesję Przyspieszanie i zabezpieczanie kodu do programowania w chmurze z konferencji Microsoft Build 2022 , aby dowiedzieć się, jak te składniki mogą zabezpieczyć środowisko projektowe.

Zaimplementuj następujące najlepsze rozwiązania, które współpracują ze sobą na platformie Azure i w usłudze GitHub, aby zabezpieczyć rozwiązanie programistyczne.

  • Ponieważ zabezpieczenia zaczynają się, gdy deweloperzy klonować kod, włącz metodyka DevSecOps z platformą Azure i usługą GitHub , aby połączyć zespoły DevOps i SecOps oraz zabezpieczyć środowiska deweloperskie.
  • Udostępniaj elastyczne i zaawansowane narzędzia deweloperskie dla dowolnego dewelopera, języka i stosu za pomocą programów Visual Studio i Visual Studio Code.
  • Uprość dołączanie nowych deweloperów i współpracę z całym narzędziem cyklu życia programowania w chmurze przy użyciu usług GitHub Codespaces i Microsoft Dev Box.
  • Dołącz wbudowaną ochronę własności intelektualnej dla kodu, który nie jest już rozpraszany do wielu lokalizacji. Pomóż zespołom współpracować, opracowywać, automatyzować i wdrażać kod wszędzie tam, gdzie chcą, za pomocą funkcji GitHub Actions i usługi Azure Pipelines.
  • Uzyskaj wskazówki dotyczące zabezpieczeń i ciągłe opinie dotyczące zabezpieczeń w przepływie pracy dewelopera, korzystając z funkcji skanowania kodu, skanowania wpisów tajnych i przeglądu zależności przy użyciu usługi GitHub Advanced Security.
  • Wprowadzenie zabezpieczeń zerowych zaufania w całej organizacji przy użyciu usług zarządzania tożsamościami w usłudze Microsoft Entra ID.

Dopasuj zabezpieczenia Zero Trust do cyklu projektowania

Od wstępnego zatwierdzania za pośrednictwem wdrażania, a następnie obsługi i monitorowania, potrzebne są rozwiązania zabezpieczeń stosowane we wszystkich etapach cyklu projektowania.

Etap wstępny

  • Modelowanie zagrożeń
  • Wtyczka zabezpieczeń środowiska IDE
  • Wstępne zatwierdzanie punktów zaczepienia
  • Bezpieczne standardy kodowania
  • Przegląd równorzędny

Osiemdziesiąt pięć procent wad kodu pojawia się w fazie wstępnego tworzenia, głównie z powodu błędu ludzkiego. Skoncentruj się na zabezpieczeniach przed zatwierdzeniem kodu, pisząc kod w programie Visual Studio Code, programie Visual Studio lub usłudze GitHub Codespaces, aby zidentyfikować luki w zabezpieczeniach i bezpieczny kod. Użyj przeglądów równorzędnych, aby zachęcić do bezpiecznych praktyk kodowania.

Etap zatwierdzania (CI)

  • Analiza kodu statycznego
  • Testy jednostkowe zabezpieczeń
  • Zarządzanie zależnościami
  • Skanowanie poświadczeń

Na etapie zatwierdzania użyj rozbudowanych metod zabezpieczeń, aby przejrzeć kod (w tym analizę kodu statycznego) i przeskanować kod podczas sprawdzania go w kontroli źródła. Użyj skanowania poświadczeń (nazywanego również skanowaniem wpisów tajnych lub skanowaniem tokenów), aby uwidocznić poświadczenia, które można przypadkowo wprowadzić do bazy kodu. Przechwyć niezabezpieczone zależności przed wprowadzeniem ich do środowiska za pomocą przeglądu zależności.

Etap wdrażania (CD)

  • Skanowanie infrastruktury jako kodu (IaC)
  • Dynamiczne skanowanie zabezpieczeń
  • Testy konfiguracji chmury
  • Testy akceptacyjnych zabezpieczeń

Podczas etapu wdrażania przyjrzyj się ogólnej kondycji bazy kodu i przeprowadź skanowanie zabezpieczeń wysokiego poziomu w celu zidentyfikowania zagrożeń. Przeprowadzanie kontroli konfiguracji chmury, kontroli kodu infrastruktury i testów akceptacyjnych zabezpieczeń w celu zapewnienia zgodności z celami zabezpieczeń organizacji.

Etap obsługi i monitorowania

  • Monitorowanie ciągłe
  • Analiza zagrożeń
  • Bez winy postmortems

W fazie działania i monitorowania użyj ciągłego monitorowania i analizy zagrożeń, aby ograniczyć ogólne luki w zabezpieczeniach zależności, które mogą być dziedziczone w czasie. Wykonaj zadania pośmiertne, aby wyciągnąć wnioski i kontynuować iterowanie w ramach cyklu DevOps.

Implementowanie zależności, kodu i skanowania wpisów tajnych

Aby ułatwić deweloperom zabezpieczanie kodu, użyj natywnych i zautomatyzowanych funkcji, aby zapewnić ciągłą opinię na temat ciągłych funkcji zabezpieczeń w całym cyklu projektowania. Zapewnianie ogólnych zabezpieczeń deweloperom i społecznościom dzięki skanowaniu zależności usługi GitHub Advanced Security, skanowaniu kodu i skanowaniu wpisów tajnych.

Skanowanie zależności

  • Zintegrowany przegląd zależności
  • Alerty i aktualizacje zabezpieczeń

Uzyskiwanie poziomów ryzyka zależności i automatycznych poprawek podatnych na zagrożenia zależności w bazie kodu przy użyciu ciągłego skanowania zależności. W ramach ciągłego procesu deweloperzy są w dobrym kierunku w przyjazny i nieautoryzacyjny sposób.

Skanowanie kodu

  • Rozszerzalna struktura do skanowania kodu
  • Zintegrowane w przepływie pracy dewelopera
  • Wspierane przez wiodący w branży aparat CodeQL

Zaimplementuj skanowanie kodu podczas generowania kodu bez innych kroków do uruchomienia w oddzielnych lokalizacjach. Łatwość poprawek na wczesnym etapie cyklu projektowania, wyświetlając wyniki skanowania w znanym środowisku użytkownika usługi GitHub.

Skanowanie wpisów tajnych

  • Skanowanie pod kątem wycieku wpisów tajnych w repozytoriach publicznych i prywatnych
  • Współpraca z 40+ dostawcami
  • Ochrona wypychana
    • Przechodzenie z korygowania do zapobiegania
    • Sprawdzanie wpisów tajnych o wysokiej pewności
    • Włącz ochronę za pomocą jednego wyboru

Przeskanuj kod pod kątem zakodowanych na stałe poświadczeń i tokenów przy użyciu skanowania wpisów tajnych. Funkcja wypychania skanuje wpisy tajne i tokeny przed wypchnięciem do bazy kodu. Sprawdź wpisy tajne o wysokiej pewności, ponieważ deweloperzy wypychają kod, blokując wypychanie, gdy usługa GitHub identyfikuje wpis tajny.

Zarządzanie tożsamościami obciążeń i zabezpieczanie ich

  • Zarządzanie cyklem życia
  • Zarządzanie dostępem
  • Bezpieczny dostęp adaptacyjny

Uzyskaj wgląd w działanie tożsamości obciążeń i włącz okresowe czyszczenie. Określ, kto jest właścicielem tożsamości obciążeń i jak te informacje są aktualne w całej organizacji. Śledź, kiedy ostatnio użyto tożsamości obciążeń, kiedy ostatnio wystawiono tokeny i kiedy tokeny wygasają.

Aby ograniczyć ryzyko wycieku wpisów tajnych i poświadczeń, okresowo przeprowadzaj przeglądy dostępu. Wymagaj od użytkowników przeglądania tożsamości obciążeń i usuwania niepotrzebnych uprawnień dostępu. Użytkownicy zgłaszają nadmiernie uprzywilejowane i nieużywane uprawnienia dostępu. Omówienie sposobu ochrony tożsamości obciążeń przed naruszeniem zabezpieczeń. Włącz dostęp warunkowy, aby upewnić się, że dostęp pochodzi z oczekiwanych zasobów.

Zabezpieczanie tożsamości za pomocą usługi GitHub OIDC i federacji Tożsamość obciążeń Microsoft Entra

Aby dodatkowo zabezpieczyć organizację, użyj usługi GitHub OpenID Połączenie (OIDC) z federacją tożsamości obciążeń firmy Microsoft Entra i zminimalizuj konieczność przechowywania wpisów tajnych i uzyskiwania do nich dostępu. Bezpiecznie zarządzaj wpisami tajnymi jednostki serwera platformy Azure i innymi długotrwałymi zasobami poświadczeń w chmurze, aby zminimalizować przestoje usługi z powodu wygasłych poświadczeń. Integracja z platformami deweloperów, takimi jak GitHub Actions, w celu bezpiecznego tworzenia aplikacji.

Nasz zalecany przepływ pracy federacji tożsamości obciążeń przedstawiony na poniższym diagramie składa się z sześciu kroków.

Diagram przedstawia kroki przepływu pracy federacji tożsamości obciążenia.

  1. Skonfiguruj zaufanie w identyfikatorze Entra firmy Microsoft i zażądaj tokenu.
  2. Skonfiguruj przepływ pracy usługi GitHub, aby zezwolić na uzyskiwanie tokenu przez akcje.
  3. Przepływ pracy usługi GitHub wysyła żądanie do identyfikatora platformy Azure.
  4. Identyfikator entra firmy Microsoft weryfikuje zaufanie w aplikacji i pobiera klucze w celu zweryfikowania tokenu.
  5. Identyfikator entra firmy Microsoft uzyskuje dostęp i wystawia token.
  6. Akcja wdrażania używa tokenu dostępu firmy Microsoft Entra do wdrożenia w zasobach na platformie Azure.

Obejrzyj, jak april Edwards, starszy ambasador chmury i lider praktyki DevOps, pokazuj przepływ pracy federacji tożsamości obciążeń. Pokaz rozpoczyna się od znaku 19:14 w sesji programu Microsoft Build 2022, Przyspieszanie i zabezpieczanie kodu do programowania w chmurze.

Następne kroki

  • Zarejestruj się w interfejsie wiersza polecenia dla deweloperów platformy Azure, czyli narzędziu typu open source, które przyspiesza czas potrzebny na rozpoczęcie pracy na platformie Azure.
  • Konfigurowanie platformy Azure w celu zaufania identyfikatorowi OIDC usługi GitHub jako tożsamości federacyjnej. Interfejs OpenID Połączenie (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.
  • 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.
  • 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.
  • W środowiskach Secure DevOps for Zero Trust opisano najlepsze rozwiązania dotyczące zabezpieczania środowisk DevOps w celu uniemożliwienia hakerom naruszania pól deweloperskich, infekowania potoków wydania za pomocą złośliwych skryptów i uzyskiwania dostępu do danych produkcyjnych za pośrednictwem środowisk testowych.
  • Dostosowywanie tokenów opisuje informacje, które można otrzymywać w tokenach firmy Microsoft Entra. Wyjaśniono w nim, jak dostosować tokeny w celu zwiększenia elastyczności i kontroli przy jednoczesnym zwiększeniu poziomu zabezpieczeń zerowego zaufania aplikacji z najmniejszymi uprawnieniami.
  • Konfigurowanie oświadczeń grup i ról aplikacji w tokenach pokazuje, jak skonfigurować aplikacje przy użyciu definicji ról aplikacji i przypisać grupy zabezpieczeń do ról aplikacji. Te metody pomagają zwiększyć elastyczność i kontrolę przy jednoczesnym zwiększeniu zabezpieczeń zerowego zaufania aplikacji z najmniejszymi uprawnieniami.