Usługa DevSecOps w usłudze Azure Kubernetes Service (AKS)

Azure Boards
Azure DevOps
Azure Monitor
Azure Pipelines
Azure Policy

Metodyka DevSecOps, nazywana również secure DevOps, opiera się na praktyce metodyki DevOps dzięki włączeniu zabezpieczeń na różnych etapach tradycyjnego cyklu życia metodyki DevOps. Niektóre korzyści wynikające z tworzenia zabezpieczeń w rozwiązaniach DevOps obejmują:

  • Zabezpieczanie aplikacji i systemów dzięki zapewnieniu wglądu w zagrożenia bezpieczeństwa i zapobieganiu dotarciu do wdrożonych środowisk
  • Zwiększanie świadomości bezpieczeństwa dzięki zespołom deweloperów i zespołów operacyjnych
  • Dołączanie zautomatyzowanych procesów zabezpieczeń do cyklu tworzenia oprogramowania
  • Zmniejszenie kosztów korygowania przez znalezienie problemów z zabezpieczeniami na wczesnym etapie programowania i projektowania

Gdy metodyka DevSecOps jest stosowana do usługi Azure Kubernetes Service (AKS), różne role organizacji mogą mieć różne zagadnienia dotyczące implementowania zabezpieczeń. Przykłady tych różnych ról organizacji to:

  • Deweloperzy tworzący bezpieczne aplikacje działające w usłudze AKS
  • Inżynierowie chmury tworzący bezpieczną infrastrukturę usługi AKS
  • Różne zespoły ds. operacji, które mogą zarządzać klastrami lub monitorować problemy z zabezpieczeniami

Ten artykuł jest podzielony na różne etapy cyklu życia metodyki DevOps z uwzględnieniem zagadnień i zaleceń dotyczących osadzania mechanizmów kontroli zabezpieczeń i najlepszych rozwiązań w zakresie zabezpieczeń. Ten przewodnik zawiera typowe procesy i narzędzia do uwzględnienia w potokach ciągłej integracji i ciągłego dostarczania (CI/CD), co pozwala na łatwe w użyciu wbudowane narzędzia tam, gdzie są dostępne.

Zgodnie z wymaganiami wstępnymi w tym artykule zalecamy zapoznanie się z tematem Kompilowanie i wdrażanie aplikacji w usłudze AKS przy użyciu metodyki DevOps i usługi GitOps.

Przepływ procesu

Diagram architektury przedstawia przepływ od dewelopera do użytkownika końcowego oraz miejsce, w którym można stosować metodykę DevSecOps w usłudze AKS.

Pobierz plik programu Visio z tą architekturą.

Uwaga

Chociaż ten artykuł odwołuje się do usług AKS i GitHub, te zalecenia dotyczą dowolnej platformy orkiestracji kontenerów lub ciągłej integracji/ciągłego wdrażania. Chociaż szczegóły implementacji mogą się różnić, większość pojęć i praktyk wymienionych na każdym etapie jest nadal istotna i ma zastosowanie.

  1. Identyfikator entra firmy Microsoft jest skonfigurowany jako dostawca tożsamości dla usługi GitHub. Skonfiguruj uwierzytelnianie wieloskładnikowe (MFA), aby zapewnić dodatkowe zabezpieczenia uwierzytelniania.
  2. Deweloperzy używają programu Visual Studio Code lub Visual Studio z rozszerzeniami zabezpieczeń, które umożliwiają proaktywne analizowanie kodu pod kątem luk w zabezpieczeniach.
  3. Deweloperzy zatwierdzają kod aplikacji do należącego do firmy i zarządzanego repozytorium GitHub Enterprise.
  4. Usługa GitHub Enterprise integruje automatyczne skanowanie zabezpieczeń i zależności za pośrednictwem usługi GitHub Advanced Security.
  5. Żądania ściągnięcia wyzwalają kompilacje ciągłej integracji i zautomatyzowane testowanie za pośrednictwem funkcji GitHub Actions.
  6. Przepływ pracy kompilacji ciągłej integracji za pośrednictwem funkcji GitHub Actions generuje obraz kontenera platformy Docker przechowywany w usłudze Azure Container Registry.
  7. Możesz wprowadzić ręczne zatwierdzenia dla wdrożeń w określonych środowiskach, takich jak produkcja, w ramach przepływu pracy ciągłego dostarczania (CD) w funkcji GitHub Actions.
  8. Funkcja GitHub Actions umożliwia ciągłe wdrażanie w usłudze AKS. Usługa GitHub Advanced Security umożliwia wykrywanie wpisów tajnych, poświadczeń i innych poufnych informacji w plikach źródłowych i konfiguracyjnych aplikacji.
  9. Usługa Microsoft Defender służy do skanowania usługi Azure Container Registry, klastra AKS i usługi Azure Key Vault pod kątem luk w zabezpieczeniach.
    1. Usługa Microsoft Defender for Containers skanuje obraz kontenera pod kątem znanych luk w zabezpieczeniach po przekazaniu go do usługi Container Registry.
    2. Usługi Defender for Containers można również używać do przeprowadzania skanowania środowiska usługi AKS i zapewnia ochronę przed zagrożeniami w czasie wykonywania dla klastrów usługi AKS.
    3. Usługa Microsoft Defender for Key Vault wykrywa szkodliwe i nietypowe podejrzane próby uzyskania dostępu do kont magazynu kluczy.
  10. Usługę Azure Policy można zastosować do usługi Container Registry i usługi Azure Kubernetes Service (AKS) w celu zapewnienia zgodności i wymuszania zasad. Typowe zasady zabezpieczeń dla usługi Container Registry i AKS są wbudowane w celu szybkiego włączania.
  11. Usługa Azure Key Vault służy do bezpiecznego wstrzykiwania wpisów tajnych i poświadczeń do aplikacji w czasie wykonywania, oddzielając poufne informacje od deweloperów.
  12. Aparat zasad sieciowych usługi AKS jest skonfigurowany do zabezpieczania ruchu między zasobnikami aplikacji przy użyciu zasad sieciowych platformy Kubernetes.
  13. Ciągłe monitorowanie klastra usługi AKS można skonfigurować przy użyciu usługi Azure Monitor i usługi Container Insights w celu pozyskiwania metryk wydajności i analizowania dzienników aplikacji i zabezpieczeń.
    1. Szczegółowe informacje o kontenerze pobierają metryki wydajności i dzienniki aplikacji i klastra.
    2. Dzienniki diagnostyczne i dzienniki aplikacji są pobierane do obszaru roboczego usługi Azure Log Analytics w celu uruchamiania zapytań dzienników.
  14. Usługa Microsoft Sentinel, która jest rozwiązaniem do zarządzania informacjami i zdarzeniami zabezpieczeń (SIEM), może służyć do pozyskiwania i dalszego analizowania dzienników klastra usługi AKS pod kątem wszelkich zagrożeń bezpieczeństwa opartych na zdefiniowanych wzorcach i regułach.
  15. Narzędzia typu open source, takie jak serwer proxy ataków Zed (ZAP) (ZAP), mogą służyć do testowania penetracyjnego dla aplikacji internetowych i usług.
  16. Usługa Defender for DevOps, usługa dostępna w Defender dla Chmury, umożliwia zespołom ds. zabezpieczeń zarządzanie zabezpieczeniami w środowiskach obejmujących wiele potoków, w tym GitHub i Azure DevOps.

Przegląd i obowiązki członków zespołu

Rozważ zarządzanie złożonością metodyki DevSecOps we wdrożeniach rozwiązań opartych na platformie Kubernetes jako rozdzielenie problemów. Który zespół w środowisku przedsiębiorstwa powinien być zaniepokojony każdym aspektem wdrożenia? Jakie narzędzia i procesy powinien stosować zespół, aby najlepiej osiągnąć swoje cele? W tej sekcji omówimy typowe role deweloperów, operatorów aplikacji (inżynierów niezawodności lokacji), operatorów klastrów i zespołów ds. zabezpieczeń.

Deweloperzy

Deweloperzy są odpowiedzialni za pisanie kodu aplikacji. Są one również odpowiedzialne za zatwierdzenie kodu do wyznaczonego repozytorium. Jedną z ważnych obowiązków deweloperów jest również tworzenie i uruchamianie skryptów na potrzeby testowania automatycznego w celu zapewnienia, że ich kod działa zgodnie z oczekiwaniami i bezproblemowo integruje się z resztą aplikacji. Definiują również i tworzą skrypty tworzenia obrazów kontenerów w ramach potoku automatyzacji.

Operatory aplikacji (inżynierowie niezawodności lokacji)

Tworzenie aplikacji w chmurze przy użyciu kontenerów i platformy Kubernetes może uprościć tworzenie, wdrażanie i skalowalność aplikacji. Jednak te podejścia programistyczne tworzą coraz bardziej rozproszone środowiska, które komplikują administrację. Inżynierowie ds. niezawodności lokacji tworzą rozwiązania do automatyzacji nadzoru nad dużymi systemami oprogramowania. Służą one jako most między zespołami deweloperów i operatorów klastrów oraz ułatwiają ustanawianie i monitorowanie celów poziomu usług i budżetów błędów. W ten sposób ułatwiają zarządzanie wdrożeniami aplikacji i często zapisują pliki manifestu Kubernetes (YAML).

Operatory klastra

Operatorzy klastrów są odpowiedzialni za konfigurowanie infrastruktury klastra i zarządzanie nią. Często używają najlepszych rozwiązań i struktur infrastruktury jako kodu (IaC), takich jak GitOps , aby aprowizować i obsługiwać swoje klastry. Używają różnych narzędzi do monitorowania, takich jak Azure Monitor Container Insights i Prometheus/Grafana, aby monitorować ogólną kondycję klastra. Są one odpowiedzialne za stosowanie poprawek, uaktualnianie klastra, uprawnienia i kontrolę dostępu opartą na rolach w klastrze. W zespołach DevSecOps zapewniają, że klastry spełniają wymagania dotyczące zabezpieczeń zespołu i współpracują z zespołem ds. zabezpieczeń w celu utworzenia tych standardów.

Zespół ds. zabezpieczeń

Zespół ds. zabezpieczeń jest odpowiedzialny za opracowywanie standardów zabezpieczeń i ich wymuszanie. Niektóre zespoły mogą być odpowiedzialne za tworzenie i wybieranie usługi Azure Policy wymuszanych w subskrypcjach i grupach zasobów zawierających klastry. Monitorują problemy z zabezpieczeniami i współpracują z innymi zespołami, aby zapewnić bezpieczeństwo w czołówce każdego kroku procesu DevSecOps.

Etapy cyklu życia metodyki DevSecOps

Mechanizmy kontroli zabezpieczeń są implementowane w każdej fazie cyklu projektowania oprogramowania (SDLC). Ta implementacja jest kluczowym elementem strategii DevSecOps i podejścia shift-left.

Diagram architektury przedstawia przepływ od dewelopera do użytkownika końcowego oraz miejsce, w którym można stosować metodykę DevSecOps w usłudze AKS.

Pobierz plik programu Visio z tą architekturą.

Faza planowania

Faza planu zwykle ma najmniejszą ilość automatyzacji, ale ma ważne implikacje dotyczące zabezpieczeń, które znacząco wpływają na późniejsze etapy cyklu życia metodyki DevOps. Ta faza obejmuje współpracę między zespołami ds. zabezpieczeń, programowania i operacji. Uwzględnienie osób biorących udział w zabezpieczeniach w tej fazie projektowania i planowania zapewnia, że wymagania dotyczące zabezpieczeń i problemy z zabezpieczeniami są odpowiednio uwzględniane lub ograniczane.

Najlepsze rozwiązanie — projektowanie bezpieczniejszej platformy aplikacji

Tworzenie bezpieczniejszej platformy hostowanej przez usługę AKS jest ważnym krokiem, który ułatwia zapewnienie, że zabezpieczenia są wbudowane w system w każdej warstwie, począwszy od samej platformy. Platforma może zawierać składniki wewnętrzne klastra (takie jak agenty zabezpieczeń i zasad środowiska uruchomieniowego) oraz składniki zewnętrzne dla usługi AKS (takie jak zapory sieciowe i rejestry kontenerów). Aby uzyskać więcej informacji, zobacz Akcelerator strefy docelowej usługi AKS, który obejmuje krytyczne obszary projektowe, takie jak zabezpieczenia, tożsamość i topologia sieci.

Najlepsze rozwiązanie — tworzenie modelowania zagrożeń w procesie

  • Modelowanie zagrożeń jest zwykle działaniem ręcznym, które obejmuje zespoły ds. zabezpieczeń i programowania. Służy do modelowania i znajdowania zagrożeń w systemie, dzięki czemu luki w zabezpieczeniach można rozwiązać przed rozpoczęciem opracowywania kodu lub wprowadzania zmian w systemie. Modelowanie zagrożeń może wystąpić w różnych momentach, wyzwalane przez zdarzenia, takie jak znaczna zmiana oprogramowania, zmiana architektury rozwiązania lub zdarzenia zabezpieczeń.
  • Zalecamy użycie modelu zagrożenia STRIDE. Ta metodologia rozpoczyna się od diagramu przepływu danych i używa mnemonic strIDE (fałszowanie, manipulowanie, ujawnianie informacji, odrzucanie, odmowa usługi i podniesienie uprawnień), aby umożliwić zespołom identyfikowanie, eliminowanie i weryfikowanie ryzyka. Zawiera również narzędzie do modelowania, które umożliwia notowanie i wizualizowanie składników systemowych, przepływów danych i granic zabezpieczeń. Tworzenie modelowania zagrożeń w procesach SDLC wprowadza nowe procesy i więcej pracy w celu utrzymania zaktualizowanych modeli zagrożeń. Pomaga to jednak zapewnić, że bezpieczeństwo jest na wczesnym etapie, co pomaga zmniejszyć potencjalny koszt radzenia sobie z problemami z zabezpieczeniami występującymi w późniejszych etapach SDLC.

Najlepsze rozwiązanie — stosowanie platformy Azure Well Architect Framework (WAF)

  • Zastosuj najlepsze rozwiązania dotyczące filaru zabezpieczeń zapory aplikacji internetowych, które zawierają wskazówki dotyczące zarządzania tożsamościami, zabezpieczeń aplikacji, ochrony infrastruktury, zabezpieczeń dat i metodyki DevOps, które mają zastosowanie do środowisk natywnych dla chmury.
  • Zastosuj najlepsze rozwiązania operacyjne zapory aplikacji internetowej, ponieważ ma zastosowanie do metodyki DevSecOps i monitorowania środowisk produkcyjnych.

Faza opracowywania

"Przesunięcie w lewo" to kluczowa dzierżawa podejścia DevSecOps. Ten proces rozpoczyna się, zanim kod zostanie nawet zatwierdzony w repozytorium i wdrożony za pośrednictwem potoku. Wdrożenie najlepszych rozwiązań dotyczących bezpiecznego kodowania oraz używanie narzędzi IDE i wtyczek do analizy kodu w fazie opracowywania może pomóc w rozwiązywaniu problemów z zabezpieczeniami we wcześniejszej części cyklu życia programowania, gdy są one łatwiejsze do rozwiązania.

