DevSecOps dla infrastruktury jako kodu (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Pomysły dotyczące rozwiązań

W tym artykule opisano pomysł rozwiązania. Architekt chmury może użyć tych wskazówek, aby ułatwić wizualizowanie głównych składników dla typowej implementacji tej architektury. Skorzystaj z tego artykułu jako punktu wyjścia, aby zaprojektować dobrze zaprojektowane rozwiązanie zgodne z konkretnymi wymaganiami obciążenia.

Ten pomysł rozwiązania ilustruje potok DevSecOps przy użyciu usługi GitHub dla IaC oraz sposób zarządzania przepływem pracy na potrzeby doskonałości operacji, zabezpieczeń i optymalizacji kosztów.

Terraform jest znakiem towarowym hashicorp. Użycie tego znaku oznacza nie jest dorozumiane.

Architektura

Diagram przedstawiający architekturę metodyki DevSecOps dla IaC.

Pobierz plik programu Visio z tą architekturą.

Przepływ danych

  1. W przypadku programowania opartego na testach zaewidencjonujesz zmiany kodu dla definicji infrastruktury, takich jak szablony IaC, do repozytoriów Usługi GitHub. Tworzysz testy jednostkowe, testy integracji i PaC w tym samym czasie, aby przetestować jakość IaC.
  2. Żądania ściągnięcia wyzwalają zautomatyzowane testowanie jednostek za pomocą funkcji GitHub Actions.
  3. Proces przepływu pracy funkcji GitHub Actions umożliwia przetestowanie IaC przy użyciu lokalnie wdrożonych stanów i planów infrastruktury.
  4. Skonfigurujesz funkcję GitHub Actions, aby skanować pod kątem problemów z jakością kodu i zabezpieczeniami. Następnie użyjesz narzędzi do skanowania zabezpieczeń utworzonego w języku CodeQL usługi GitHub w celu skanowania pod kątem luk w zabezpieczeniach w IaC. Jeśli zostanie wykryta luka w zabezpieczeniach, usługa GitHub wysyła alerty do organizacji lub do właścicieli repozytoriów i opiekunów.
  5. Narzędzie IaC aprowizuje i modyfikuje zasoby dla każdego środowiska, dostosowując rozmiar, liczbę wystąpień i inne właściwości. Testy automatycznej integracji dla IaC można uruchamiać na aprowizowanych zasobach.
  6. W przypadku konieczności ręcznej aktualizacji infrastruktury wyznaczony dostęp administratora jest podwyższony w celu wykonania modyfikacji. Po modyfikacji dostęp z podwyższonym poziomem uprawnień zostanie usunięty, a problem powinien zostać zarejestrowany w usłudze GitHub w celu uzgodnienia IaC. Kroki uzgadniania i możliwość zależą od konkretnych narzędzi IaC.
  7. Metodyka SecOps stale monitoruje zagrożenia i luki w zabezpieczeniach oraz broni się przed nimi. Usługa Azure Policy wymusza ład w chmurze.
  8. Po wykryciu anomalii problem powinien zostać automatycznie zgłoszony w usłudze GitHub na potrzeby recyfikacji.

Składniki

  • GitHub to platforma hostingu kodu do kontroli wersji i współpracy. Repozytorium kontroli źródła w usłudze GitHub zawiera wszystkie pliki projektu i ich historię poprawek. Deweloperzy mogą współpracować, aby współtworzyć, omawiać i zarządzać kodem w repozytorium.
  • Funkcja GitHub Actions udostępnia zestaw przepływów pracy kompilacji i wydań, które obejmują ciągłą integrację (CI), zautomatyzowane testowanie i wdrożenia kontenerów.
  • Usługa GitHub Advanced Security udostępnia funkcje zabezpieczania IaC. Wymaga to innej licencji.
  • CodeQL udostępnia narzędzia do skanowania zabezpieczeń uruchamiane w kodzie statycznym w celu wykrywania błędów konfiguracji infrastruktury.
  • Terraform to produkt partnerski opracowany przez firmę HashiCorp, który umożliwia automatyzację infrastruktury na platformie Azure i innych środowiskach.
  • Microsoft Defender dla Chmury zapewnia ujednolicone zarządzanie zabezpieczeniami i zaawansowaną ochronę przed zagrożeniami w obciążeniach chmury hybrydowej.
  • Microsoft Sentinel to natywne dla chmury rozwiązanie SIEM i automatyczne reagowanie na orkiestrację zabezpieczeń (SOAR). Korzysta z zaawansowanej sztucznej inteligencji i analizy zabezpieczeń, aby ułatwić wykrywanie zagrożeń i reagowanie na nie w całym przedsiębiorstwie.
  • Usługa Azure Policy pomaga zespołom zarządzać problemami z zasobami informatycznymi i zapobiegać im dzięki definicjom zasad wymuszającym reguły dotyczące zasobów w chmurze. Jeśli na przykład projekt ma wdrożyć maszynę wirtualną z nierozpoznaną jednostkę SKU, usługa Azure Policy powiadamia o problemie i zatrzymuje wdrożenie.
  • Usługa Azure Monitor zbiera i analizuje dane telemetryczne aplikacji, takie jak metryki wydajności i dzienniki aktywności. Gdy ta usługa identyfikuje nieregularne warunki, ostrzega aplikacje i personel.

Szczegóły scenariusza

Koncepcyjnie metodyka DevSecOps dla infrastruktury jako kodu (IaC) jest podobna do metodyki DevSecOps dla kodu aplikacji w usłudze AKS. Potrzebujesz jednak innego zestawu potoków i narzędzi do zarządzania i automatyzowania ciągłej integracji i ciągłego dostarczania (CI/CD) dla IaC.

Podczas wdrażania IaC ważne jest utworzenie testów automatyzacji podczas opracowywania kodu. Te testy zmniejszają złożoność testowania IaC podczas skalowania obciążeń. Możesz użyć lokalnych stanów konfiguracji infrastruktury, takich jak stany programu Terraform i plany tworzenia rozwiązań opartych na testach (TDD) dla IaC. Te stany konfiguracji emulują rzeczywiste wdrożenia. Testy integracji dla IaC można uruchamiać w rzeczywistych wdrożeniach infrastruktury przy użyciu interfejsu API REST usługi Azure Resource Graph.

Zasady jako kod (PaC) to również ważna metoda dostarczania infrastruktury zgodnej z przepisami i ładem korporacyjnym. Przepływy pracy paC można dodać do potoków , aby zautomatyzować ład w chmurze.

Zabezpieczanie infrastruktury na wczesnym etapie programowania zmniejsza ryzyko błędnej konfiguracji infrastruktury, która otwiera punkty ataku po wdrożeniu. Możesz zintegrować statyczne narzędzia do analizy kodu dla infrastruktury, takiej jak Synk lub Aquasecurity tfsec, przy użyciu języka CodeQL usługi GitHub, aby skanować problemy z zabezpieczeniami w kodzie infrastruktury. Ten proces jest podobny do statycznego testowania zabezpieczeń aplikacji (SAST).

Gdy infrastruktura jest wdrażana i operacyjna, dryfy konfiguracji chmury mogą być trudne do rozwiązania, szczególnie w środowiskach produkcyjnych.

Skonfiguruj dedykowane jednostki usługi w celu wdrożenia lub zmodyfikowania infrastruktury chmury dla środowisk produkcyjnych. Następnie usuń wszystkie inne prawa dostępu, które umożliwiają ręczną konfigurację środowiska. W przypadku, gdy potrzebujesz ręcznych konfiguracji, podnieś poziom dostępu dla wyznaczonego administratora, a następnie usuń podwyższony poziom dostępu po zmodyfikowaniu zmiany. Należy skonfigurować usługę Azure Monitor, aby zgłosić problem w usłudze GitHub dla deweloperów w celu uzgodnienia zmian. Jednak w miarę możliwości należy unikać ręcznej konfiguracji.

Ważne jest, aby stale monitorować środowisko chmury pod kątem zagrożeń i luk w zabezpieczeniach, aby zapobiec zdarzeniom zabezpieczeń. Aby wykrywać nietypowy ruch, można użyć narzędzi do ochrony przed zagrożeniami i informacji o zabezpieczeniach oraz zarządzania zdarzeniami (SIEM). Te narzędzia automatycznie ostrzegają administratorów zabezpieczeń i zgłaszają problem w usłudze GitHub w celu uzyskania uwagi.

Potencjalne przypadki użycia

Jesteś częścią centralnego zespołu deweloperów IaC, który korzysta ze strategii wielochmurowej fikcyjnej firmy Contoso. Chcesz wdrożyć infrastrukturę chmury w nowej strefie docelowej platformy Azure przy użyciu metodyki DevSecOps dla IaC w celu zapewnienia bezpieczeństwa i jakości wdrożeń. Chcesz również śledzić i przeprowadzać inspekcję wszystkich modyfikacji infrastruktury.

Współautorzy

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

Autorzy zabezpieczeń:

Następne kroki