Konfigurowanie skanowania kodu
Możesz skonfigurować sposób skanowania kodu w usłudze GitHub w projekcie pod kątem luk w zabezpieczeniach i błędów. Po wybraniu własnej konfiguracji oszczędzasz czas i decydujesz o najlepszej częstotliwości skanowania kodu dla projektu. W tej lekcji poznasz podstawy konfiguracji skanowania kodu. Dowiesz się również, jak skonfigurować częstotliwość skanowania i zaplanować je tak, aby najlepiej pasowały do potrzeb związanych z repozytorium i programowaniem.
Jak omówiono w poprzednich lekcjach, możesz uruchamiać skanowanie kodu w usłudze GitHub, przy użyciu funkcji GitHub Actions lub z systemu ciągłej integracji. Wybranie opcji Konfiguracja zaawansowana w usłudze GitHub generuje dostosowywalny plik przepływu pracy, który można następnie zatwierdzić bezpośrednio w repozytorium. Zazwyczaj nie trzeba edytować tego przepływu pracy. Jednak w razie potrzeby możesz dostosować niektóre ustawienia.
Na przykład możesz edytować przepływ pracy analizy CodeQL w usłudze GitHub, aby określić częstotliwość skanowania, języków lub katalogów do skanowania oraz wyszukiwania skanowania kodu CodeQL w kodzie. Może być również konieczne edytowanie przepływu pracy analizy CodeQL, jeśli używasz określonego zestawu poleceń do skompilowania kodu. Analiza CodeQL to tylko jeden typ skanowania kodu, który można wykonać w usłudze GitHub. Witryna GitHub Marketplace zawiera kilka innych przepływów pracy skanowania kodu.
Przełączanie z domyślnej na zaawansowaną konfigurację skanowania kodu
Jeśli masz już repozytorium skonfigurowane do korzystania ze skanowania kodu przy użyciu domyślnej metody konfiguracji, możesz przełączyć się na użycie konfiguracji Zaawansowane w ustawieniach. Przejdź do sekcji Skanowanie kodu w obszarze Ustawienia > Zabezpieczenia i analiza kodu, a następnie wybierz ikonę przepełnienia trzech kropek (...). Z listy rozwijanej wybierz pozycję Przełącz na zaawansowane. Następnie postępuj zgodnie z instrukcjami, aby wyłączyć CodeQL i ponownie je włączyć za pomocą pliku przepływu pracy utworzonego przez zaawansowaną konfigurację.
Edytowanie przepływu pracy skanowania kodu
Usługa GitHub zapisuje pliki przepływu pracy w katalogu .github/workflows repozytorium. Możesz znaleźć dodany przepływ pracy, wyszukując jego nazwę pliku. Na przykład domyślnie plik przepływu pracy skanowania kodu CodeQL jest nazywany codeql-analysis.yml.
Wykonaj następujące kroki, aby edytować plik przepływu pracy:
Aby otworzyć edytor przepływu pracy, wybierz ikonę Edytuj w prawym górnym rogu widoku pliku.
Wprowadź zmiany.
Po zmodyfikowaniu pliku wybierz pozycję Zatwierdź zmiany i ukończ formularz Zatwierdź zmiany. Możesz zatwierdzić bezpośrednio w bieżącej gałęzi lub utworzyć nową gałąź i uruchomić żądanie ściągnięcia.
Zapoznaj się z poniższymi sekcjami, aby zapoznać się z niektórymi typowymi opcjami konfiguracji skanowania kodu.
Konfigurowanie częstotliwości
Typową edycją pliku przepływu pracy jest dostosowanie częstotliwości skanowania kodu. Przepływ pracy analizy CodeQL można skonfigurować tak, aby skanował kod zgodnie z harmonogramem lub kiedy określone zdarzenia wystąpią w repozytorium. Możesz również edytować plik przepływu pracy, aby skanować kod, gdy ktoś wypchnie zmianę i za każdym razem, gdy zostanie utworzone żądanie ściągnięcia. Dostosowanie tej częstotliwości uniemożliwia deweloperom wprowadzanie nowych luk w zabezpieczeniach i błędów w kodzie. Skanowanie kodu zgodnie z harmonogramem informuje o najnowszych lukach w zabezpieczeniach i błędach wykrytych przez usługę GitHub, badaczy zabezpieczeń i społeczności. Nawet jeśli deweloperzy nie utrzymują aktywnie repozytorium.
Skanowanie przy wypychaniu
Domyślnie przepływ pracy analizy CodeQL używa on:push zdarzenia do wyzwalania skanowania kodu przy każdym wypchnięciu do domyślnej gałęzi repozytorium i wszystkich chronionych gałęzi. Aby skanowanie kodu było wyzwalane w określonej gałęzi, przepływ pracy musi istnieć w tej gałęzi. Jeśli skanujesz podczas wypychania, wyniki pojawią się na karcie Zabezpieczenia dla twojego repozytorium.
Ponadto, gdy on:push skanowanie zwróci wynik, który można zamapować na otwarte żądanie ściągnięcia, te alerty są automatycznie wyświetlane w żądaniu ściągnięcia w tym samym miejscu co inne alerty żądania ściągnięcia. Alerty są identyfikowane przez porównanie istniejącej analizy gałęzi z analizą gałęzi docelowej.
Skanowanie w żądaniu ściągnięcia
Domyślny przepływ pracy analizy CodeQL używa pull_request zdarzenia do wyzwalania skanowania kodu w żądaniach ściągnięcia przeznaczonych dla gałęzi domyślnej. Jeśli żądanie ściągnięcia pochodzi z prywatnego rozwidlenia, zdarzenie jest wyzwalane tylko wtedy, pull_request gdy w ustawieniach repozytorium wybrano opcję "Uruchom przepływy pracy z żądań ściągnięcia rozwidlenia". Jeśli skanujesz żądania ściągnięcia, wyniki będą wyświetlane jako alerty w czeku żądania ściągnięcia.
Jeśli używasz pull_request wyzwalacza, skonfigurowanego do skanowania zatwierdzenia scalania żądania ściągnięcia, a nie zatwierdzenia głównego, generuje bardziej wydajne i dokładne wyniki niż skanowanie nagłówka gałęzi na każdym wypchnięciu. Jeśli jednak używasz systemu ciągłej integracji/ciągłego wdrażania, którego nie można skonfigurować do wyzwalania żądań ściągnięcia, nadal możesz użyć on:push wyzwalacza, aby skanowanie kodu mapować wyniki w celu otwierania żądań ściągnięcia w gałęzi i dodaje alerty jako adnotacje do żądania ściągnięcia.
Definiowanie ważności powodujących niepowodzenie sprawdzania żądania ściągnięcia
Domyślnie alerty o poziomie Error ważności CriticalHigh lub ważności zabezpieczeń lub powodują niepowodzenie sprawdzania żądań ściągnięcia. Niepowodzenia pull requestów nie zatrzymują skanowania kodu, ale stanowią przeszkodę przy próbie scalenia kodu. Listę błędów żądań ściągnięcia można znaleźć na karcie Alerty skanowania kodu w obszarze Zabezpieczenia repozytorium. W ustawieniach repozytorium można zmienić poziomy ważności alertów i ważności zabezpieczeń, które powodują niepowodzenie sprawdzania żądania ściągnięcia.
Na GitHub.com przejdź do strony głównej repozytorium. W obszarze nazwy repozytorium wybierz pozycję Ustawienia.
Na lewym pasku bocznym wybierz pozycję Zabezpieczenia i analiza kodu.
W sekcji Skanowanie kodu w obszarze Reguły ochrony użyj menu rozwijanego, aby wybrać poziom surowości, który ma powodować niepowodzenie sprawdzania żądania ściągnięcia.
Unikaj niepotrzebnych skanów żądań ściągnięcia
Możesz uniknąć wyzwalania skanowania kodu dla określonych żądań ściągnięcia przeznaczonych dla gałęzi domyślnej, niezależnie od tego, które pliki zostały zmienione. To ustawienie można skonfigurować, określając on:pull_request:paths-ignore lub on:pull_request:paths w przepływie pracy skanowania kodu. Jeśli na przykład jedynymi zmianami w żądaniu ściągnięcia są pliki z rozszerzeniami .md plików lub .txt możesz użyć następującej paths-ignore tablicy.
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
paths-ignore:
- '**/*.md'
- '**/*.txt'
Dostosowywanie harmonogramu skanowania
Jeśli używasz domyślnego przepływu pracy analizy CodeQL, przepływ pracy skanuje kod w repozytorium raz w tygodniu w losowo wygenerowanym dniu i czasie, oprócz skanów wyzwalanych przez zdarzenia. Aby dostosować ten harmonogram, edytuj cron wartość w przepływie pracy.
Poniższy przykład przedstawia przepływ pracy analizy CodeQL dla repozytorium z domyślną gałęzią o nazwie i jedną chronioną gałęzią o nazwie mainprotected:
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
schedule:
- cron: '20 14 * * 1'
To skanowanie przepływu pracy:
- Każde wypychanie do gałęzi domyślnej i chronionej gałęzi
- Każde żądanie ściągnięcia do gałęzi domyślnej
- Gałąź domyślna co poniedziałek o godzinie 14:20 UTC