Najlepsze rozwiązanie — wymuszanie bezpiecznych standardów kodowania

  • Korzystając z ustalonych najlepszych rozwiązań i list kontrolnych bezpiecznego kodowania, możesz chronić kod przed typowymi lukami w zabezpieczeniach, takimi jak iniekcja i niezabezpieczony projekt. Fundacja OWASP publikuje standardowe w branży zalecenia dotyczące bezpiecznego kodowania, które należy zastosować podczas pisania kodu. Te wytyczne są szczególnie ważne podczas tworzenia publicznych aplikacji internetowych lub usług.
  • Oprócz ogólnych najlepszych rozwiązań w zakresie zabezpieczeń należy również przyjrzeć się bezpiecznym praktykom kodowania dla określonych środowisk uruchomieniowych języka programowania, takich jak Java i .NET.
  • Możesz wymusić standardy rejestrowania, aby chronić poufne informacje przed wyciekiem do dzienników aplikacji. Najpopularniejsze struktury rejestrowania, takie jak log4j i log4net, udostępniają filtry i wtyczki do maskowania poufnych informacji, takich jak numery kont lub dane osobowe.

Najlepsze rozwiązanie — używanie narzędzi IDE i wtyczek do automatyzowania kontroli zabezpieczeń

Najbardziej popularne środowiska IDE, takie jak Visual Studio, Visual Studio Code, IntelliJ IDEA i Eclipse, obsługują rozszerzenia, których można użyć, aby uzyskać natychmiastowe opinie i zalecenia dotyczące potencjalnych problemów z zabezpieczeniami, które mogły zostać wprowadzone podczas pisania kodu aplikacji.

  • SonarLint to wtyczka IDE dostępna dla najpopularniejszych języków i środowisk deweloperskich. SonarLint udostępnia cenne opinie i automatycznie skanuje kod pod kątem typowych błędów programowania i potencjalnych problemów z zabezpieczeniami.
  • Inne bezpłatne i komercyjne wtyczki koncentrują się na elementach specyficznych dla zabezpieczeń, takich jak OWASP top 10 typowych luk w zabezpieczeniach. Na przykład wtyczka Synk skanuje również źródło aplikacji i zależności innych firm oraz ostrzega użytkownika, jeśli zostaną znalezione jakiekolwiek luki w zabezpieczeniach.
  • Wtyczka SAST (Static Analysis Results Interchange Format) dla programów Visual Studio i Visual Studio Code umożliwia łatwe wyświetlanie luk w zabezpieczeniach z popularnych narzędzi do testowania zabezpieczeń aplikacji statycznych (SAST) w sposób intuicyjny i łatwy do odczytania w porównaniu z interpretowaniem wyników z nieprzetworzonych plików wyjściowych JSON.

Najlepsze rozwiązanie — ustanawianie kontrolek w repozytoriach kodu źródłowego

  • Ustanów metodologię rozgałęziania, aby zapewnić spójne wykorzystanie rozgałęziania w całym przedsiębiorstwie. Metodologie, takie jak przepływ wydania i przepływ Usługi GitHub, mają ustrukturyzowane wytyczne dotyczące sposobu użycia gałęzi do obsługi zespołu i opracowywania równoległego. Te metodologie mogą pomóc zespołom w ustaleniu standardów i mechanizmów kontroli dla zatwierdzeń kodu i scalania ich z przepływem pracy ciągłej integracji/ciągłego wdrażania.
  • Niektóre gałęzie, takie jak główne, są długotrwałymi gałęziami, które zachowują integralność kodu źródłowego aplikacji. Te gałęzie powinny ustanowić zasady scalania, zanim zmiany zostaną scalone lub zatwierdzone w nich. Oto niektóre najlepsze rozwiązania:
    • Uniemożliwiaj innym deweloperom zatwierdzanie kodu bezpośrednio w gałęzi głównej.
    • Ustanów proces przeglądu równorzędnego i wymagaj minimalnej liczby zatwierdzeń przed scaleniem zmian z gałęzią główną. Te kontrolki można łatwo skonfigurować i wymusić za pomocą usługi GitHub. Usługa GitHub umożliwia również wyznaczenie grup autoryzowanych osób zatwierdzających w razie potrzeby dla środowisk z bramkami.
  • Użyj wstępnie zatwierdzonych punktów zaczepienia , aby sprawdzić informacje poufne w kodzie źródłowym aplikacji i zapobiec wystąpieniu zatwierdzenia w przypadku znalezienia problemu z zabezpieczeniami.
    • Użyj wbudowanych wstępnie zatwierdzonych haków dostępnych w usłudze GitHub, które można łatwo skonfigurować dla określonego projektu. Na przykład istnieją wstępnie utworzone punkty zaczepienia służące do skanowania pod kątem wpisów tajnych, kluczy prywatnych i poświadczeń oraz zapobiegania zatwierdzeniu w przypadku znalezienia któregokolwiek z tych problemów.
  • Ustanów kontrolę dostępu opartą na rolach w systemie kontroli wersji.
    • Tworzenie dobrze zdefiniowanych ról przy użyciu zasady najniższych uprawnień. Potok ciągłej integracji/ciągłego wdrażania to łańcuch dostaw dla wdrożeń produkcyjnych.
    • Zastosuj ustalone role użytkowników lub grup w organizacji. Role takie jak Administracja, Deweloper, Administrator zabezpieczeń i Operator muszą być tworzone, aby grupować osoby na podstawie ich konkretnej roli i funkcji dotyczącej przepływów pracy ciągłej integracji/ciągłego wdrażania.
  • Włącz inspekcję przepływów pracy, aby zapewnić przejrzystość i możliwość śledzenia konfiguracji i innych zmian w odniesieniu do potoków ciągłej integracji/ciągłego wdrażania.

Najlepsze rozwiązanie — zabezpieczanie obrazów kontenerów

  • Użyj lekkich obrazów z minimalnym zużyciem systemu operacyjnego, aby zmniejszyć ogólny obszar ataku na powierzchnię. Rozważ minimalne obrazy, takie jak Alpine, a nawet bez dystrybucji, które zawierają tylko aplikację i skojarzone z nią środowisko uruchomieniowe. Mariner, dystrybucja systemu Linux typu open source firmy Microsoft, to uproszczona, wzmocniona dystrybucja przeznaczona dla usługi AKS do hostowania konteneryzowanych obciążeń.
  • Używaj tylko zaufanych obrazów bazowych podczas kompilowania kontenerów. Te obrazy podstawowe powinny być pobierane z prywatnego rejestru, który jest często skanowany pod kątem luk w zabezpieczeniach.
  • Użyj narzędzi deweloperskich, aby lokalnie ocenić luki w zabezpieczeniach obrazów.
    • Trivy to przykład narzędzia typu open source, którego można użyć do analizowania luk w zabezpieczeniach w obrazach kontenerów.
  • Zapobiegaj dostępowi użytkownika głównego/kontekstowi dla obrazu. Domyślnie kontenery są uruchamiane jako główne.
    • W przypadku kontenerów wymagających zwiększonych zabezpieczeń rozważ użycie profilu AppArmor w klastrze Kubernetes, aby jeszcze bardziej ułatwić wymuszanie zabezpieczeń uruchomionych kontenerów.

Faza kompilacji

W fazie kompilacji deweloperzy współpracują z inżynierami ds. niezawodności lokacji i zespołami ds. zabezpieczeń w celu zintegrowania zautomatyzowanych skanów źródła aplikacji w potokach kompilacji ciągłej integracji. Potoki są skonfigurowane do włączania rozwiązań zabezpieczeń, takich jak SAST, SCA i skanowanie wpisów tajnych przy użyciu narzędzi i rozszerzeń platformy ciągłej integracji/ciągłego wdrażania.

Najlepsze rozwiązanie — przeprowadzanie analizy kodu statycznego (SAST) w celu znalezienia potencjalnych luk w zabezpieczeniach w kodzie źródłowym aplikacji

  • Korzystanie z funkcji skanowania zaawansowanego zabezpieczeń w usłudze GitHub na potrzeby skanowania kodu i języka CodeQL.
    • Skanowanie kodu to funkcja używana do analizowania kodu w repozytorium GitHub w celu znalezienia luk w zabezpieczeniach i błędów kodowania. Wszystkie problemy zidentyfikowane przez analizę są wyświetlane w usłudze GitHub Enterprise Cloud.
    • Jeśli skanowanie kodu wykryje potencjalną lukę w zabezpieczeniach lub błąd w kodzie, usługa GitHub wyświetli alert w repozytorium.
    • Reguły gałęzi można również skonfigurować pod kątem wymaganych kontroli stanu, na przykład w celu wymuszenia, że gałąź funkcji jest aktualna w gałęzi podstawowej przed scaleniem dowolnego nowego kodu. Dzięki temu gałąź zawsze była testowana przy użyciu najnowszego kodu.
  • Użyj narzędzi, takich jak kube-score , aby analizować obiekty wdrażania kubernetes.
    • kube-score to narzędzie, które wykonuje statyczną analizę kodu definicji obiektów Kubernetes.
    • Dane wyjściowe to lista zaleceń, które można ulepszyć, aby ułatwić zwiększenie bezpieczeństwa i odporności aplikacji.

Najlepsze rozwiązanie — przeprowadź skanowanie wpisów tajnych, aby zapobiec fałszywemu użyciu wpisów tajnych, które zostały przypadkowo zatwierdzone w repozytorium

  • Gdy skanowanie wpisów tajnych jest włączone dla repozytorium, usługa GitHub skanuje kod pod kątem wzorców pasujących do wpisów tajnych używanych przez wielu dostawców usług.
  • Usługa GitHub okresowo uruchamia również pełne skanowanie historii git istniejącej zawartości w repozytoriach i wysyła powiadomienia o alertach.
    • W przypadku usługi Azure DevOps Defender dla Chmury używa skanowania wpisów tajnych do wykrywania poświadczeń, wpisów tajnych, certyfikatów i innego poufnej zawartości w kodzie źródłowym i danych wyjściowych kompilacji.
    • Skanowanie wpisów tajnych można uruchomić w ramach rozszerzenia Microsoft Security DevOps for Azure DevOps.

