Wat is codescans?
Codescans maken gebruik van CodeQL om de code in een GitHub-opslagplaats te analyseren om beveiligingsproblemen en coderingsfouten te vinden. Codescans zijn beschikbaar voor alle openbare opslagplaatsen en voor privéopslagplaatsen die eigendom zijn van organisaties waarvoor GitHub Advanced Security is ingeschakeld. Als codescans een mogelijk beveiligingsprobleem of een mogelijke fout in uw code vinden, wordt in GitHub een waarschuwing weergegeven op het tabblad Beveiliging van de opslagplaats. Nadat u de code hebt hersteld die de waarschuwing heeft geactiveerd, sluit GitHub de waarschuwing.
U kunt codescans gebruiken om oplossingen voor bestaande problemen in uw code te vinden, te classificeren en er prioriteit aan te geven. Met codescans kunnen ontwikkelaars ook geen nieuwe problemen introduceren. U kunt scans plannen voor bepaalde dagen en tijden of scans activeren wanneer een specifieke gebeurtenis plaatsvindt in de opslagplaats, zoals een push.
In deze les leert u meer over CodeQL, de drie opties voor het instellen van codescans en het toevoegen van de CodeQL-werkstroom aan uw opslagplaats.
Codescans met CodeQL
CodeQL is de gitHub-engine voor codeanalyse die is ontwikkeld om beveiligingscontroles te automatiseren. U kunt uw code analyseren met behulp van CodeQL en de resultaten weergeven als waarschuwingen voor codescans. Er zijn drie belangrijke manieren om CodeQL-analyse in te stellen voor codescans:
- Gebruik de standaardinstelling om codeQL-analyse snel te configureren voor codescans in uw opslagplaats. De standaardinstelling verwerkt het kiezen van de talen die moeten worden geanalyseerd, het querypakket dat moet worden uitgevoerd en gebeurtenissen die scans activeren met de optie om de talen en querysuites handmatig te configureren. Met deze instellingsoptie wordt codescans uitgevoerd als een GitHub Action.
- Gebruik geavanceerde instellingen om de CodeQL-werkstroom rechtstreeks aan uw opslagplaats toe te voegen. Als u de CodeQL-werkstroom rechtstreeks toevoegt aan uw opslagplaats, wordt een aanpasbaar werkstroombestand gegenereerd, dat gebruikmaakt van de github-/codeql-actie om de CodeQL CLI uit te voeren als een GitHub-actie.
- Voer de CodeQL CLI rechtstreeks uit in een extern CI-systeem en upload de resultaten naar GitHub.
CodeQL behandelt code als gegevens, zodat u potentiële beveiligingsproblemen in uw code kunt vinden met meer vertrouwen dan traditionele statische analyses. U genereert een CodeQL-database die uw codebasis vertegenwoordigt en voert vervolgens CodeQL-query's uit op die database om problemen in de codebasis te identificeren. De queryresultaten worden weergegeven als waarschuwingen voor codescans in GitHub wanneer u CodeQL gebruikt met codescans.
CodeQL ondersteunt zowel gecompileerde als geïnterpreteerde talen en kan beveiligingsproblemen en fouten in code vinden die zijn geschreven in de volgende ondersteunde talen:
- C of C++
- C#
- Ga
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Robijn
- Snel
In de volgende sectie wordt uitgelegd hoe u de CodeQL-werkstroom toevoegt aan uw opslagplaats. U leert hoe u CodeQL instelt met behulp van externe hulpprogramma's in de eenheid Code scannen inschakelen met hulpprogramma's van derden.
CodeQL inschakelen in uw opslagplaats met de standaardinstelling
Als u schrijfmachtigingen voor een opslagplaats hebt, kunt u codescans voor die opslagplaats instellen of configureren.
Volg deze stappen om codescans in te stellen met behulp van de Werkstroom CodeQL GitHub Actions:
Navigeer op GitHub.com naar de hoofdpagina van de opslagplaats.
Selecteer Beveiliging onder de naam van de opslagplaats.
Selecteer Codescan instellen. Als deze optie niet beschikbaar is, vraagt u een eigenaar van de organisatie of opslagplaatsbeheerder om Geavanceerde beveiliging van GitHub in te schakelen.
Selecteer in de vervolgkeuzelijst Instellen de optie Standaard.
Bekijk de standaardopties. Selecteer indien nodig de knop Bewerken in de linkerbenedenhoek van het nieuwe venster om aan te passen hoe CodeQL wordt uitgevoerd.
De
on:pull_requesttriggerson:pushzijn de standaardinstelling voor het scannen van code voor verschillende doeleinden. Meer informatie over deze triggers vindt u in de eenheid Code scannen configureren.Selecteer CodeQL inschakelen zodra u klaar bent om codescans in te schakelen.
In de standaardwerkstroom codeQL-analyse wordt codescan geconfigureerd om uw code te analyseren telkens wanneer u een wijziging naar beveiligde vertakkingen pusht of een pull-aanvraag indient op basis van de standaardbranch. Zodra de push is uitgevoerd, wordt codescan automatisch uitgevoerd.
In de vorige sectie hebben we codescans ingeschakeld met behulp van de standaardinstallatie, waarmee codescans worden uitgevoerd als een GitHub-actie zonder dat u een werkstroombestand hoeft te onderhouden. De andere optie is Geavanceerde installatie, waarmee het standaardwerkstroombestand wordt gegenereerd dat u kunt bewerken voor geavanceerde configuratie en meer stappen. We behandelen het gebruik van de geavanceerde installatie voor het configureren van codescans in een latere eenheid.
Het scannen van code met GitHub Actions is van invloed op uw maandelijkse factureringsminuten. Als u GitHub Actions wilt gebruiken buiten de opslag of minuten die zijn opgenomen in uw account, wordt u gefactureerd voor meer gebruik.
Over facturering voor acties
Codescans maken gebruik van GitHub Actions en elke uitvoering van een werkstroom voor codescans verbruikt minuten voor GitHub Actions. Het gebruik van GitHub Actions is gratis voor zowel openbare opslagplaatsen als zelf-hostende runners. Voor privéopslagplaatsen ontvangt elk GitHub-account een bepaald aantal gratis minuten en opslag, afhankelijk van het product dat met het account wordt gebruikt. Bestedingslimieten bepalen het gebruik buiten de opgenomen bedragen. Als u een maandelijkse klant bent, heeft uw account een standaardbestedingslimiet van nul Amerikaanse dollars (USD), waardoor extra gebruik van minuten of opslag voor privéopslagplaatsen wordt voorkomen buiten de bedragen die zijn opgenomen in uw account. Als u uw account per factuur betaalt, heeft uw account een onbeperkte standaardbestedingslimiet. Minuten worden elke maand opnieuw ingesteld, terwijl het opslaggebruik dat niet doet.