Blog Data & AI

GitHub Advanced Security: Shifting Security Left

Een van de meest baanbrekende aspecten van GitHub Enterprise is de aanpak op het gebied van applicatiebeveiliging.

In plaats van beveiliging te beschouwen als iets dat pas aan het einde van de SDLC plaatsvindt integreert GitHub Advanced Security (GHAS) beveiliging rechtstreeks in de ontwikkelingsworkflow.

Kwetsbaarheden worden opgespoord waar ze ontstaan: in de code, in het pull-request, voordat er iets een gedeelde branch of een productieomgeving bereikt.

Gregor Suttie

Auteur

Gregor Suttie Azure Architect & MVP

Leestijd 7 minuten Gepubliceerd: 12 augustus 2026

In dit artikel lees je uitgebreid welke onderdelen GitHub Advanced Security bevat, hoe ze werken, hoe ze zich verhouden tot de securitytools in Azure DevOps en hoe je ze effectief uitrolt binnen een developmentorganisatie.

 

Wat is GitHub Advanced Security?

GitHub Advanced Security is een suite met securityfeatures voor GitHub Enterprise-klanten. Het bestaat uit drie kernfunctionaliteiten:

  1. Code Scanning: statische analyse van broncode om kwetsbaarheden en fouten in code te detecteren.
  2. Secret Scanning: detectie van credentials, API-keys en andere secrets die in repositories zijn opgenomen.
  3. Dependency Review: analyse van third-party dependencies op bekende kwetsbaarheden.

Naast deze specifieke GitHub Advanced Security-features biedt GitHub Enterprise ook:

  • Dependabot: geautomatiseerde pull requests om kwetsbare of verouderde dependencies bij te werken.
  • Security Overview: een organisatiebreed dashboard dat inzicht geeft in de securitystatus van alle repositories.
  • Security Advisories: afgeschermde omgevingen waarin teams kwetsbaarheden kunnen bespreken en oplossen voordat ze openbaar worden gemaakt.
Github Whitepaper Cover NL2

Bij Azure DevOps blijven of migreren naar GitHub?

Bekijk de verschillen, de rol van Copilot, Actions en beveiliging, en de migratieopties.

Lees de whitepaper

Code Scanning met CodeQL

CodeQL is GitHub's engine voor codeanalyse en de standaardscanner achter de code scanning-functionaliteit van GitHub. CodeQL behandelt code als data: de code wordt omgezet in een doorzoekbare database, waarna semantische analyses worden uitgevoerd om kwetsbaarheden te vinden.

CodeQL ondersteunt een breed scala aan programmeertalen, waaronder:

  • JavaScript
  • TypeScript
  • Python
  • Java
  • C#
  • Go
  • Ruby
  • C
  • C++

Voor de meeste talen is het inschakelen van code scanning zo eenvoudig als het toevoegen van de officiële CodeQL-workflow aan je repository.

 

Code Scanning instellen

De standaardconfiguratie kan met één klik rechtstreeks worden ingeschakeld via het tabblad Security van de repository. Voor meer controle kun je ook een workflowbestand gebruiken:

name: CodeQL Analysis

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '0 2 * * 1'  # Weekly scan every Monday at 2am

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      actions: read
      contents: read

    strategy:
      matrix:
        language: [csharp, javascript-typescript]

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
          queries: security-extended  # Run extended security query suite

      - name: Autobuild
        uses: github/codeql-action/autobuild@v3

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3
        with:
          category: "/language:${{ matrix.language }}"

 

Wat detecteert CodeQL?

De query suites van CodeQL detecteren verschillende soorten kwetsbaarheden, waaronder:

  • Injectiekwetsbaarheden: SQL-injection, command injection en path traversal.
  • Cross-site scripting: reflected, stored en DOM-based XSS.
  • Onveilige deserialisatie: onveilige patronen voor het deserialiseren van objecten.
  • Cryptografische problemen: het gebruik van zwakke algoritmes en onveilige random number generation.
  • Taint tracking: end-to-end analyse van datastromen, van onbetrouwbare input tot gevoelige onderdelen van de applicatie.
  • Zwaktes in authenticatie: hardcoded credentials en ontbrekende authenticatiecontroles.

De resultaten verschijnen rechtstreeks in pull requests als annotaties op de betreffende regels code en in het tabblad Security van de repository. Ze kunnen ook branch protection rules activeren die voorkomen dat code wordt gemerged totdat bevindingen zijn opgelost of bewust zijn afgewezen.

 

Third-party scanners via SARIF

Code scanning is niet beperkt tot CodeQL. GitHub ondersteunt de SARIF-standaard (Static Analysis Results Interchange Format), waardoor iedere SARIF-compatible scanner resultaten naar GitHub kan uploaden.

Dit geldt onder andere voor tools zoals Semgrep, Snyk, Checkmarx, Veracode en SonarQube. Alle bevindingen worden samengebracht in hetzelfde Security-tabblad, zodat je één overzicht houdt, ongeacht welke scanner de resultaten heeft gegenereerd.

 

Secret Scanning

Secret scanning detecteert automatisch secrets, API-keys, tokens, connection strings, private keys en andere credentials die in een repository zijn opgenomen. Daarbij wordt niet alleen gekeken naar de huidige staat van de repository, maar ook retrospectief naar de volledige commit history.

 

Hoe werkt Secret Scanning?

GitHub onderhoudt detectiepatronen voor meer dan 200 soorten secrets van providers zoals AWS, Azure, Google Cloud, Stripe, Twilio, Slack en vele andere. Wanneer een secret wordt gevonden dat overeenkomt met een van deze patronen:

  1. worden de repository owner en security manager gewaarschuwd;
  2. stelt GitHub bij een aangesloten provider de provider rechtstreeks op de hoogte, zodat het token automatisch kan worden ingetrokken;
  3. verschijnt de bevinding in het Security-tabblad van de repository onder Secret Scanning alerts.

 

Push Protection

Een van de krachtigste onderdelen van Secret Scanning is Push Protection. In plaats van secrets pas te detecteren nadat ze zijn gecommit, blokkeert Push Protection de push al tijdens git push wanneer in nieuwe commits een secret wordt gevonden.

De developer krijgt een foutmelding te zien waarin het betreffende secret wordt aangegeven. De push blijft geblokkeerd totdat het secret is verwijderd of de developer de bypass expliciet bevestigt. Die bypass wordt vastgelegd voor auditdoeleinden.

remote: Push rejected. Secret scanning found a potential secret.
remote:
remote: To push this commit, please remove the secret detected in:
remote:   file: src/appsettings.json
remote:   line: 12
remote:   type: Azure Storage Account Key


Zo voorkom je dat een secret überhaupt in de repository terechtkomt, in plaats van achteraf afhankelijk te zijn van detectie en rotatie.

 

Custom patterns

Voor organisatiespecifieke secrets, zoals interne service tokens of eigen API-formaten, ondersteunt GitHub custom secret scanning patterns op basis van regular expressions. Deze kunnen worden toegepast op repository-, organisatie- of enterprise-niveau.

 

Dependency Review en Dependabot

Third-party dependencies zijn een van de meest voorkomende bronnen van kwetsbaarheden in moderne applicaties. GitHub biedt twee aanvullende tools om dit risico te beperken.

 

Dependency Review

De Dependency Review action controleert pull requests die dependencybestanden aanpassen, zoals package.json, *.csproj, requirements.txt en go.mod. Vervolgens wordt gecontroleerd of nieuw toegevoegde dependencies bekende kwetsbaarheden bevatten in de GitHub Advisory Database.

- name: Dependency Review
  uses: actions/dependency-review-action@v4
  with:
    fail-on-severity: moderate
    deny-licenses: GPL-2.0, AGPL-3.0

Hiermee kun je voorkomen dat pull requests worden gemerged wanneer ze een kwetsbare dependency boven een ingestelde severity threshold introduceren, of een dependency toevoegen met een licentie die de organisatie niet toestaat.

 

Dependabot Alerts en Security Updates

Dependabot monitort continu de dependency graph van iedere repository en genereert alerts wanneer een dependency een bekende CVE bevat.