Najlepsze rozwiązanie — używanie narzędzi analizy kompozycji oprogramowania (SCA) do śledzenia składników typu open source w bazie kodu i wykrywania wszelkich luk w zabezpieczeniach w zależnościach

  • Przegląd zależności umożliwia przechwycenie niezabezpieczonych zależności przed wprowadzeniem ich do środowiska oraz zawiera informacje na temat licencji, zależności i wieku zależności. Zapewnia łatwo zrozumiałą wizualizację zmian zależności z bogatą różnicą na karcie "Zmienione pliki" żądania ściągnięcia.
  • Dependabot przeprowadza skanowanie w celu wykrywania niezabezpieczonych zależności i wysyła alerty Dependabot po dodaniu nowego poradnika do bazy danych porad usługi GitHub lub gdy graf zależności dla repozytorium ulegnie zmianie.

Najlepsze rozwiązanie — włączanie skanowania zabezpieczeń szablonów infrastruktury jako kodu (IaC) w celu zminimalizowania błędów konfiguracji chmury docierających do środowisk produkcyjnych

  • Proaktywne monitorowanie konfiguracji zasobów w chmurze w całym cyklu projektowania.
  • Usługa Microsoft Defender for DevOps obsługuje repozytoria GitHub i Azure DevOps.

Najlepsze rozwiązanie — skanowanie obrazów obciążeń w rejestrach kontenerów w celu zidentyfikowania znanych luk w zabezpieczeniach

  • Usługa Defender for Containers skanuje kontenery w usłudze Container Registry i usłudze Amazon AWS Elastic Container Registry (ECR), aby powiadomić o znanych lukach w zabezpieczeniach obrazów.
  • Usługę Azure Policy można włączyć w celu przeprowadzenia oceny luk w zabezpieczeniach na wszystkich obrazach przechowywanych w usłudze Container Registry i podać szczegółowe informacje na temat każdego znalezienia.

Najlepsze rozwiązanie — automatyczne kompilowanie nowych obrazów w aktualizacji obrazu podstawowego

  • Zadania usługi Azure Container Registry dynamicznie odnajdują zależności obrazu podstawowego podczas tworzenia obrazu kontenera. W związku z tym może wykryć, kiedy obraz podstawowy obrazu aplikacji jest aktualizowany. Za pomocą jednego wstępnie skonfigurowanego zadania kompilacji zadania usługi Container Registry mogą automatycznie ponownie kompilować każdy obraz aplikacji, który odwołuje się do obrazu podstawowego.

Najlepsze rozwiązanie — używanie usługi Container Registry, usługi Azure Key Vault i notacji do cyfrowego podpisywania obrazów kontenerów i konfigurowania klastra usługi AKS w celu zezwalania na tylko zweryfikowane obrazy

  • Usługa Azure Key Vault przechowuje klucz podpisywania, który może być używany przez notację z wtyczką notacji Key Vault (azure-kv), aby podpisać i zweryfikować obrazy kontenerów i inne artefakty. Usługa Container Registry umożliwia dołączanie tych podpisów przy użyciu poleceń interfejsu wiersza polecenia platformy Azure.
  • Podpisane kontenery umożliwiają użytkownikom upewnienie się, że wdrożenia są kompilowane na podstawie zaufanej jednostki i sprawdź, czy artefakt nie został naruszony od czasu jego utworzenia. Podpisany artefakt zapewnia integralność i autentyczność, zanim użytkownik ściągnie artefakt do dowolnego środowiska, co pomaga uniknąć ataków.
    • Rozwiązanie Ratify umożliwia klastrom Kubernetes weryfikowanie metadanych zabezpieczeń artefaktów przed wdrożeniem i przyznanie do wdrożenia tylko tych, które są zgodne z utworzonymi zasadami przyjęcia.

Faza wdrażania

W fazie wdrażania deweloperzy, operatorzy aplikacji i zespoły operatorów klastrów współpracują ze sobą nad ustanowieniem odpowiednich mechanizmów kontroli zabezpieczeń dla potoków ciągłego wdrażania (CD) w celu wdrożenia kodu w środowisku produkcyjnym w sposób bardziej bezpieczny i zautomatyzowany.

Najlepsze rozwiązanie — kontrolowanie dostępu i przepływu pracy potoku wdrażania

  • Ważne gałęzie można chronić, ustawiając reguły ochrony gałęzi. Te reguły określają, czy współpracownicy mogą usuwać lub wymuszać wypychanie do gałęzi. Ustawiają również wymagania dotyczące wszystkich wypchnięć do gałęzi, takich jak przekazywanie testów stanu lub liniowa historia zatwierdzeń.
  • Za pomocą środowisk do wdrożenia można skonfigurować środowiska z regułami ochrony i wpisami tajnymi.
  • Możesz skorzystać z funkcji Zatwierdzenia i Gates, aby kontrolować przepływ pracy potoku wdrażania. Na przykład można wymagać ręcznych zatwierdzeń od zespołu ds. zabezpieczeń lub operacji przed wdrożeniem w środowisku produkcyjnym.

