Personenbezogene Daten (PII) sollten nicht hardcoded im Quellcode gespeichert werden. GitLab Secret Detection mit Custom Rulesets ermöglicht automatisierte Erkennung solcher Daten. Dieses Tutorial zeigt die Vorgehensweise: systematische Ruleset-Erstellung, Test-Szenarien und KI-gestützte Regex-Generierung mit GitLab Duo Chat.
GitLab Secret Detection verstehen
GitLab Secret Detection ist ein Security-Scanning-Feature, das in die GitLab-CI/CD-Pipeline integriert ist. Die Funktion scannt Codebasen automatisch und identifiziert hardcodierte Secrets, Credentials und personenbezogene Daten, die nicht im Repository gespeichert werden sollten.
Zentrale Vorteile
- Data-Breach-Prävention: Secrets werden erkannt, bevor sie committed werden.
- Automatisiertes Scanning: Läuft als Teil der CI/CD-Pipeline ohne manuelle Eingriffe.
- Custom Rules: Erweiterung der Detection-Capabilities durch eigene Pattern.
- Compliance-Unterstützung: Erfüllt regulatorische Anforderungen wie DSGVO, HIPAA und weitere Datenschutzgesetze.
Custom Rulesets für PII-Detection erstellen
GitLabs Standard-Secret-Detection deckt gängige Secrets wie API-Keys und Passwörter ab. Für unternehmensspezifische PII-Typen lassen sich Custom Rules erstellen.
Zum Einstieg ein neues GitLab-Projekt anlegen und die folgenden Schritte ausführen. Beispiele finden sich in der PII Demo Application.
Schritt 1: Secret Detection aktivieren
Secret Detection in der .gitlab-ci.yml-Datei aktivieren:
include:
- template: Security/Secret-Detection.gitlab-ci.yml
secret_detection:
variables:
SECRET_DETECTION_EXCLUDED_PATHS: "rules,.gitlab,README.md,LICENSE"
SECRET_DETECTION_HISTORIC_SCAN: "true"
Schritt 2: Custom-Ruleset-Datei erstellen
Das Verzeichnis und die Datei rules/pii-data-extension.toml anlegen. Diese enthält Regex-Pattern für PII-Daten sowie eine Allowlist für Pattern, die ignoriert werden sollen. Nachfolgend Pattern für US-Reisepassnummern, US-Telefonnummern und E-Mail-Adressen:
[extend]
# Extends default packaged ruleset, NOTE: do not change the path.
path = "/gitleaks.toml"
# Patterns to ignore (used for tests)
[allowlist]
description = "allowlist of patterns and paths to ignore in detection"
regexTarget = "match"
regexes = ['''555-555-5555''', '''[email protected]''']
paths = ['''(.*?)(jpg|gif|doc|pdf|bin|svg|socket)''']
# US Passport Number (USA)
[[rules]]
id = "us_passport_detection"
title = "US Passport Number"
description = "Detects US passport numbers"
regex = '''\b[A-Z]{1,2}[0-9]{6,9}\b'''
keywords = ["passport"]
# Phone Number (USA)
[[rules]]
id = "us_phone_number_detection_basic"
title = "US Phone Number"
description = "Detects US phone numbers in basic format"
regex = '''\b\d{3}-\d{3}-\d{4}\b'''
keywords = ["phone", "mobile"]
# Email Address
[[rules]]
id = "email_address"
title = "Email Address"
description = "Detects email addresses"
regex = '''[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'''
keywords = ["email", "e-mail"]
Schritt 3: Secret Detection mit Custom-Ruleset-Datei erweitern
Das Verzeichnis und die Datei .gitlab/secret-detection-ruleset.toml im Repository-Root anlegen. Diese Datei ermöglicht die Erweiterung der Standardkonfiguration mit der PII-Rules-Datei und überschreibt den Schweregrad erkannter Vulnerabilities (Standard-Schweregrad ist Critical).
# Define the pii rules to add to default configuration
[[secrets.passthrough]]
type = "file"
target = "gitleaks.toml"
value = "rules/pii-data-extension.toml"
# Overwrite Phone Number (USA) PII Severity
[[secrets.ruleset]]
[secrets.ruleset.identifier]
type = "gitleaks_rule_id"
value = "us_phone_number_detection_basic"
[secrets.ruleset.override]
severity = "Medium"
# Overwrite Email Address PII Severity
[[secrets.ruleset]]
[secrets.ruleset.identifier]
type = "gitleaks_rule_id"
value = "email_address"
[secrets.ruleset.override]
severity = "Low"
Schritt 4: Änderungen committen
Die Änderungen aus den obigen Schritten zum Projekt hinzufügen:
cd /path/to/your/project
git add .
git commit -m "Add PII data ruleset and Secret Scanning"
git push
Nach dem Commit läuft Secret Detection im Default-Branch.
Schritt 5: PII-Data-Detection testen
Nach der Konfiguration des Secret-Detection-Scanners erfolgt ein Test, um zu prüfen, ob der Scanner die neuen Custom-Pattern erkennt. Dazu einen Merge Request erstellen, der eine neue Datei customer-data.yaml mit folgendem Inhalt hinzufügt:
customers:
test_user:
phone_number: 555-555-555
email: [email protected]
justin_case:
phone_number: 512-123-4567
passport_number: A12345678
email: [email protected]
chris_p_bacon:
phone_number: 305-123-4567
passport_number: B09876543
email: [email protected]
Der Scanner führt nun Folgendes aus:
- Ignoriert
phone_numberundemailvontest_user, da die Pattern in der Allowlist enthalten sind. - Erkennt sechs potenzielle Vulnerabilities aufgrund der Informationen für
justin_caseundchris_p_bacon:- US-Reisepassnummer mit Schweregrad
Critical(Standard) - US-Telefonnummer mit Schweregrad
Medium(Override) - E-Mail-Adresse mit Schweregrad
Low(Override) - Daten aus Rules Override werden zu jeder Vulnerability hinzugefügt
- US-Reisepassnummer mit Schweregrad
Nach dem Submit des Merge Requests läuft der Secret-Detection-Scanner und liefert folgende Ergebnisse:

Bei Klick auf eine Vulnerability werden detaillierte Vulnerability-Daten angezeigt, basierend auf der Konfiguration in den neu erstellten Rules:

Diese Daten ermöglichen die Beurteilung der Validität der vorhandenen Daten und entsprechende Maßnahmen.
Weitere Konfigurationsmöglichkeiten für Custom Rulesets existieren. Beispielsweise lassen sich Rules remote auf mehrere Projekte anwenden, um die Duplizierung der Rules-Datei zu vermeiden. Details in der Secret Detection Configuration Documentation.
Gängige PII-Typen berücksichtigen
Beim Erstellen von Custom Rulesets Pattern für folgende PII-Typen berücksichtigen:
- Sozialversicherungsnummern
- Kreditkartennummern
- Führerscheinnummern
- Reisepassnummern
- E-Mail-Adressen
- Telefonnummern
- IP-Adressen
- Physische Adressen
- Patientenaktennummern
GitLab Duo Chat für Pattern-Erstellung nutzen
Die Erstellung effektiver Regex-Pattern kann komplex sein. GitLab Duo Chat unterstützt dabei. GitLab Duo Chat ist ein KI-gestützter Assistent, der Entwicklungsabläufe durch kontextuelle, konversationelle KI beschleunigt. Chat ist für jeden Nutzer mit einem zugewiesenen GitLab-Duo-Seat verfügbar.
GitLab Duo Chat zur Generierung von PII-Regex-Pattern einsetzen
- GitLab Duo Chat aufrufen: Oben rechts GitLab Duo Chat auswählen. Ein Drawer öffnet sich auf der rechten Bildschirmseite.
- Chat-Eingabe formulieren: Einen Prompt in die Chat-Eingabebox eingeben und Enter drücken oder Senden auswählen:
I need a regex pattern to detect Canadian Zip Codes in our codebase for secret detection
- Review und Verfeinerung: GitLab Duo Chat schlägt ein Regex-Pattern vor, das überprüft und verfeinert werden kann:
Canadian postal codes follow the format "A1A 1A1" (where A is a letter and 1 is a digit). Here's a regex pattern that will detect Canadian postal codes in your codebase, accounting for both spaced and non-spaced formats:
[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d
This pattern matches:
* A letter, followed by a digit, followed by a letter
* An optional space or hyphen
* A digit, followed by a letter, followed by a digit
If you need a more strict pattern that only matches uppercase letters (as official Canadian postal codes use), you can use:
[A-Z]\d[A-Z][ -]?\d[A-Z]\d
For implementation in a secret detection tool, you might want to add word boundaries to avoid partial matches:
\b[A-Z]\d[A-Z][ -]?\d[A-Z]\d\b
Would you like more details about implementing this in a specific secret detection system?
- Pattern testen: Das Pattern gegen Beispieldaten testen, um korrekte Funktionsweise sicherzustellen. Websites wie https://regex101.com/ ermöglichen die Validierung von Pattern, bevor diese zum Ruleset hinzugefügt werden.
- Zum Ruleset hinzufügen: Nach erfolgreicher Validierung das Pattern zur
rules/pii-data-extension.toml-Datei hinzufügen und Tests durchführen. Dieser Beispiel-Merge Request enthält eine neu hinzugefügte Rule für Canadian Zip Codes basierend auf dem obigen Pattern.
GitLab Duo Chat lässt sich zusätzlich nutzen in:
- GitLab Web IDE (VS Code in the Cloud)
- VS Code mit der GitLab Workflow Extension for VS Code
- JetBrains IDEs mit dem GitLab Duo Plugin for JetBrains
- Visual Studio for Windows mit der GitLab Extension for Visual Studio
In Zukunft lässt sich GitLab Duo Workflow (derzeit in Private Beta) nutzen, um Pattern automatisch zu generieren und direkt aus der IDE zur Codebasis hinzuzufügen. GitLab Duo Workflow ist ein KI-Agent, der KI vom reaktiven Assistenten zum autonomen Contributor transformiert und den Software-Development-Lifecycle optimiert. Mehr zu GitLab Duo Workflow.
Best Practices für PII-Detection
- Klein beginnen: Mit wenigen kritischen PII-Typen starten und schrittweise erweitern.
- Gründlich testen: Pattern gegen Beispieldaten testen, um False Positives zu vermeiden.
- Regelmäßig aktualisieren: Rulesets überprüfen und aktualisieren, wenn neue PII-Anforderungen entstehen.
- Pattern dokumentieren: Dokumentation für Custom-Regex-Pattern pflegen.
- Präzision ausbalancieren: Pattern spezifisch genug gestalten, um False Positives zu vermeiden, aber flexibel genug für Variationen.
- Secret Push Protection implementieren: Verhindert, dass PII-Daten ins Repository gelangen.
- Merge Request Approval Policies einrichten: Approval erforderlich, bevor mögliche PII-Daten gemergt werden.
Nach Einrichtung eines PII-Data-Rulesets für unternehmensspezifische Anforderungen lassen sich Remote Rulesets nutzen, um PII-Daten über mehrere Repositories hinweg zu scannen, ohne die Rules-Datei duplizieren zu müssen. Mehr dazu in diesem Video:
Secret-Detection-Findings bearbeiten
Wenn GitLab Secret Detection potenzielle PII im Code identifiziert:
- Finding überprüfen: Bewerten, ob es sich um einen legitimen Finding oder False Positive handelt.
- Remediieren: Sensible Daten entfernen und durch Environment-Variablen oder Secrets-Management ersetzen.
- Text aus Repository redaktieren: Sensible oder vertrauliche Informationen, die versehentlich committed wurden, dauerhaft löschen, sodass sie in der Repository-History nicht mehr zugänglich sind.
- Fortschritt tracken: GitLabs Security Dashboard nutzen, um laufende Compliance zu überwachen.
Integration in deutsche Compliance-Frameworks
Für deutsche Unternehmen lässt sich Secret Detection mit weiteren Compliance-Anforderungen integrieren:
NIS2-Richtlinie (ab Oktober 2024 verpflichtend): Artikel 21 der NIS2-Richtlinie verlangt von wesentlichen und wichtigen Einrichtungen Cybersecurity-Risk-Management-Maßnahmen. Automatisierte PII-Erkennung erfüllt die Anforderung technischer Maßnahmen zur Risikoreduzierung.
BaFin-Anforderungen für Finanzinstitute: Die Bankenaufsicht (BaFin) verlangt in den BAIT (Bankaufsichtliche Anforderungen an die IT) systematische Kontrollen für Kundendaten. GitLab Secret Detection dokumentiert technische Maßnahmen für MaRisk-Compliance (Mindestanforderungen an das Risikomanagement).
BSI IT-Grundschutz: Der IT-Grundschutz des Bundesamts für Sicherheit in der Informationstechnik (BSI) enthält Bausteine für sichere Softwareentwicklung. Secret Detection erfüllt Anforderungen aus APP.3.1 (Webanwendungen) und OPS.1.1.6 (Software-Tests und -Freigaben).
Jetzt starten
GitLab Secret Detection kombiniert mit Custom PII Rulesets bietet systematischen Schutz gegen unbeabsichtigte Exposition sensibler Informationen. Durch Nutzung von GitLab Duo Chat zur Erstellung präziser Regex-Pattern lässt sich umfassende PII-Detection über die gesamte Codebasis effizient implementieren und regulatorische Compliance sicherstellen.
Secret Detection ist eine Komponente einer umfassenden Security-Strategie. Kombination mit weiteren GitLab-Security-Features wie Static Application Security Testing, Dynamic Application Security Testing und Dependency Scanning ergibt eine robuste Security-Posture.
Diese Praktiken noch heute implementieren, um personenbezogene Daten besser zu schützen und die Security-Integrität von Anwendungen zu gewährleisten.
Kostenlose Testversion von GitLab Ultimate und GitLab Duo starten!
Weitere Ressourcen
Mehr über GitLab Security und Compliance und wie wir AppSec-Workflows verbessern können:





