Co to jest skanowanie kodu?

Zakończone

Skanowanie kodu używa języka CodeQL do analizowania kodu w repozytorium GitHub w celu znalezienia luk w zabezpieczeniach i błędów kodowania. Skanowanie kodu jest dostępne dla wszystkich repozytoriów publicznych oraz repozytoriów prywatnych należących do organizacji, w których włączono usługę GitHub Advanced Security. Jeśli skanowanie kodu wykryje potencjalną lukę w zabezpieczeniach lub błąd w kodzie, usługa GitHub wyświetli alert na karcie Zabezpieczenia repozytorium. Po naprawieniu kodu, który wyzwolił alert, usługa GitHub zamyka alert.

Skanowanie kodu umożliwia znajdowanie, klasyfikowanie i określanie priorytetów poprawek istniejących problemów w kodzie. Skanowanie kodu uniemożliwia również deweloperom wprowadzanie nowych problemów. Skanowanie można zaplanować przez określone dni i godziny lub wyzwalać skanowania w przypadku wystąpienia określonego zdarzenia w repozytorium, takiego jak wypychanie.

W tej lekcji dowiesz się więcej na temat języka CodeQL, trzech opcji konfigurowania skanowania kodu oraz sposobu dodawania przepływu pracy CodeQL do repozytorium.

Informacje o skanowaniu kodu za pomocą języka CodeQL

CodeQL to aparat analizy kodu, opracowany w usłudze GitHub w celu zautomatyzowania kontroli zabezpieczeń. Kod można analizować przy użyciu języka CodeQL i wyświetlać wyniki jako alerty skanowania kodu. Istnieją trzy główne sposoby konfigurowania analizy codeQL na potrzeby skanowania kodu:

  • Użyj domyślnej konfiguracji, aby szybko skonfigurować analizę CodeQL na potrzeby skanowania kodu w repozytorium. Domyślna konfiguracja obsługuje wybieranie języków do analizowania, zestawu zapytań do uruchamiania i zdarzeń wyzwalających skanowanie za pomocą opcji ręcznego konfigurowania języków i zestawów zapytań. Ta opcja konfiguracji uruchamia skanowanie kodu jako akcję usługi GitHub.
  • Użyj zaawansowanej konfiguracji, aby dodać przepływ pracy CodeQL bezpośrednio do repozytorium. Dodanie przepływu pracy CodeQL bezpośrednio do repozytorium generuje dostosowywalny plik przepływu pracy, który używa akcji github/codeql-action do uruchomienia interfejsu wiersza polecenia CodeQL jako akcji usługi GitHub.
  • Uruchom interfejs wiersza polecenia CodeQL bezpośrednio w zewnętrznym systemie ciągłej integracji i przekaż wyniki do usługi GitHub.

CodeQL traktuje kod, taki jak dane, co pozwala znaleźć potencjalne luki w zabezpieczeniach w kodzie z większą pewnością niż tradycyjne analizatory statyczne. Wygenerujesz bazę danych CodeQL reprezentującą bazę kodu, a następnie uruchom zapytania CodeQL dla tej bazy danych, aby zidentyfikować problemy w bazie kodu. Wyniki zapytania są wyświetlane jako alerty skanowania kodu w usłudze GitHub podczas korzystania z języka CodeQL ze skanowaniem kodu.

Język CodeQL obsługuje zarówno skompilowane, jak i interpretowane języki, a także może znajdować luki w zabezpieczeniach i błędy w kodzie napisanym w następujących obsługiwanych językach:

  • C lub C++
  • C#
  • Go
  • Java/Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby
  • Swift

W następnej sekcji wyjaśniono, jak dodać przepływ pracy CodeQL do repozytorium. Dowiesz się, jak skonfigurować CodeQL przy użyciu zewnętrznych narzędzi w jednostce Włączanie skanowania kodu za pomocą narzędzi innych firm.

Włączanie języka CodeQL w repozytorium przy użyciu instalatora domyślnego

Jeśli masz uprawnienia do zapisu w repozytorium, możesz skonfigurować lub skonfigurować skanowanie kodu dla tego repozytorium.

Wykonaj następujące kroki, aby skonfigurować skanowanie kodu przy użyciu przepływu pracy funkcji GitHub Actions CodeQL:

  1. Na GitHub.com przejdź do strony głównej repozytorium.

  2. W obszarze nazwy repozytorium wybierz pozycję Zabezpieczenia.

    Zrzut ekranu przedstawiający kartę zabezpieczeń.

  3. Wybierz pozycję Skonfiguruj skanowanie kodu. Jeśli ta opcja nie jest dostępna, poproś właściciela organizacji lub administratora repozytorium o włączenie usługi GitHub Advanced Security.

    Zrzut ekranu przedstawiający przycisk konfigurowania skanowania kodu.

  4. Z listy rozwijanej Konfigurowanie wybierz pozycję Domyślne.

  5. Przejrzyj opcje domyślne. W razie potrzeby wybierz przycisk Edytuj w lewym dolnym rogu nowego okna, aby dostosować sposób uruchamiania języka CodeQL.

    Wyzwalacze on:pull_request i on:push są domyślne do skanowania kodu są przydatne w różnych celach. Więcej informacji na temat tych wyzwalaczy znajdziesz w lekcji Konfigurowanie skanowania kodu .

  6. Wybierz Włącz CodeQL, gdy jesteś gotowy, aby włączyć skanowanie kodu.

    W domyślnym przepływie pracy analizy codeQL skanowanie kodu jest skonfigurowane do analizowania kodu za każdym razem, gdy wypchniesz zmianę do dowolnych chronionych gałęzi lub zgłosisz żądanie ściągnięcia względem gałęzi domyślnej. Po wypchnięciu skanowanie kodu jest uruchamiane automatycznie.

W poprzedniej sekcji włączyliśmy skanowanie kodu przy użyciu domyślnej konfiguracji, która uruchamia skanowanie kodu jako akcję usługi GitHub bez konieczności obsługi pliku przepływu pracy. Druga opcja to Konfiguracja zaawansowana , która generuje domyślny plik przepływu pracy, który można edytować w celu zaawansowanej konfiguracji i innych kroków. Omówimy użycie zaawansowanej konfiguracji do konfigurowania skanowania kodu w dalszej lekcji.

Uruchamianie skanowania kodu za pomocą funkcji GitHub Actions wpływa na miesięczne minuty rozliczeniowe. Jeśli chcesz używać funkcji GitHub Actions poza magazynem lub minutami uwzględnionym na koncie, opłaty będą naliczane za więcej użycia.

Informacje o rozliczeniach dla akcji

Skanowanie kodu używa funkcji GitHub Actions, a każde uruchomienie przepływu pracy skanowania kodu zużywa minuty dla funkcji GitHub Actions. Użycie funkcji GitHub Actions jest bezpłatne zarówno w przypadku repozytoriów publicznych, jak i własnych modułów uruchamiającego. W przypadku repozytoriów prywatnych każde konto usługi GitHub otrzymuje określoną liczbę bezpłatnych minut i miejsca do magazynowania, w zależności od produktu używanego z kontem. Limity wydatków kontrolują użycie wykraczające poza uwzględnione kwoty. Jeśli jesteś klientem rozliczanym co miesiąc, twoje konto ma domyślny limit wydatków wynoszący zero dolarów amerykańskich (USD), co uniemożliwia dodatkowe użycie minut lub magazynu dla repozytoriów prywatnych poza kwotami zawartymi w ramach konta. Jeśli płacisz konto na podstawie faktury, twoje konto będzie mieć nieograniczony domyślny limit wydatków. Minuty są resetowane co miesiąc, a użycie magazynu nie jest wykonywane.