Udostępnij za pośrednictwem


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, który używa usługi GitHub do infrastruktury jako kodu (IaC). Opisano również sposób zarządzania przepływem pracy na potrzeby doskonałości operacyjnej, bezpieczeństwa 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

Poniższy przepływ danych odpowiada poprzedniemu diagramowi:

  1. Użyj programowania opartego na testach, aby sprawdzić zmiany kodu dla definicji infrastruktury, takich jak szablony IaC, w repozytoriach GitHub. Tworzysz testy jednostkowe, testy integracji i zasady jako kod (PaC) w tym samym czasie, aby przetestować jakość IaC.

  2. Żądania ściągnięcia wyzwalają zautomatyzowane testowanie jednostkowe za pomocą funkcji GitHub Actions.

  3. Skonfiguruj proces przepływu pracy funkcji GitHub Actions, aby przetestować IaC przy użyciu lokalnie wdrożonych stanów i planów infrastruktury.

  4. Skonfiguruj funkcję GitHub Actions, aby skanować pod kątem problemów z jakością kodu i zabezpieczeniami. Tworzenie własnych niestandardowych zapytań GitHub CodeQL w celu analizowania szablonów IaC i wykrywania potencjalnych luk w zabezpieczeniach. 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. Należy również zarejestrować problem z usługą GitHub w celu uzgodnienia IaC. Kroki uzgodnień i podejścia 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 z usługą GitHub jest rejestrowany automatycznie, aby można było go rozwiązać.

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 wydania, które obejmują ciągłą integrację, 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 do zarządzania informacjami i zdarzeniami zabezpieczeń (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 ułatwia zespołom zarządzanie problemami IT i zapobieganie im przy użyciu definicji zasad, które mogą wymuszać reguły dla zasobów w chmurze. Jeśli na przykład projekt ma wdrożyć maszynę wirtualną, która ma 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 IaC jest podobna do metodyki DevSecOps dla kodu aplikacji w usłudze Azure Kubernetes Service (AKS). Potrzebujesz jednak innego zestawu potoków i narzędzi do zarządzania i automatyzowania ciągłej integracji i ciągłego dostarczania 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 programowania opartego na testach. 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.

PaC to kolejna 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 uwidacznia punkty ataku po wdrożeniu. Narzędzia do analizy kodu statycznego, takie jak Synk lub Aqua Security tfsec, można zintegrować przy użyciu języka CodeQL usługi GitHub w celu skanowania pod kątem luk w zabezpieczeniach w kodzie infrastruktury. Ten proces jest podobny do statycznego testowania zabezpieczeń aplikacji.

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. Jeśli potrzebujesz konfiguracji ręcznych, podnieś poziom dostępu dla wyznaczonego administratora, a następnie usuń podwyższony poziom dostępu po wprowadzeniu zmiany. Należy skonfigurować usługę Azure Monitor, aby zgłosić problem z usługą GitHub, aby deweloperzy mogli uzgodnić zmiany. Unikaj ręcznej konfiguracji, jeśli to możliwe.

Ważne jest, aby stale monitorować środowisko chmury pod kątem zagrożeń i luk w zabezpieczeniach, aby zapobiec zdarzeniom zabezpieczeń. Do wykrywania nietypowego ruchu można użyć narzędzi ochrony przed zagrożeniami i narzędzi SIEM. Te narzędzia automatycznie ostrzegają administratorów zabezpieczeń i zgłaszają problem z usługą GitHub.

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, aby zapewnić bezpieczeństwo i jakość wdrożeń. Chcesz również śledzić i przeprowadzać inspekcję wszystkich modyfikacji infrastruktury.

Współautorzy

Firma Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.

Autorzy zabezpieczeń:

Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki