Skip to content

Latest commit

 

History

History
199 lines (153 loc) · 5.73 KB

File metadata and controls

199 lines (153 loc) · 5.73 KB

Security Improvements - GitHub Token Permissions

🔒 Sicherheitsverbesserungen

Dieses Dokument beschreibt die implementierten Sicherheitsverbesserungen für GitHub Actions Workflows.

⚠️ Problem

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}

✅ Lösung

Alle Workflows haben jetzt explizite, minimale Berechtigungen basierend auf dem Principle of Least Privilege.

📋 Workflow-Berechtigungen Übersicht

Release-Workflows (Erhöhte Berechtigungen)

auto-release-on-push.yml

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)

auto-release.yml

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)

semantic-release.yml (Deaktiviert)

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)

Build-Workflows (Minimale Berechtigungen)

permissions:
  contents: read         # Needed to checkout code
  actions: read         # Needed to read workflow artifacts

Sicherheits-Workflows (Spezielle Berechtigungen)

codeql-analysis.yml

permissions:
  actions: read
  contents: read
  security-events: write  # Needed to upload CodeQL results

codeql-simple.yml

permissions:
  contents: read         # Minimal read-only access

Maintenance-Workflows

cleanup-caches.yml

permissions:
  actions: write         # Needed to delete caches

ci-cd.yml

permissions:
  contents: read         # Minimal read-only access

🔐 Berechtigungs-Kategorien

contents: read

  • Zweck: Repository-Inhalt lesen (Code checkout)
  • Risiko: Minimal - nur Lesezugriff
  • Verwendet in: Alle Build- und Test-Workflows

contents: write

  • Zweck: Repository-Inhalt ändern (Tags, Releases)
  • Risiko: Hoch - kann Code ändern
  • Verwendet in: Nur Release-Workflows
  • Berechtigung: Notwendig für automatische Releases

actions: read

  • Zweck: Workflow-Artefakte lesen
  • Risiko: Minimal - nur Lesezugriff auf Workflow-Daten
  • Verwendet in: Die meisten Workflows

actions: write

  • Zweck: Workflow-Artefakte ändern/löschen
  • Risiko: Mittel - kann Caches löschen
  • Verwendet in: Nur Cache-Cleanup

packages: write

  • Zweck: Pakete auf GitHub Packages veröffentlichen
  • Risiko: Mittel - kann Pakete publizieren
  • Verwendet in: Nur Release-Workflows

security-events: write

  • Zweck: Sicherheitsergebnisse hochladen
  • Risiko: Minimal - nur für Sicherheitsberichte
  • Verwendet in: CodeQL-Workflows

id-token: write

  • Zweck: OpenID Connect Token für PyPI Trusted Publishing
  • Risiko: Minimal - nur für authentifizierte PyPI-Uploads
  • Verwendet in: Release-Workflows (optional)

🛡️ Sicherheits-Best-Practices

1. Principle of Least Privilege

  • Jeder Workflow hat nur die minimal notwendigen Berechtigungen
  • Keine Wildcards oder übermäßig breite Berechtigungen

2. Explizite Berechtigungen

  • Alle Berechtigungen sind explizit dokumentiert
  • Kommentare erklären den Zweck jeder Berechtigung

3. Regelmäßige Überprüfung

  • Berechtigungen werden bei Workflow-Änderungen überprüft
  • Unnötige Berechtigungen werden entfernt

4. Sichere Token-Nutzung

  • GITHUB_TOKEN wird nur wo nötig verwendet
  • Externe Secrets (wie PYPI_API_TOKEN) sind optional

📊 Sicherheitsauswirkungen

Vorher (Unsicher)

# Keine expliziten Berechtigungen
# GITHUB_TOKEN hat alle Berechtigungen

Nachher (Sicher)

permissions:
  contents: read  # Nur was benötigt wird
  # Weitere Berechtigungen nur bei Bedarf

🔍 Monitoring

GitHub Security Tab

Workflow-Logs

  • Alle Workflows protokollieren ihre Aktionen
  • Fehlgeschlagene Workflows werden in Actions angezeigt
  • Sicherheitswarnungen erscheinen in der Security-Registerkarte

✅ Compliance

Diese Implementierung erfüllt:

  • GitHub Security Best Practices
  • OWASP CI/CD Security Guidelines
  • Principle of Least Privilege
  • Defense in Depth

🚀 Vorteile

  1. Reduziertes Angriffspotential: Minimale Berechtigungen = minimales Risiko
  2. Bessere Auditierbarkeit: Explizite Berechtigungen sind nachvollziehbar
  3. Compliance: Erfüllt Sicherheitsstandards
  4. Transparenz: Jede Berechtigung ist dokumentiert und begründet

🔧 Wartung

Bei neuen Workflows

  1. Beginnen Sie mit contents: read
  2. Fügen Sie nur notwendige Berechtigungen hinzu
  3. Dokumentieren Sie den Zweck jeder Berechtigung
  4. Testen Sie mit minimalen Berechtigungen

Bei Workflow-Änderungen

  1. Überprüfen Sie, ob neue Berechtigungen benötigt werden
  2. Entfernen Sie unnötige Berechtigungen
  3. Aktualisieren Sie die Dokumentation

Die Sicherheit des Repositories ist jetzt deutlich verbessert! 🔒