GitHub Sicherheitswarnungen verwalten
Übersicht
Verwenden Sie diesen Skill, wenn ein Benutzer darum bittet, GitHub-Repository-Sicherheitswarnungen zu inspizieren oder zu verwalten, einschließlich:
- Code Scanning-Alarme
- Dependabot-Alarme
- Dependabot-Malware-Alarme
- Secret Scanning-Alarme
- Secret Scanning-Alarmpositionen
- Secret Scanning-Scan-Verlauf
- Repository-Sicherheitseinstellungen Übersicht
- Roh-GitHub-Sicherheits-API-Inspektion über Repositories hinweg
- Massenexport von Alarmen für Offline-Triage oder Berichtsworkflows
- Massenmutation von Alarmen für Bereinigungs-Workflows mit hohem Volumen
Das gebündelte Hilfsskript ist Repository-unabhängig:
--repoauf einen lokalen Checkout zeigenowner/repound den GitHub-Host automatisch aus dem Git-Remote erkennen lassen- Oder explizit
--repository owner/repoübergeben - Authentifizierung über Umgebungsvariable, anstatt ein Token in der Befehlszeile zu platzieren
- Optional die API- oder Web-Basis-URL für kundenspezifische Umgebungen überschreiben
Kompatibilität
Erfordert Python 3.
Verwendet die GitHub-REST-API direkt mit einem Token, das über eine Umgebungsvariable wie GITHUB_TOKEN oder GH_TOKEN bereitgestellt wird.
Unterstützt GitHub.com und die standardmäßige GHES-API-Basis-URL-Ableitung von Git-Remotes, mit einem Roh-API-Fallback für alles, was noch nicht abgedeckt ist.
Aufrufhinweise
Verwenden Sie repo, wenn das Ziel ein lokaler Checkout ist, standardmäßig ..
Verwenden Sie optional die Werte repository, api_base_url, web_base_url und token_env, wenn die automatische Erkennung nicht ausreicht.
Häufige Befehle sind summary, export-alerts, bulk-update-alerts, repo-security-overview, list-code-scanning, show-code-scanning, update-code-scanning, list-dependabot, show-dependabot, update-dependabot, list-malware, show-malware, update-malware, list-secret-scanning, show-secret-scanning, update-secret-scanning, list-secret-locations, secret-scan-history und api-call.
Sicherheitsmodell
GitHub-Token nicht in Befehlsargumente einfügen.
--show-secret-values nicht verwenden, es sei denn, der Benutzer fragt explizit nach ungeschwärzten Geheimwerten und bestätigt das Offenlegungsrisiko. Bevorzugen Sie geschwärzte Alarmmetadaten, Geheimpositionen, Gültigkeit und Auflösungsstatus. Wenn für die Behebung ungeschwärzte Ausgaben erforderlich sind, Geheimmaterial nicht in Chat, Issue-Kommentaren, PRs, Commits, Protokollen oder gespeicherten Berichten einfügen.
Bevorzugtes Muster:
$env:GITHUB_TOKEN = Get-Secret GITHUB_TOKEN -AsPlainText
Wenn ein Repository einen anderen Umgebungsvariablennamen verwendet, entweder diese Variable zuerst exportieren oder den Variablennamen mit --token-env übergeben.
Beispiele:
python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "."
python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "." --token-env GITHUB_TOKEN
Gemeinsame CLI-Optionen
repo: Pfad innerhalb des Ziel-Repository-Checkouts (Standard.)repository: optionales explizitesowner/repo-Overrideapi_base_url: optionales explizites API-Basis-URL-Overrideweb_base_url: optionales explizites Web-Basis-URL-Override für gerenderte Linkstoken_env: optionaler Name der Umgebungsvariable, die das Token enthält; wiederholbar für Fallbacksjson: optionales Flag für maschinenlesbare Ausgabe
Wichtiger Hinweis zu Malware-Alarmen
GitHub zeigt Malware-Funde als Dependabot-Malware-Alarme an.
GitHub bietet keine separate Repository-Alarmfamilie mit einer eigenen dedizierten REST-Oberfläche. Daher behandelt das gebündelte Hilfsskript Malware als gefilterte Teilmenge von Dependabot-Alarmen und gleicht die GHSA jedes Alarms mit der GitHub Advisory Database ab, um Advisories zu identifizieren, deren Typ malware ist.
Das bedeutet:
list-malware,show-malwareundupdate-malwarebasieren auf Dependabot-Alarm-APIs- Die Malware-Klassifizierung ist auf GitHub.com am stärksten, wo der Endpunkt der Advisory Database verfügbar ist
- Wenn die Suche nach Advisory-Typ auf dem Zielhost nicht verfügbar ist, meldet das Hilfsskript diesen Zustand, anstatt stillschweigend zu raten
Schnellstart
1. Aktuellen Sicherheitszustand inspizieren
python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "."
2. Übersicht der Repository-Sicherheitseinstellungen anzeigen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" repo-security-overview --repo "."
2.5 Vollständige Alarmsätze für Bulk-Triage exportieren
python "<path-to-skill>/scripts/manage_github_security_alerts.py" export-alerts --repo "." --json
3. Code Scanning-Liste Beispiel
Verwendet gemeinsame Eingaben repo, repository, api_base_url, web_base_url, token_env und json sowie Code Scanning-Filter wie state, severity, tool_name, tool_guid, ref und pr.
Gibt code_scanning_alerts als gerenderten Text oder maschinenlesbares JSON aus.
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-code-scanning --repo "." --state open --severity high,error
3.5 Alarme massenhaft ablehnen oder wiedereröffnen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface code-scanning --select-state open --target-state dismissed --dismissed-reason "false positive" --comment "Reviewed and intentionally dismissed." --limit 10 --dry-run --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface dependabot --select-state open --target-state dismissed --dismissed-reason tolerable_risk --comment "Accepted until the next dependency refresh." --limit 25 --dry-run --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface secret-scanning --select-state open --target-state resolved --resolution used_in_tests --limit 25 --dry-run --json
4. Code Scanning-Alarm ablehnen oder wiedereröffnen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state dismissed --dismissed-reason false_positive --comment "False positive after manual review." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state open
5. Dependabot-Liste Beispiel
Verwendet gemeinsame Eingaben repo, repository, api_base_url, web_base_url, token_env und json sowie Dependabot-Filter wie state, severity, ecosystem, package, manifest, has, assignee und scope.
Gibt dependabot_alerts als gerenderten Text oder maschinenlesbares JSON aus.
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-dependabot --repo "." --state open --ecosystem npm --has patch
6. Dependabot-Alarm ablehnen oder wiedereröffnen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state dismissed --dismissed-reason tolerable_risk --comment "Accepted until next quarterly upgrade." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state open
7. Malware-Liste Beispiel
Verwendet gemeinsame Eingaben repo, repository, api_base_url, web_base_url, token_env und json sowie Dependabot-gestützte Malware-Filter wie state, severity, ecosystem, package, manifest und has.
Gibt malware_alerts und eventuelle lookup_failures aus der Advisory-Typ-Klassifizierung aus.
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-malware --repo "." --state open
8. Secret Scanning-Liste Beispiel
Verwendet gemeinsame Eingaben repo, repository, api_base_url, web_base_url, token_env und json sowie Secret Scanning-Filter wie state, secret_type, resolution, assignee, validity und Flags für Leaks oder mehrere Repositories.
Gibt secret_scanning_alerts aus, wobei Geheimwerte standardmäßig geschwärzt sind.
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-scanning --repo "." --state open
Geheimwerte sind standardmäßig ausgeblendet. Behalten Sie diese Standardeinstellung bei, es sei denn, der Benutzer bestätigt explizit, dass eine ungeschwärzte Geheimausgabe erforderlich ist.
9. Secret Scanning-Alarm auflösen oder wiedereröffnen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state resolved --resolution revoked --comment "Token revoked and rotated." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state open
10. Geheimpositionen und Scan-Verlauf anzeigen
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-locations --repo "." --alert 11
python "<path-to-skill>/scripts/manage_github_security_alerts.py" secret-scan-history --repo "."
11. Roh-API-Fallback für noch nicht abgedeckte Bereiche verwenden
python "<path-to-skill>/scripts/manage_github_security_alerts.py" api-call --repo "." --endpoint /repos/OWNER/REPO/code-scanning/default-setup
Arbeitsablauf
- Authentifizierung sicher auflösen.
- Eine Umgebungsvariable wie
GITHUB_TOKENbevorzugen. - Bei Bedarf zuerst aus einem Secret Manager in eine Umgebungsvariable laden.
- Das Token niemals in Protokollen oder Chat-Ausgaben ausgeben.
- Eine Umgebungsvariable wie
- Ziel-Repository auflösen.
--repound automatische Erkennung aus Git-Remote bevorzugen.- Auf
--repository owner/repozurückgreifen, wenn der lokale Checkout nicht verfügbar oder nicht standardmäßig ist.
- Aktuelle Funde inspizieren.
- Zuerst
summaryausführen. export-alertsverwenden, wenn eine vollständigere Multi-Oberflächen-JSON-Momentaufnahme für Bulk-Triage oder externe Berichte benötigt wird.- Die Listen-/Anzeige-Befehle für die relevante Alarmfamilie verwenden.
repo-security-overviewverwenden, wenn es um Aktivierung oder verfügbare Sicherheitseinstellungen geht.
- Zuerst
- Funde klassifizieren.
- Echte Fehler im Code oder in der Abhängigkeitskonfiguration beheben, wenn angemessen.
- Nur ablehnen, wenn eine klare Begründung vorliegt.
- Alarme wiedereröffnen, wenn die frühere Ablehnung oder Auflösung nicht mehr gültig ist.
bulk-update-alertsverwenden, wenn ein Repository Dutzende oder Hunderte bereits überprüfter, falsch eingestufter Alarme hat, die dieselbe Aktion benötigen.
- Mutationen vorsichtig anwenden.
- Für riskante Änderungen zuerst
--dry-runbevorzugen. - Einen kurzen, umsetzbaren Ablehnungs- oder Auflösungskommentar hinzufügen.
- Beachten, dass Schreiboperationen die entsprechenden GitHub-Berechtigungen erfordern.
- Für riskante Änderungen zuerst
- Zustand nach der Änderung überprüfen.
- Den entsprechenden Listen-/Anzeige-Befehl erneut ausführen.
- Bei Code- oder Abhängigkeitskorrekturen auf den nächsten GitHub-Analysezyklus warten, wenn erwartet wird, dass der Alarm von selbst verschwindet.
Gebündelte Ressourcen
Hilfsskript
scripts/manage_github_security_alerts.py ist das Repository-unabhängige Hilfsskript für GitHub-Repository-Sicherheitswarnungen.
Unterstützte Befehle:
summaryexport-alertsbulk-update-alertsrepo-security-overviewlist-code-scanningshow-code-scanningupdate-code-scanninglist-dependabotshow-dependabotupdate-dependabotlist-malwareshow-malwareupdate-malwarelist-secret-scanningshow-secret-scanningupdate-secret-scanninglist-secret-locationssecret-scan-historyapi-call
Implementierungsmodule:
github_security_api.pygithub_security_cli.pygithub_security_common.pygithub_security_operations.pygithub_security_render.py
Beispiele:
python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" export-alerts --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface code-scanning --select-state open --target-state dismissed --dismissed-reason "false positive" --comment "Reviewed and intentionally dismissed." --limit 10 --dry-run --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-code-scanning --repo "." --state open --per-page 100 --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state dismissed --dismissed-reason false_positive --comment "False positive after review." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-dependabot --repo "." --state open --ecosystem npm --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-malware --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state dismissed --dismissed-reason tolerable_risk --comment "Accepted temporarily." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-scanning --repo "." --state open --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state resolved --resolution revoked --comment "Revoked and rotated." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-locations --repo "." --alert 11 --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" secret-scan-history --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" api-call --repo "." --endpoint /repos/OWNER/REPO/dependabot/alerts --query-param state=open --json