Konfigurer kodescanning

Fuldført

Du kan konfigurere, hvordan GitHub scanner koden i dit projekt for sikkerhedsrisici og fejl. Når du vælger din egen konfiguration, sparer du tid og bestemmer den bedste hyppighed for kodescanning for dit projekt. I dette undermodul lærer du det grundlæggende om konfiguration af kodescanning. Du lærer også, hvordan du konfigurerer hyppigheden af scanninger og planlægger dem, så de passer bedst til dine lager- og udviklingsbehov.

Som vi diskuterede i de forrige enheder, kan du køre kodescanning på GitHub, ved hjælp af GitHub-handlinger eller fra dit kontinuerlige integrationssystem (CI). Hvis du vælger indstillingen Avanceret konfiguration på GitHub, oprettes der en arbejdsprocesfil, der kan tilpasses, og som du derefter kan sende direkte til dit lager. Du behøver normalt ikke at redigere denne arbejdsproces. Men hvis det er nødvendigt, kan du tilpasse nogle af indstillingerne.

Du kan f.eks. redigere GitHubs CodeQL-analysearbejdsproces for at angive hyppigheden af scanninger, de sprog eller mapper, der skal scannes, og hvad CodeQL-kodescanning søger efter i din kode. Du skal muligvis også redigere CodeQL-analysearbejdsprocessen, hvis du bruger et bestemt sæt kommandoer til at kompilere din kode. CodeQL-analyse er blot én type kodescanning, du kan udføre i GitHub. GitHub Marketplace indeholder flere andre arbejdsprocesser til kodescanning.

Skift fra Standard til Konfiguration af avanceret kodescanning

Hvis du allerede har konfigureret et lager til at bruge kodescanning ved hjælp af standardkonfigurationsmetoden, kan du skifte til at bruge avanceret konfiguration i indstillingerne. Gå til afsnittet Kodescanning under Indstillinger > Kodesikkerhed og -analyse, og vælg derefter ikonet for overløb med tre prikker (...). Vælg Skift til avanceret på rullelisten. Følg derefter prompterne for at deaktivere CodeQL, og genaktiver den med den genererede arbejdsprocesfil for den avancerede installation.

Rediger arbejdsproces for kodescanning

GitHub gemmer arbejdsprocesfiler i mappen .github/workflows i dit lager. Du kan finde en arbejdsproces, du har tilføjet, ved at søge efter filnavnet. Som standard kaldes arbejdsprocesfilen for CodeQL-kodescanning f.eks. codeql-analysis.yml.

Følg disse trin for at redigere en arbejdsprocesfil:

  1. Hvis du vil åbne arbejdsproceseditoren, skal du vælge ikonet Rediger i øverste højre hjørne af filvisningen.

    Skærmbillede af knappen Rediger

  2. Foretag dine ændringer.

  3. Når du har redigeret filen, skal du vælge Udfør ændringer og udfylde formularen Bekræft ændringer. Du kan vælge at sende direkte til den aktuelle forgrening eller oprette en ny forgrening og starte en pullanmodning.

    Skærmbillede af formularen Bekræft ændringer.

Gennemse følgende afsnit for at se nogle almindelige konfigurationsindstillinger for kodescanning.

Konfigurer frekvens

En almindelig redigering af arbejdsprocesfilen er at justere hyppigheden af kodescanning. Du kan konfigurere CodeQL-analysearbejdsprocessen til at scanne kode efter en tidsplan, eller når der forekommer bestemte hændelser i et lager. Du kan også redigere arbejdsprocesfilen for at scanne kode, når nogen pusher en ændring, og når der oprettes en pullanmodning. Justering af denne hyppighed forhindrer udviklere i at introducere nye sikkerhedsrisici og fejl i koden. Scanning af kode efter en tidsplan informerer dig om de nyeste sårbarheder og fejl, som GitHub, sikkerhedsforskere og community'et opdager. Selv når udviklere ikke aktivt vedligeholder lageret.

Scan ved push

CodeQL-analysearbejdsprocessen bruger som standard hændelsen on:push til at udløse en kodescanning på hver push til standardgrenen for lageret og eventuelle beskyttede forgreninger. Hvis kodescanning skal udløses på en angivet forgrening, skal arbejdsprocessen findes i den pågældende forgrening. Hvis du scanner på push, vises resultaterne under fanen Sikkerhed for dit lager.

Når en on:push scanning returnerer et resultat, der kan knyttes til en åben pullanmodning, vises disse beskeder desuden automatisk på en pullanmodning på samme sted som andre pullanmodningsbeskeder. Beskederne identificeres ved at sammenligne den eksisterende analyse af forgreningens leder med analysen for destinationsforgreningen.

Scan på pullanmodning

Standardarbejdsprocessen for CodeQL-analyse bruger hændelsen pull_request til at udløse en kodescanning for pullanmodninger, der er målrettet mod standardforgreningen. Hvis en pullanmodning er fra en privat kopi, udløses hændelsen pull_request kun, hvis du har valgt indstillingen "Kør arbejdsprocesser fra pullanmodninger fra kopi" i lagerindstillingerne. Hvis du scanner pullanmodninger, vises resultaterne som beskeder i en pullanmodningskontrol.

Hvis du bruger udløseren pull_request, der er konfigureret til at scanne pullanmodningens bekræftelse af fletning i stedet for bekræftelse af hovedet, giver den mere effektive og nøjagtige resultater end at scanne forgreningshovedet på hvert push. Men hvis du bruger et CI/CD-system, der ikke kan konfigureres til at udløse på pull-anmodninger, kan du stadig bruge udløseren on:push, så kodescanning knytter resultaterne til at åbne pullanmodninger på forgreningen og tilføjer beskederne som anmærkninger på en pullanmodning.

Definer de afstande, der forårsager fejl i pullanmodningskontrol

Som standard er det kun beskeder med alvorsgradsniveauet for Error eller niveauet af Critical eller High, der forårsager en fejl under kontrol af pullanmodninger. Pullanmodningsfejl stopper ikke en kodescanning, men repræsenterer en blokering, når der forsøges at flette kode. Du kan finde listen over pullanmodningsfejl under fanen Beskeder om kodescanning under dit lagers sikkerhed. I indstillingerne for dit lager kan du ændre niveauet af beskedmængder og sikkerhedsafstande, der forårsager en fejl under kontrol af pullanmodninger.

  1. På GitHub.com skal du gå til lagerets hovedside. Under navnet på dit lager skal du vælge Indstillinger.

    skærmbillede af knappen Indstillinger

  2. Vælg Kodesikkerhed og -analyse i venstre margentekst.

    skærmbillede af knappen Kodesikkerhed og -analyse.

  3. I afsnittet Kodescanning under Beskyttelsesregler skal du bruge rullemenuen til at vælge det alvorsgradsniveau, du vil udløse en fejl ved kontrol af pullanmodninger.

    skærmbillede af rullemenuen med besked om alvorsgrad for kodescanning.

Undgå unødvendige scanninger af pullanmodninger

Det kan være en god idé at undgå, at en kodescanning udløses på bestemte pullanmodninger, der er målrettet mod standardforgreningen, uanset hvilke filer der er blevet ændret. Du kan konfigurere denne indstilling ved at angive on:pull_request:paths-ignore eller on:pull_request:paths i kodescanningsarbejdsprocessen. Hvis de eneste ændringer i en pullanmodning f.eks. er for filer med filtypenavnene .md eller .txt kan du bruge følgende paths-ignore matrix.

on:
   push:
      branches: [main, protected]
   pull_request:
      branches: [main]
      paths-ignore:
         - '**/*.md'
         - '**/*.txt'

Juster tidsplan for scanning

Hvis du bruger standardarbejdsprocessen for CodeQL-analyse, scanner arbejdsprocessen koden i dit lager én gang om ugen på en tilfældigt genereret dag og et tilfældigt tidspunkt ud over de scanninger, der udløses af hændelser. Hvis du vil justere denne tidsplan, skal du redigere værdien cron i arbejdsprocessen.

I følgende eksempel vises en CodeQL-analysearbejdsproces for et lager med en standardgren med navnet main og én beskyttet forgrening kaldet protected:

on:
   push:
      branches: [main, protected]
   pull_request:
      branches: [main]
   schedule:
      - cron: '20 14 * * 1'

Denne arbejdsproces scanner:

  • Hver push til standardgrenen og den beskyttede forgrening
  • Hver pullanmodning til standardgrenen
  • Standardgrenen hver mandag kl. 14:20 UTC