Skanowanie kodu bez agenta w Microsoft Defender dla Chmury
Skanowanie kodu bez agenta w usłudze Microsoft Defender dla Chmury oferuje szybkie i skalowalne pokrycie zabezpieczeń dla wszystkich repozytoriów w usłudze Azure DevOps. Szybko odnajduje luki w zabezpieczeniach konfiguracji kodu i infrastruktury jako kodu (IaC) bez konieczności wprowadzania agentów ani zmian potoku ciągłej integracji i ciągłego wdrażania (CI/CD). Takie podejście upraszcza konfigurowanie i konserwację za pomocą jednego łącznika usługi Azure DevOps oraz zapewnia szeroki zakres, ciągłe szczegółowe informacje i praktyczne wyniki zabezpieczeń. Pozwala to zespołom ds. zabezpieczeń i programowania skupić się na bezproblemowym naprawianiu zagrożeń bez przerywania przepływów pracy programowania.
Wymagania wstępne
Stan wydania: publiczna wersja zapoznawcza
Obsługiwane przypadki użycia:
Chmury: chmury komercyjne platformy Azure
Obsługiwane regiony: Australia Wschodnia, Kanada Środkowa, Środkowe stany USA, Azja Wschodnia, Wschodnie stany USA, Europa Północna, Szwecja Środkowa, Południowe Zjednoczone Królestwo, Europa Zachodnia
Obsługiwane środowiska: łącznik usługi Azure DevOps
Role i uprawnienia:
Aby skonfigurować i skonfigurować łącznik:
- Administrator kolekcji projektów: wymagane w usłudze Azure DevOps do wykonania początkowej konfiguracji.
- Współautor subskrypcji: wymagane w subskrypcji platformy Azure do utworzenia i skonfigurowania łącznika.
Aby wyświetlić wyniki zabezpieczeń:
- Administrator zabezpieczeń: może zarządzać ustawieniami zabezpieczeń, zasadami i alertami, ale nie może modyfikować łącznika.
- Czytelnik zabezpieczeń: może wyświetlać zalecenia, alerty i zasady, ale nie może wprowadzać żadnych zmian.
Główne korzyści
- Proaktywne zarządzanie ryzykiem: identyfikowanie ryzyka na wczesnym etapie procesu programowania. Obsługuje to bezpieczne praktyki kodowania i zmniejsza luki w zabezpieczeniach przed dotarciem do środowiska produkcyjnego.
- Bezproblemowe dołączanie: szybkie konfigurowanie przy użyciu minimalnej konfiguracji i bez zmian potoku.
- Scentralizowane zarządzanie w skali przedsiębiorstwa: automatyczne skanowanie kodu w wielu repozytoriach przy użyciu jednego łącznika. Zapewnia to szeroki zakres dla dużych środowisk.
- Szybki wgląd w szczegółowe informacje na potrzeby szybkiego korygowania: odbierz szczegółowe informacje o lukach w zabezpieczeniach z możliwością działania bezpośrednio po dołączeniu. Umożliwia to szybkie poprawki i skraca czas ekspozycji.
- Przyjazny dla deweloperów i bezproblemowy: działa niezależnie od potoków ciągłej integracji i ciągłego wdrażania (CI/CD), bez konieczności wprowadzania zmian ani bezpośredniego zaangażowania deweloperów. Umożliwia to ciągłe monitorowanie zabezpieczeń bez zakłócania produktywności deweloperów lub przepływów pracy.
Możliwości wykrywania zagrożeń
Skanowanie kodu bez agenta zwiększa bezpieczeństwo, oferując ukierunkowane zalecenia dotyczące zabezpieczeń zarówno dla szablonów kodu, jak i infrastruktury jako kodu (IaC). Jest to dodatek do podstawowych zaleceń dotyczących zabezpieczeń zarządzania stanem zabezpieczeń w chmurze (CSPM) udostępnianych za pośrednictwem łącznika. Możliwości wykrywania kluczy obejmują:
- Luki w zabezpieczeniach kodu: znajdowanie typowych błędów kodowania, niebezpiecznych praktyk kodowania i znanych luk w zabezpieczeniach w wielu językach programowania.
- Błędy konfiguracji infrastruktury jako kodu: wykrywanie błędów konfiguracji zabezpieczeń w szablonach IaC, które mogą prowadzić do niezabezpieczonych wdrożeń.
Tworzenie łącznika zwiększa bezpieczeństwo, zapewniając podstawowy zestaw zaleceń dotyczących zabezpieczeń dla repozytoriów, potoków i połączeń usług.
Narzędzia do skanowania
Skanowanie kodu bez agenta używa różnych narzędzi typu open source do znajdowania luk w zabezpieczeniach i błędów konfiguracji w kodzie i szablonach infrastruktury jako kodu (IaC):
Narzędzie | Obsługiwane języki/IaC | Licencja |
---|---|---|
Bandyta | Python | Apache 2.0 |
Checkov | Szablony IaC programu Terraform, pliki planu programu Terraform, szablony aws CloudFormation, pliki manifestu Kubernetes, pliki wykresu Helm, pliki dockerfile, szablony IaC usługi Azure Azure Resource Manager (ARM), szablony IaC platformy Azure Bicep, szablony SAM platformy AWS (bezserwerowy model aplikacji), pliki Kustomize, szablony struktur bezserwerowych, pliki specyfikacji OpenAPI | Apache 2.0 |
ESLint | JavaScript, TypeScript, JSX, TSX | MIT |
Analizator szablonów | Szablony IaC usługi ARM, szablony Bicep IaC | MIT |
Terrascan | Szablony IaC programu Terraform (HCL2), pliki manifestu kubernetes (YAML/JSON), pliki Dockerfiles, szablony AWS CloudFormation (YAML/JSON), szablony IaC usługi Azure ARM, pliki wykresów helm (wersja 3), pliki Kustomize | Apache 2.0 |
Te narzędzia obsługują szeroką gamę języków i struktur IaC, zapewniając dokładną analizę zabezpieczeń w bazie kodu.
Obsługiwane platformy i typy plików
Systemy kontroli wersji
- Azure DevOps: pełna obsługa repozytoriów połączonych za pośrednictwem łącznika usługi Azure DevOps.
Języki programowania
- Python
- JavaScript/TypeScript
Platformy i konfiguracje infrastruktury jako kodu (IaC)
Platforma IaC | Obsługiwane typy plików | Uwagi |
---|---|---|
Terraform | .tf , .tfvars |
Obsługuje szablony IaC programu Terraform w języku HCL2, w tym pliki zmiennych w systemie .tfvars . |
Terraform Plan | Pliki JSON | Zawiera pliki JSON reprezentujące planowane konfiguracje używane do analizy i skanowania. |
AWS CloudFormation | Pliki JSON, YAML | Obsługuje szablony platformy AWS CloudFormation do definiowania zasobów platformy AWS. |
Kubernetes | YAML, pliki JSON | Obsługuje pliki manifestu kubernetes służące do definiowania konfiguracji w klastrach. |
Helm | Struktura katalogów chart programu Helm, pliki YAML | Podąża za standardową strukturą wykresu programu Helm; program obsługuje pliki wykresów Helm w wersji 3. |
Docker | Pliki o nazwie Dockerfile | Obsługuje pliki Dockerfile dla konfiguracji kontenerów. |
Szablony usługi Azure ARM | Pliki JSON | Obsługuje szablony IaC usługi Azure Resource Manager (ARM) w formacie JSON. |
Azure Bicep | Pliki bicep | Obsługuje szablony Bicep IaC, język specyficzny dla domeny (DSL) dla usługi ARM. |
AWS SAM | Pliki YAML | Obsługuje szablony modelu aplikacji bezserwerowych platformy AWS (SAM) dla zasobów bezserwerowych. |
Kustomize | Pliki YAML | Obsługuje pliki konfiguracji dostosowywania platformy Kubernetes (Kustomize). |
Struktura bezserwerowa | Pliki YAML | Obsługuje szablony dla platformy bezserwerowej podczas definiowania architektur bezserwerowych. |
OpenAPI | YAML, pliki JSON | Obsługuje pliki specyfikacji interfejsu OpenAPI do definiowania interfejsów API RESTful. |
Włączanie skanowania kodu bez agenta w organizacjach usługi Azure DevOps
Aby połączyć organizacje usługi Azure DevOps z Defender dla Chmury i włączyć skanowanie kodu bez agenta, zapoznaj się z instrukcjami w artykule Łączenie organizacji usługi Azure DevOps. Poniższa wizualizacja przedstawia szybki, prosty proces konfiguracji, który przeprowadzi Cię przez każdy krok w celu bezproblemowego dołączania.
Jak działa skanowanie kodu bez agenta
Skanowanie kodu bez agenta działa niezależnie od potoków ciągłej integracji/ciągłego wdrażania. Używa łącznika usługi Azure DevOps do automatycznego skanowania konfiguracji kodu i infrastruktury jako kodu (IaC). Nie musisz modyfikować potoków ani dodawać rozszerzeń. Ta konfiguracja umożliwia szeroką i ciągłą analizę zabezpieczeń w wielu repozytoriach. Wyniki są przetwarzane i wyświetlane bezpośrednio w Microsoft Defender dla Chmury.
Proces skanowania
Po włączeniu funkcji skanowania kodu bez agenta w ramach łącznika proces skanowania wykonuje następujące kroki:
- Odnajdywanie repozytoriów: system automatycznie identyfikuje wszystkie repozytoria połączone za pośrednictwem łącznika usługi Azure DevOps bezpośrednio po utworzeniu łącznika, a następnie co 8 godzin.
- Pobieranie kodu: bezpiecznie pobiera najnowszy kod z domyślnej gałęzi (głównej) każdego repozytorium na potrzeby analizy, najpierw po skonfigurowaniu łącznika, a następnie co 3–4 dni.
- Analiza: System używa zestawu wbudowanych narzędzi do skanowania zarządzanych i aktualizowanych w Microsoft Defender dla Chmury w celu znalezienia luk w zabezpieczeniach i błędów konfiguracji w kodzie i szablonach IaC.
- Przetwarzanie wyników: przetwarza wyniki skanowania za pośrednictwem zaplecza Defender dla Chmury w celu utworzenia zaleceń dotyczących zabezpieczeń z możliwością działania.
- Dostarczanie wyników: system pokazuje wyniki jako zalecenia dotyczące zabezpieczeń w Defender dla Chmury, co umożliwia zespołom ds. zabezpieczeń przeglądanie i rozwiązywanie problemów.
Częstotliwość i czas trwania skanowania
- Częstotliwość skanowania:
- Stan zabezpieczeń repozytoriów, potoków i połączeń usług jest oceniany podczas tworzenia łącznika, a następnie co 8 godzin.
- System skanuje kod i szablony infrastruktury jako kodu (IaC) pod kątem luk w zabezpieczeniach po utworzeniu łącznika, a następnie co 3–4 dni.
- Czas trwania skanowania: skanowanie zwykle kończy się w ciągu 15 do 60 minut, w zależności od rozmiaru i złożoności repozytorium.
Wyświetlanie wyników skanowania i zarządzanie nimi
Po zakończeniu skanowania można uzyskać dostęp do wyników zabezpieczeń w Microsoft Defender dla Chmury.
Wyniki dostępu
Przejdź do karty Zalecenia dotyczące zabezpieczeń w Microsoft Defender dla Chmury.
Przejrzyj listę zaleceń, które obejmują wyniki, takie jak:
Repozytoria usługi Azure DevOps powinny mieć rozwiązane wyniki skanowania kodu — wskazuje luki w zabezpieczeniach znalezione w repozytoriach kodu.
Repozytoria usługi Azure DevOps powinny mieć infrastrukturę jako rozwiązane wyniki skanowania kodu — wskazuje błędy konfiguracji zabezpieczeń wykryte w plikach szablonów IaC w repozytoriach.
Inne zalecenia dotyczące zabezpieczeń wygenerowane przez łącznik usługi Azure DevOps mogą obejmować:
- Repozytoria usługi Azure DevOps powinny mieć włączoną usługę GitHub Advanced Security dla usługi Azure DevOps (GHAzDO)
- Usługa Azure Pipelines nie powinna mieć wpisów tajnych dostępnych dla kompilacji rozwidlenia
- Połączenia usługi Azure DevOps nie powinny udzielać dostępu do wszystkich potoków
- Grupy zmiennych usługi Azure DevOps ze zmiennymi tajnymi nie powinny udzielać dostępu do wszystkich potoków
- Klasyczne połączenia usługi azure DevOps nie powinny być używane do uzyskiwania dostępu do subskrypcji
- (Wersja zapoznawcza) Repozytoria usługi Azure DevOps powinny wymagać minimalnej zgody dwóch recenzentów na potrzeby wypychania kodu
- (Wersja zapoznawcza) Repozytoria usługi Azure DevOps nie powinny zezwalać żądaniom na zatwierdzanie własnych żądań ściągnięcia
- (Wersja zapoznawcza) Usługa Azure DevOps Projects powinna mieć wyłączone tworzenie klasycznych potoków
- Bezpieczne pliki usługi Azure DevOps nie powinny udzielać dostępu do wszystkich potoków
Wybierz dowolne zalecenie, aby uzyskać szczegółowe informacje, w tym pliki, których dotyczy problem, poziomy ważności i wskazówki dotyczące korygowania.
Różnica między skanowaniem kodu bez agenta i skanowaniem w potoku
Skanowanie kodu bez agenta i skanowanie w potoku przy użyciu rozszerzenia Microsoft Security DevOps oferują skanowanie zabezpieczeń w usłudze Azure DevOps. Służą one różnym potrzebom, ale współpracują ze sobą. W poniższej tabeli przedstawiono główne różnice, które pomogą Ci wybrać opcję, która odpowiada potrzebom w zakresie zabezpieczeń i programowania.
Aspekt | Skanowanie kodu bez agenta | Skanowanie w potoku |
---|---|---|
Dopasowanie przypadku użycia | Oferuje szeroki zakres z minimalnymi zakłóceniami dla deweloperów | Udostępnia szczegółowe, zintegrowane ze potokiem skanowania z dostosowywalnymi kontrolkami |
Zakres i pokrycie skanowania | Koncentruje się na skanowaniu luk w zabezpieczeniach infrastruktury jako kodu (IaC) i skanowaniu luk w zabezpieczeniach kodu zaplanowanym co 3–4 dni | Oferuje obszerne pokrycie, w tym pliki binarne i obrazy kontenerów, wyzwalane na każdym uruchomieniu potoku |
Instalacja i konfiguracja | Nie wymaga dalszej konfiguracji po utworzeniu łącznika | Wymaga ręcznej instalacji i konfiguracji w każdym potoku ciągłej integracji/ciągłego wdrażania |
Integracja potoku | Uruchamia potoki niezależnie od potoków ciągłej integracji/ciągłego wdrażania bez modyfikowania przepływów pracy | Integruje się w potoku ciągłej integracji/ciągłego wdrażania, co wymaga konfiguracji w każdym potoku |
Dostosowywanie skanera | Nie można dostosowywać ani selektywnie uruchamiać skanerów | Umożliwia dostosowywanie za pomocą określonych skanerów, kategorii, języków, poziomów poufności i narzędzi innych niż Microsoft |
Wyniki i opinie | Zapewnia dostęp do wyników w Defender dla Chmury | Oferuje opinie niemal w czasie rzeczywistym w potoku ciągłej integracji/ciągłego wdrażania, a wyniki są również widoczne w Defender dla Chmury |
Kryteria przerwania i niepowodzenia | Nie można przerwać kompilacji | Można skonfigurować do przerywania kompilacji na podstawie ważności ustaleń zabezpieczeń |
Wpływ skalowalności i wydajności
Skanowanie kodu bez agenta pozwala uniknąć tworzenia zasobów w subskrypcji i nie wymaga skanowania podczas procesu potoku. Używa interfejsu API REST usługi Azure DevOps do ściągania metadanych i kodu. Oznacza to, że wywołania interfejsu API są liczone do limitów szybkości usługi Azure DevOps, ale nie są naliczane bezpośrednie koszty transferu danych. Usługa zarządza skanowaniami, aby upewnić się, że pozostają one w granicach szybkości usługi Azure DevOps bez przerywania środowiska deweloperskiego. Ta metoda zapewnia wydajne, wysokowydajne skanowanie między repozytoriami bez wpływu na przepływy pracy metodyki DevOps. Aby uzyskać więcej informacji, zobacz Limity szybkości i użycia usługi Azure DevOps.
Zabezpieczenia danych, zgodność i kontrola dostępu do skanowania kodu bez agenta
usługa skanowania kodu bez agenta Microsoft Defender dla Chmury zapewnia bezpieczną i zgodną obsługę kodu przez zaimplementowanie rygorystycznych środków bezpieczeństwa i prywatności danych:
- Szyfrowanie danych i kontrola dostępu: system szyfruje wszystkie dane przesyłane przy użyciu standardowych protokołów branżowych. Tylko autoryzowane usługi Defender dla Chmury mogą uzyskiwać dostęp do kodu.
- Przechowywanie i przechowywanie danych: skanowanie odbywa się w tym samym obszarze geograficznym co łącznik usługi Azure DevOps (USA lub UE), aby zapewnić zgodność z przepisami dotyczącymi ochrony danych. System przetwarza kod tylko podczas skanowania i bezpiecznego usuwania go później bez długoterminowego przechowywania.
- Dostęp do repozytoriów: usługa generuje bezpieczny token dostępu dla usługi Azure DevOps w celu przeprowadzenia skanowania. Ten token umożliwia pobieranie niezbędnych metadanych i kodu bez tworzenia zasobów w ramach subskrypcji. Tylko Defender dla Chmury składniki mają dostęp, chroniąc integralność danych.
- Obsługa zgodności: usługa jest zgodna ze standardami prawnymi i zabezpieczeń dotyczącymi obsługi i prywatności danych, zapewniając bezpieczne przetwarzanie i skanowanie kodu klienta zgodnie z regionalnymi wymaganiami dotyczącymi ochrony danych.
Te środki zapewniają bezpieczny, zgodny i wydajny proces skanowania kodu, zachowując prywatność i integralność danych.
Ograniczenia (publiczna wersja zapoznawcza)
W fazie publicznej wersji zapoznawczej obowiązują następujące ograniczenia:
Brak skanowania binarnego: system skanuje tylko pliki kodu i infrastruktury jako kodu (IaC).
Częstotliwość skanowania: skanuje repozytoria co 3–4 dni.
Rozmiar repozytorium: ogranicza skanowanie do repozytoriów poniżej 1 GB.
Pokrycie gałęzi: Skanowanie obejmuje tylko gałąź domyślną (główną).
Dostosowywanie narzędzi: nie można dostosować narzędzi do skanowania.