Najlepsze rozwiązanie — bezpieczne poświadczenia wdrożenia

  • Funkcja OpenID Połączenie (OIDC) umożliwia przepływom pracy akcji usługi GitHub 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.
  • Za pomocą środowisk do wdrożenia można skonfigurować środowiska z regułami ochrony i wpisami tajnymi.
    • Podejście oparte na ściąganiu do ciągłej integracji/ciągłego wdrażania za pomocą metodyki GitOps umożliwia przeniesienie poświadczeń zabezpieczeń do klastra Kubernetes, co zmniejsza bezpieczeństwo i ryzyko, usuwając poświadczenia z przechowywania w zewnętrznym narzędziu ciągłej integracji. Możesz również zmniejszyć dozwolone połączenia przychodzące i ograniczyć dostęp na poziomie administratora do klastrów Kubernetes.

Najlepsze rozwiązanie — uruchamianie dynamicznych testów zabezpieczeń aplikacji (DAST) w celu znalezienia luk w zabezpieczeniach uruchomionej aplikacji

  • Użyj funkcji GitHub Actions w przepływach pracy wdrażania, aby uruchamiać testy dynamicznego testowania zabezpieczeń aplikacji (DAST).
  • Użyj narzędzi typu open source, takich jak ZAP , aby przeprowadzić testy penetracyjne dla typowych luk w zabezpieczeniach aplikacji internetowych.

Najlepsze rozwiązanie — wdrażanie obrazów kontenerów tylko z zaufanych rejestrów

  • Użyj usługi Defender for Containers , aby włączyć dodatek usługi Azure Policy dla platformy Kubernetes.
  • Włącz usługę Azure Policy, aby obrazy kontenerów mogły być wdrażane tylko z zaufanych rejestrów.

Faza działania

W tej fazie zadania monitorowania operacji i monitorowania zabezpieczeń są wykonywane w celu proaktywnego monitorowania, analizowania i zgłaszania alertów dotyczących potencjalnych zdarzeń zabezpieczeń. Narzędzia do obserwacji środowiska produkcyjnego, takie jak Azure Monitor i Microsoft Sentinel, są używane do monitorowania i zapewniania zgodności ze standardami zabezpieczeń przedsiębiorstwa.

Najlepsze rozwiązanie — korzystanie z usługi Microsoft Defender dla chmury w celu umożliwienia zautomatyzowanego skanowania i monitorowania konfiguracji produkcyjnych

  • Uruchom ciągłe skanowanie, aby wykryć dryf w stanie luk w zabezpieczeniach aplikacji i zaimplementuj proces poprawiania i zastępowania narażonych obrazów.
  • Implementowanie zautomatyzowanego monitorowania konfiguracji dla systemów operacyjnych.
    • Użyj zaleceń dotyczących kontenerów Microsoft Defender dla Chmury (w sekcji Obliczenia i aplikacje), aby wykonać skanowanie punktu odniesienia dla klastrów usługi AKS. Otrzymuj powiadomienia na pulpicie nawigacyjnym Microsoft Defender dla Chmury po znalezieniu problemów z konfiguracją lub lukami w zabezpieczeniach.
    • Użyj Microsoft Defender dla Chmury i postępuj zgodnie z zaleceniami dotyczącymi ochrony sieci, aby zabezpieczyć zasoby sieciowe używane przez klastry usługi AKS.
  • Przeprowadź ocenę luk w zabezpieczeniach dla obrazów przechowywanych w usłudze Container Registry.
    • Zaimplementuj ciągłe skanowanie pod kątem uruchamiania obrazów w usłudze Container Registry, włączając usługę Defender for Containers.

Najlepsze rozwiązanie — aktualizowanie klastrów Kubernetes

  • Wersje platformy Kubernetes są często wdrażane. Ważne jest, aby mieć strategię zarządzania cyklem życia, aby upewnić się, że nie jesteś w tyle i nie masz pomocy technicznej. Usługa AKS to zarządzana oferta, która zapewnia narzędzia i elastyczność zarządzania tym procesem uaktualniania. Możesz użyć funkcji planowanej konserwacji platformy AKS, aby mieć większą kontrolę nad oknami obsługi i uaktualnieniami.
  • Węzły robocze usługi AKS powinny być uaktualniane częściej. Udostępniamy cotygodniowe aktualizacje systemu operacyjnego i środowiska uruchomieniowego, które można stosować automatycznie za pośrednictwem trybu nienadzorowanego lub za pośrednictwem interfejsu wiersza polecenia platformy Azure w celu uzyskania większej kontroli i kompleksowych aktualizacji.

