Dieses Dokument beschreibt die implementierten Sicherheitsverbesserungen für GitHub Actions Workflows.
GitHub Actions warnte vor unbegrenzten GITHUB_TOKEN Berechtigungen:
Actions job or workflow does not limit the permissions of the GITHUB_TOKEN.
Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
Alle Workflows haben jetzt explizite, minimale Berechtigungen basierend auf dem Principle of Least Privilege.
permissions:
contents: write # Needed to create releases and push tags
actions: read # Needed to read workflow artifacts
packages: write # Needed for package publishing
id-token: write # Needed for PyPI trusted publishing (optional)permissions:
contents: write # Needed to create releases and upload assets
actions: read # Needed to read workflow artifacts
packages: write # Needed for package publishing
id-token: write # Needed for PyPI trusted publishing (optional)permissions:
contents: write # Needed to create releases and push tags
actions: read # Needed to read workflow artifacts
packages: write # Needed for package publishing
id-token: write # Needed for PyPI trusted publishing (optional)permissions:
contents: read # Needed to checkout code
actions: read # Needed to read workflow artifactspermissions:
actions: read
contents: read
security-events: write # Needed to upload CodeQL resultspermissions:
contents: read # Minimal read-only accesspermissions:
actions: write # Needed to delete cachespermissions:
contents: read # Minimal read-only access- Zweck: Repository-Inhalt lesen (Code checkout)
- Risiko: Minimal - nur Lesezugriff
- Verwendet in: Alle Build- und Test-Workflows
- Zweck: Repository-Inhalt ändern (Tags, Releases)
- Risiko: Hoch - kann Code ändern
- Verwendet in: Nur Release-Workflows
- Berechtigung: Notwendig für automatische Releases
- Zweck: Workflow-Artefakte lesen
- Risiko: Minimal - nur Lesezugriff auf Workflow-Daten
- Verwendet in: Die meisten Workflows
- Zweck: Workflow-Artefakte ändern/löschen
- Risiko: Mittel - kann Caches löschen
- Verwendet in: Nur Cache-Cleanup
- Zweck: Pakete auf GitHub Packages veröffentlichen
- Risiko: Mittel - kann Pakete publizieren
- Verwendet in: Nur Release-Workflows
- Zweck: Sicherheitsergebnisse hochladen
- Risiko: Minimal - nur für Sicherheitsberichte
- Verwendet in: CodeQL-Workflows
- Zweck: OpenID Connect Token für PyPI Trusted Publishing
- Risiko: Minimal - nur für authentifizierte PyPI-Uploads
- Verwendet in: Release-Workflows (optional)
- Jeder Workflow hat nur die minimal notwendigen Berechtigungen
- Keine Wildcards oder übermäßig breite Berechtigungen
- Alle Berechtigungen sind explizit dokumentiert
- Kommentare erklären den Zweck jeder Berechtigung
- Berechtigungen werden bei Workflow-Änderungen überprüft
- Unnötige Berechtigungen werden entfernt
GITHUB_TOKENwird nur wo nötig verwendet- Externe Secrets (wie
PYPI_API_TOKEN) sind optional
# Keine expliziten Berechtigungen
# GITHUB_TOKEN hat alle Berechtigungenpermissions:
contents: read # Nur was benötigt wird
# Weitere Berechtigungen nur bei Bedarf- Überprüfen Sie regelmäßig: https://github.com/securebitsorg/bash-script-maker/security
- Dependabot-Alerts werden automatisch erstellt
- CodeQL-Scans laufen wöchentlich
- Alle Workflows protokollieren ihre Aktionen
- Fehlgeschlagene Workflows werden in Actions angezeigt
- Sicherheitswarnungen erscheinen in der Security-Registerkarte
Diese Implementierung erfüllt:
- ✅ GitHub Security Best Practices
- ✅ OWASP CI/CD Security Guidelines
- ✅ Principle of Least Privilege
- ✅ Defense in Depth
- Reduziertes Angriffspotential: Minimale Berechtigungen = minimales Risiko
- Bessere Auditierbarkeit: Explizite Berechtigungen sind nachvollziehbar
- Compliance: Erfüllt Sicherheitsstandards
- Transparenz: Jede Berechtigung ist dokumentiert und begründet
- Beginnen Sie mit
contents: read - Fügen Sie nur notwendige Berechtigungen hinzu
- Dokumentieren Sie den Zweck jeder Berechtigung
- Testen Sie mit minimalen Berechtigungen
- Überprüfen Sie, ob neue Berechtigungen benötigt werden
- Entfernen Sie unnötige Berechtigungen
- Aktualisieren Sie die Dokumentation
Die Sicherheit des Repositories ist jetzt deutlich verbessert! 🔒