Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Skanowanie kodu bez agenta w usłudze Microsoft Defender dla Chmury oferuje szybkie i skalowalne pokrycie zabezpieczeń dla wszystkich repozytoriów w usługach Azure DevOps i GitHub. Automatycznie skanuje kod, zależności open source i infrastrukturę jako kod (IaC), aby zidentyfikować luki w zabezpieczeniach i błędy konfiguracji. Nie trzeba zmieniać potoków kompilacji ani wdrażania. Takie podejście upraszcza konfigurowanie i konserwację za pomocą jednego łącznika Azure DevOps lub GitHub oraz zapewnia szeroki zakres, ciągłe szczegółowe informacje i praktyczne wyniki zabezpieczeń. Umożliwia to zespołom ds. zabezpieczeń i programowania skoncentrowanie się na naprawianiu zagrożeń bez przerywania przepływów pracy programowania.
Możesz dostosować skanery do uruchamiania i definiować dokładnie, które organizacje, projekty lub repozytoria mają być uwzględniane lub wykluczane ze skanowania.
Wymagania wstępne
Przed włączeniem skanowania kodu bez agenta upewnij się, że spełniasz następujące wymagania:
Obsługiwane przypadki użycia:
Zapytania usługi Cloud Security Explorer służące do lokalizowania repozytoriów, w tym zależności wynikających ze spisu materiałów oprogramowania (SBOM).
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 i łącznik GitHub.
Role i uprawnienia:
Aby przygotować i skonfigurować łącznik:
- Administrator kolekcji projektów: wymagane w usłudze Azure DevOps do wykonania początkowej konfiguracji.
- Współautor subskrypcji jest wymagany w subskrypcji 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
Skanowanie kodu bez agenta w Microsoft Defender dla Chmury zapewnia następujące korzyści:
- Proaktywne zarządzanie ryzykiem: identyfikowanie ryzyka na wczesnym etapie procesu programowania. Umożliwia to bezpieczne praktyki kodowania i zmniejsza luki w zabezpieczeniach przed dotarciem do środowiska produkcyjnego.
- Bezproblemowe dołączanie: szybka konfiguracja z minimalnymi ustawieniami i bez modyfikacji w systemie.
- Scentralizowane zarządzanie w skali przedsiębiorstwa: automatyczne skanowanie kodu w wielu repozytoriach przy użyciu jednego łącznika. Zapewnia to szerokie pokrycie w przypadku 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. Pozwala to na 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.
- Elastyczne pokrycie i kontrola: Wybierz, które skanery są uruchamiane i które są skanowane. Możesz domyślnie objąć wszystko lub dostosować ustawienia tak, aby uwzględniały lub wykluczały określone organizacje, projekty lub repozytoria. Dzięki temu można dopasować zabezpieczenia do profilu ryzyka i potrzeb operacyjnych bez dodatkowej złożoności.
- Tworzenie rachunku za oprogramowanie (SBOM): Automatyczne generowanie SBOM na każdym skanowaniu daje zespołom precyzyjny, możliwy do wykonywania zapytań spis zależności i wersji w swoich repozytoriach bez dodatkowych zmian przepływu pracy. Umożliwia to szybką analizę wpływu, szybszą reakcję na nowo ujawnione luki w zabezpieczeniach i pewność podejmowania decyzji podczas oceny narażenia na określone pakiety lub wersje.
Możliwości wykrywania ryzyka
Skanowanie kodu bez agenta zwiększa bezpieczeństwo dzięki dostarczaniu docelowych, praktycznych zaleceń dotyczących kodu aplikacji, szablonów infrastruktury jako kodu (IaC) i zależności innych firm. Jest to uzupełnienie zaleceń dotyczących zarządzania stanem bezpieczeństwa chmury, udostępnianych za pośrednictwem konektora. 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ń.
- Luki w zabezpieczeniach zależności: zidentyfikuj znane luki w zabezpieczeniach pakietów open source i pakietów systemu operacyjnego wykrytych w repozytoriach.
- Software Bill of Materials (SBOM): Automatycznie wygeneruj kompleksowy spis zależności z możliwością wykonywania zapytań i ich wersji dla każdego repozytorium.
Tworzenie łącznika zwiększa bezpieczeństwo, zapewniając podstawowe zalecenia dotyczące zarządzania stanem zabezpieczeń w chmurze dla repozytoriów, potoków i połączeń usług.
Narzędzia do skanowania
Skanowanie kodu bez agenta wykorzystuje narzędzia open source do znajdowania luk w zabezpieczeniach i nieprawidłowych konfiguracji w kodzie oraz szablonach infrastruktury jako kodu (IaC):
| Narzędzie | Obsługiwane języki/IaC | Licencja |
|---|---|---|
| Analizator szablonów | Szablony ARM IaC, szablony Bicep IaC | MIT |
| Checkov | Szablony IaC Terraform, pliki planów Terraform, szablony AWS CloudFormation, pliki manifestów Kubernetes, pliki chartów Helm, pliki Dockerfile, szablony IaC Azure Resource Manager (ARM), szablony IaC Azure Bicep, szablony AWS SAM (model aplikacji bezserwerowych), pliki Kustomize, szablony frameworku Serverless, pliki specyfikacji OpenAPI | Apache 2.0 |
| Bandyta | Python | Apache 2.0 |
| ESLint | JavaScript, TypeScript, JSX, TSX | MIT |
| Trivy | Skanowanie luk w zabezpieczeniach dotyczących zależności i pakietów systemu operacyjnego z manifestów repozytorium i plików lockfile (tryb systemu plików) | Apache 2.0 |
| Syft | Alpine (apk), Pakiety Bitnami, C (conan), C++ (conan), Dart (pubs), Debian (dpkg), Dotnet (deps.json), Objective-C (cocoapods), Elixir (mix), Erlang (rebar3), Go (go.mod, Go binaries), GitHub (przepływy pracy, akcje), Haskell (cabal, stack), Java (jar, ear, war, par, sar, nar, rar, native-image), JavaScript (npm, yarn), Jenkins Plugins (jpi, hpi), Archiwum jądra systemu Linux (vmlinuz), Moduły jądra systemu Linux (ko), Nix (dane wyjściowe w /nix/store), PHP (Composer, PECL, Pear), Python (wheel, egg, Poetry, requirements.txt, uv), Red Hat (rpm), Ruby (gem), Rust (cargo.lock, auditable binary), Swift (cocoapods, swift-package-manager), Wtyczki WordPress, Terraform providers (.terraform.lock.hcl) | Apache 2.0 |
Te narzędzia obsługują szeroką gamę języków i struktur infrastruktury jako kodu (IaC), zapewniając dokładną analizę zabezpieczeń w bazie kodu.
Obsługiwane systemy i typy plików
Systemy kontroli wersji
Skanowanie kodu bez agenta obsługuje następujące systemy kontroli wersji:
Azure DevOps: pełna obsługa repozytoriów połączonych za pośrednictwem łącznika usługi Azure DevOps.
GitHub: pełna obsługa repozytoriów połączonych za pośrednictwem łącznika usługi GitHub.
Języki programowania
Skanowanie kodu bez agenta obsługuje następujące języki programowania i ekosystemy zależności:
Analiza kodu statycznego: Python; JavaScript/TypeScript.
Ekosystemy zależności (via Trivy): Node.js (npm, yarn), Python (pip, Pipenv, Poetry), Java (Maven, Gradle), .NET (NuGet), moduły Go, Ruby (RubyGems), PHP (Composer), Rust (Cargo) oraz inne obsługiwane języki i ekosystemy pakietów za pośrednictwem manifestów i plików blokad.
Platformy i konfiguracje infrastruktury jako kodu (IaC)
W poniższej tabeli wymieniono platformy IaC i typy plików obsługiwane przez skanowanie kodu bez agenta:
| 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 .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. |
| Ster | Struktura katalogów chart programu Helm, pliki YAML | Jest zgodna ze standardową strukturą wykresu programu Helm i obsługuje pliki wykresów Helm w wersji 3. |
| Doker | 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) przeznaczony dla 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 dla dostosowywania 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ług Azure DevOps i GitHub
Możesz połączyć zarówno organizacje usługi Azure DevOps, jak i GitHub z usługą Defender dla Chmury, aby umożliwić skanowanie kodu bez agenta. Aby skonfigurować połączenie, użyj jednego z następujących przewodników:
Dostosowywanie pokrycia i zakresu skanera
W przypadku usług GitHub i Azure DevOps można kontrolować, które skanery są uruchamiane i określać dokładnie, które repozytoria są dołączone lub wykluczone ze skanowania bez agenta.
Wybierz skanery: Włącz lub wyłącz każdy skaner kodu i skaner infrastruktury jako kodu (IaC) w zależności od potrzeb.
Ustaw zakres skanowania: Zdecyduj, czy chcesz domyślnie skanować wszystkie repozytoria lub zdefiniować zakres niestandardowy do uwzględnienia lub wykluczenia określonych organizacji, projektów lub repozytoriów.
- Tryb wykluczenia: Skanuj wszystko, z wyjątkiem tego, co wymienisz.
- Tryb dołączania: Skanuj tylko to, co wymienisz.
Opcje zakresu niestandardowego:
- W przypadku usługi GitHub ustaw zakres według właściciela lub repozytorium.
- W przypadku usługi Azure DevOps ustaw zakres według organizacji, projektu lub repozytorium.
Automatyczne odnajdywanie nowych repozytoriów: Automatyczne wykrywanie nowych repozytoriów jest zawsze ograniczone do organizacji lub projektów uwzględnionych w zakresie łącznika. Jest ona domyślnie włączona w przypadku korzystania z trybu wykluczania i nie ustawiono listy zakresów niestandardowych. Nowo utworzone repozytoria są skanowane automatycznie.
Wykrywanie automatyczne nie jest dostępne w trybie dołączania, ponieważ skanowane są tylko wymienione repozytoria.
Te opcje konfiguracji zakresu umożliwiają dopasowanie skanowania do potrzeb związanych z zabezpieczeniami, aktualizowanie pokrycia w miarę rozwoju środowiska i unikanie niepotrzebnych skanowań lub luk.
Jak działa skanowanie kodu bez agenta
Skanowanie kodu bez agenta działa niezależnie od potoków CI/CD. Używa łącznika Azure DevOps lub GitHub do automatycznego skanowania kodu i konfiguracji 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 łączniku proces skanowania obejmuje następujące kroki:
Odnajdywanie repozytoriów: system automatycznie identyfikuje wszystkie repozytoria połączone za pośrednictwem łącznika Usługi Azure DevOps i GitHub natychmiast 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, początkowo po skonfigurowaniu łącznika, a następnie codziennie.
Analysis: System używa wbudowanych narzędzi do skanowania, które Microsoft Defender dla Chmury zarządza i aktualizuje. Te narzędzia znajdują luki w zabezpieczeniach i błędne konfiguracje w szablonach kodu i infrastruktury jako kodu (IaC). System tworzy również SBOM do obsługi zapytań dotyczących pakietów.
Przetwarzanie wyników: przetwarza wyniki skanowania poprzez system zaplecza programu Defender dla Chmury, aby stworzyć praktyczne zalecenia dotyczące bezpieczeństwa.
Dostarczanie wyników: System wyświetla wyniki w Defender dla Chmury jako zalecenia dotyczące zabezpieczeń. Aby uzyskać szczegółowe informacje, zobacz Dokumentację zaleceń dotyczących zabezpieczeń metodyki DevOps.
Częstotliwość i czas trwania skanowania
Skanowanie kodu bez agenta używa następującego harmonogramu:
Częstotliwość skanowania:
- Stan zabezpieczeń repozytoriów, potoków i połączeń usług jest oceniany podczas tworzenia łącznika, a następnie co osiem godzin.
- System skanuje kod i szablony infrastruktury jako kodu (IaC) pod kątem luk w zabezpieczeniach po utworzeniu łącznika, a następnie codziennie.
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
Aby uzyskać dostęp do wyników:
W Microsoft Defender dla Chmury przejdź do karty Zalecenia dotyczące zabezpieczeń: Otwórz zalecenia dotyczące zabezpieczeń.
Przejrzyj zalecenia dotyczące repozytoriów usługi Azure DevOps i GitHub, takich jak:
Repozytoria powinny mieć rozwiązane wyniki skanowania kodu — wskazuje luki w zabezpieczeniach znalezione w repozytoriach kodu.
Repozytoria powinny mieć infrastrukturę w miarę rozwiązywania ustaleń skanowania kodu — flaguje błędy konfiguracji zabezpieczeń w szablonach IaC.
Repozytoria powinny mieć rozpoznane wyniki skanowania luk w zabezpieczeniach zależności — wskazuje, że w repozytoriach wykryto podatne na zagrożenia pakiety typu open source.
Aby uzyskać pełną listę zaleceń obsługiwanych na obu platformach, zobacz zalecenia dotyczące zabezpieczeń dla usług Azure DevOps i GitHub.
Zalecenia obejmują takie aspekty, jak wymaganie zatwierdzeń przez wielu recenzentów, ograniczanie dostępu do tajnych danych i stosowanie najlepszych praktyk w środowiskach Azure DevOps i GitHub.
Wybierz dowolne zalecenie, aby wyświetlić szczegóły dotyczące plików, których dotyczy problem, ważność i kroki korygowania.
Różnica między skanowaniem kodu bez agenta i skanowaniem w potoku
Skanowanie bez agenta a skanowanie w potoku
Skanowanie kodu bez agenta i skanowanie w potoku przy użyciu rozszerzenia rozwiązania zabezpieczające firmy Microsoft DevOps zapewnia skanowanie zabezpieczeń w Azure DevOps i GitHub. Służą one różnym potrzebom i mogą się uzupełniać. Poniższa tabela zawiera podsumowanie głównych różnic, dzięki czemu można wybrać opcję, która najlepiej pasuje do twojego środowiska.
| Aspekt | Skanowanie kodu bez agenta | Skanowanie w potoku |
|---|---|---|
| Dopasowanie do 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 lukach w zabezpieczeniach infrastruktury jako kodu (IaC), lukach w zabezpieczeniach kodu i lukach w zabezpieczeniach zależności typu open source zgodnie z harmonogramem (codziennie) | 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/CD |
| Integracja potoku | Działa niezależnie od potoków CI/CD bez konieczności modyfikowania przepływów pracy | Integruje się w potoku CI/CD, co wymaga konfiguracji dla każdego z nich |
| Dostosowywanie skanera | Umożliwia wybranie, które skanery są uruchamiane | 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 informacje zwrotne niemal w czasie rzeczywistym w potoku ciągłej integracji/ciągłego wdrażania, a rezultaty 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 użycia agenta eliminuje potrzebę tworzenia zasobów w subskrypcji i nie wymaga skanowania podczas procesu potokowego. Używa on usług Azure DevOps i GitHub REST API do ściągania metadanych i kodu. Oznacza to, że wywołania interfejsu API wliczają się do limitów szybkości dla Azure DevOps i GitHub, ale nie ponosisz bezpośrednich kosztów za transfer danych. Usługa zarządza skanowaniami, aby upewnić się, że pozostają one w granicach limitów szybkości usługi Azure DevOps i GitHub 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 oraz Limity szybkości dla interfejsu API REST usługi GitHub.
Zabezpieczenia danych, zgodność i kontrola dostępu do skanowania kodu bez agenta
Usługa skanowania kodu bez agenta Microsoft Defender dla Chmury pomaga chronić kod za pomocą mechanizmów zabezpieczeń 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.
- Miejsce przechowywania i okres przechowywania danych: Skanowania są wykonywane w tym samym regionie co łączniki Azure DevOps i GitHub (USA lub UE), aby spełnić wymogi dotyczące ochrony danych. System przetwarza kod podczas skanowania, a następnie bezpiecznie go usuwa. Nie przechowuje kodu przez długi czas.
- Dostęp do repozytoriów: Usługa generuje bezpieczny token dostępu na potrzeby usługi Azure DevOps i platformy GitHub do uruchamiania skanów. Ten token umożliwia usłudze pobieranie wymaganych metadanych i kodu bez tworzenia zasobów w ramach subskrypcji. Z tego dostępu mogą korzystać tylko składniki usługi Defender dla Chmury.
- Obsługa zgodności: usługa jest zgodna ze standardami prawnymi i zabezpieczeń dotyczącymi obsługi danych i prywatności w celu zapewnienia bezpiecznego, regionalnego przetwarzania kodu klienta.
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: są wykonywane tylko narzędzia do skanowania kodu (SAST) i IaC.
- Częstotliwość skanowania: Bezagentowe skanowanie kodu skanuje repozytoria po włączeniu tej funkcji, a następnie raz dziennie.
- Rozmiar repozytorium: skanowanie kodu bez agenta obsługuje repozytoria poniżej 1 GB.
-
Pokrycie gałęzi: Skanowanie obejmuje tylko gałąź domyślną (zazwyczaj
main). - Dostosowywanie narzędzi: nie można dostosować narzędzi do skanowania.
Syft (SBOM) ma obecnie następujące ograniczenia:
Nie można pobrać SBOM-ów. Możesz wykonywać zapytania dotyczące wyników Syft, aby znaleźć określone pakiety i repozytoria, które ich używają. Aby uzyskać wskazówki, zobacz Wykonywanie zapytań dotyczących zestawienia składników oprogramowania.
Repozytorium wymaga pliku blokującego. W przeciwnym razie można znaleźć tylko bezpośrednie zależności.
Ograniczenie rozmiaru SBOM jest ograniczone do 1 MB. Jeśli istnieje wiele zidentyfikowanych pakietów, pozyskiwanie danych do mapy chmury zakończy się niepowodzeniem.
Włączenie SBOM nie jest konfigurowalne ani możliwe do pobrania. SBOM jest generowany podczas każdego skanowania bezagentowego.
Limit czasu jest ustawiony na 15 minut dla uruchomienia narzędzia SBOM.
Wyłączenie skanowania kodu bez agenta nie powoduje usunięcia zaleceń dotyczących SBOM.