Dependabot gaat verder dan alleen signaleren. Het kan automatisch pull requests openen om een kwetsbare dependency bij te werken naar een gepatchte versie.

Dependabot version updates breidt dit uit naar proactief onderhoud. Dependencies kunnen volgens een ingestelde planning automatisch worden bijgewerkt, waardoor het verschil tussen de gebruikte en meest recente versies kleiner blijft.

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: npm
    directory: /
    schedule:
      interval: weekly
    open-pull-requests-limit: 10
    reviewers:
      - my-org/security-team

 

Security Overview: inzicht over de hele organisatie

Voor securityteams en engineering managers biedt GitHub Enterprise een Security Overview-dashboard op organisatie- en enterprise-niveau. Dit geeft één overzicht van:

  • welke repositories GHAS-features hebben ingeschakeld;
  • openstaande Code Scanning alerts op basis van severity en leeftijd;
  • Secret Scanning alerts en de status van de oplossing;
  • het aantal Dependabot alerts en de snelheid waarmee deze worden opgelost.

Hiermee kunnen teams prioriteiten stellen, repositories met het grootste securityrisico identificeren en de security posture in de tijd volgen, zonder GitHub te verlaten.

 

Vergelijking met securitymogelijkheden in Azure DevOps

Azure DevOps bevat geen native static analysis, Secret Scanning of Dependency Review. Organisaties die Azure DevOps gebruiken, zijn hiervoor meestal afhankelijk van:

  • third-party extensies uit de Azure DevOps Marketplace, zoals SonarQube, WhiteSource/Mend en Checkmarx;
  • aparte stappen in CI-pipelines waarin scanners draaien en resultaten extern worden gerapporteerd;
  • handmatige processen voor het detecteren en roteren van gelekte secrets.

Dit versnipperde model betekent dat resultaten verspreid staan over meerdere tools, integraties extra maatwerk vereisen en er geen centraal overzicht is van de security posture.

GitHub Advanced Security biedt deze functionaliteiten native, waarbij resultaten direct zichtbaar zijn in de context waarin developers al werken.

 

GitHub Advanced Security uitrollen binnen een organisatie

Voor grotere organisaties met veel repositories is een gefaseerde uitrol aan te raden:

  1. Schakel GHAS standaard in voor nieuwe repositories: configureer de organisatie zo dat GitHub Advanced Security automatisch wordt ingeschakeld voor nieuw aangemaakte repositories.
  2. Schakel Push Protection organisatiebreed in: dit levert veel securitywaarde op met relatief weinig impact op developers en voorkomt dat secrets überhaupt worden gecommit.
  3. Start met Code Scanning op repositories met een hoger risico: begin bijvoorbeeld met repositories die authenticatie, betalingen of gevoelige data verwerken.
  4. Beoordeel en prioriteer bestaande alerts: bekijk vóór een brede uitrol de bestaande backlog en richt een duidelijk proces voor triage in.
  5. Integreer met je bestaande securityproces: koppel GitHub Security alerts via webhooks of de GitHub API aan je SIEM, ticketingsysteem of andere security operations-tools.

 

Conclusie

GitHub Advanced Security verandert de manier waarop organisaties application security aanpakken. In plaats van alleen achteraf te scannen, verschuift de focus naar preventie die rechtstreeks in de developmentworkflow is ingebouwd.

De combinatie van semantische analyse met CodeQL, Push Protection voor secrets en geautomatiseerde remediation met Dependabot biedt securityfunctionaliteit waarvoor je in Azure DevOps meerdere afzonderlijke tools nodig zou hebben.

In het laatste artikel van deze serie kijken we naar misschien wel een van de interessantste ontwikkelingen binnen GitHub Enterprise: GitHub Copilot en de enterprise-functionaliteiten die daarbij horen.

Marc Bosgoed

Klaar om over te stappen van Azure DevOps naar GitHub?

Migreer naar GitHub via een hybride aanpak of kies voor een volledige migratie. Met minimale verstoring, ingebouwde beveiliging en duidelijk beheer.

Lees meer over de migratie naar GitHub