Najlepsze rozwiązanie — zabezpieczanie klastrów usługi AKS i zarządzanie nim za pomocą usługi Azure Policy

  • Po zainstalowaniu dodatku usługi Azure Policy dla usługi AKS można zastosować do klastra poszczególne definicje zasad lub grupy definicji zasad nazywane inicjatywami (nazywanymi również zestawami zasad).
  • Użyj wbudowanych zasad platformy Azure dla typowych scenariuszy, takich jak zapobieganie uruchamianiu uprzywilejowanych kontenerów lub zatwierdzanie tylko dozwolonych zewnętrznych adresów IP. Można również utworzyć niestandardowe zasady dla określonych przypadków użycia.
  • Zastosuj definicje zasad do klastra i sprawdź, czy te przypisania są wymuszane.
  • Użyj programu Gatekeeper, aby skonfigurować kontroler dostępu, który zezwala na wdrożenia lub odmawia ich stosowania na podstawie określonych reguł. Usługa Azure Policy rozszerza usługę Gatekeeper.
  • Zabezpieczanie ruchu między zasobnikami obciążeń przy użyciu zasad sieciowych w usłudze AKS.
    • Zainstaluj aparat zasad sieciowych i utwórz zasady sieci kubernetes, aby kontrolować przepływ ruchu między zasobnikami w usłudze AKS. Zasady sieci mogą być używane w przypadku węzłów i zasobników opartych na systemie Linux lub Windows w usłudze AKS.

Najlepsze rozwiązanie — używanie usługi Azure Monitor do ciągłego monitorowania i zgłaszania alertów

  • Usługa Azure Monitor służy do zbierania dzienników i metryk z usługi AKS. Uzyskasz szczegółowe informacje na temat dostępności i wydajności aplikacji i infrastruktury. Zapewnia również dostęp do sygnałów do monitorowania kondycji rozwiązania i wczesnego wykrycia nietypowych działań.
    • Ciągłe monitorowanie za pomocą usługi Azure Monitor rozszerza potoki wydawania na wersje bramy lub wycofywania na podstawie danych monitorowania. Usługa Azure Monitor pozyskuje również dzienniki zabezpieczeń i może otrzymywać alerty dotyczące podejrzanych działań.
    • Dołącz wystąpienia usługi AKS do usługi Azure Monitor i skonfiguruj ustawienia diagnostyczne dla klastra.

Najlepsze rozwiązanie — używanie Microsoft Defender dla Chmury do aktywnego monitorowania zagrożeń

  • Microsoft Defender dla Chmury zapewnia aktywne monitorowanie zagrożeń w usłudze AKS na poziomie węzła (zagrożenia maszyn wirtualnych) i wewnętrznych.
  • Usługa Defender for DevOps powinna służyć do kompleksowej widoczności i zapewnia zespołom ds. zabezpieczeń i operatorów scentralizowany pulpit nawigacyjny dla wszystkich potoków ciągłej integracji/ciągłego wdrażania. Ta funkcja jest szczególnie przydatna, jeśli używasz platform wielo potokowych, takich jak Azure DevOps i GitHub, lub uruchamiasz potoki w chmurach publicznych.
  • Usługa Defender for Key Vault może służyć do wykrywania nietypowych, podejrzanych prób uzyskania dostępu do kont magazynu kluczy i może powiadamiać administratorów na podstawie konfiguracji.
  • Usługa Defender for Containers może otrzymywać alerty dotyczące luk w zabezpieczeniach znalezionych w obrazach kontenerów przechowywanych w usłudze Container Registry.

Najlepsze rozwiązanie — włączanie scentralizowanego monitorowania dzienników i używanie produktów SIEM do monitorowania zagrożeń bezpieczeństwa w czasie rzeczywistym

  • Połączenie dzienniki diagnostyczne usługi AKS do usługi Microsoft Sentinel w celu scentralizowanego monitorowania zabezpieczeń na podstawie wzorców i reguł. Usługa Sentinel umożliwia bezproblemowy dostęp za pośrednictwem łączników danych.

Najlepsze rozwiązanie — włączanie rejestrowania inspekcji w celu monitorowania aktywności w klastrach produkcyjnych

  • Użyj dzienników aktywności, aby monitorować akcje w zasobach usługi AKS, aby wyświetlić wszystkie działania i ich stan. Określ, jakie operacje zostały wykonane na zasobach i przez kogo.
  • Włącz rejestrowanie zapytań DNS, stosując udokumentowaną konfigurację w niestandardowej mapie konfiguracji CoreDNS.
  • Monitoruj próby uzyskania dostępu do dezaktywowanych poświadczeń.
    • Integrowanie uwierzytelniania użytkownika dla usługi AKS z identyfikatorem entra firmy Microsoft. Utwórz Ustawienia diagnostyczne dla identyfikatora entra firmy Microsoft, wysyłając dzienniki inspekcji i logowania do obszaru roboczego usługi Azure Log Analytics. Skonfiguruj żądane alerty (np. gdy zdezaktywowane konto próbuje się zalogować) w obszarze roboczym usługi Azure Log Analytics.

Najlepsze rozwiązanie — włączanie diagnostyki zasobów platformy Azure

  • Włączając diagnostykę platformy Azure we wszystkich zasobach obciążenia, masz dostęp do dzienników platformy, które zapewniają szczegółowe informacje diagnostyczne i inspekcji dla zasobów platformy Azure. Te dzienniki można pozyskiwać do usługi Log Analytics lub rozwiązania SIEM, takiego jak Microsoft Sentinel na potrzeby monitorowania zabezpieczeń i zgłaszania alertów.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

  • Adnan Khan | Starszy architekt rozwiązań w chmurze

Inni współautorzy:

Następne kroki