Wo CI gefährlich wird – und wie Forgejo dich (und dein Repo) standardmässig schützt.
pull_request aus einem Fork ausgelöst
wird, bekommt einen nur-lesenden FORGEJO_TOKEN und keinen
Zugriff auf Secrets. So kann eingeschleuster Code weder ins Repo schreiben noch
Geheimnisse abgreifen. Das ist Forgejos Standardschutz – verlass dich darauf.
pull_request_targeton:
pull_request_target: # läuft im Kontext des ZIEL-Repos!
pull_request schliesst. Regel: in
pull_request_target niemals den PR-Branch bauen/ausführen, nur vertrauenswürdige,
read-only Schritte (z. B. ein Label setzen).
Der automatische Token sollte nur so viel dürfen wie nötig. Wo Forgejo es unterstützt, schränkst du Rechte explizit ein und gibst zusätzliche nur dort, wo sie gebraucht werden (z. B. ein eigenes PAT fürs Pushen von Images, Lektion 8 – nicht der Default-Token).
echoen. Deploy-Jobs nie aus Fork-PRs. Für Schreibzugriffe auf
Pakete/Registry separate, eng gescopte Tokens. Actions per SHA pinnen (Lektion 6).
Fork-MRs: Secrets standardmässig geschützt
protected Variablen/Branches
Job-Token mit konfigurierbarem Scope
Fork-PRs: read-only Token, keine Secrets ★
Riskante Ausnahme: pull_request_target
Eng gescopte PATs für Schreibzugriffe
Frage: Ein Workflow nutzt pull_request_target und checkt den
PR-Branch aus, um npm test zu fahren. Wo ist das Problem?
Fremder Fork-Code läuft mit Secrets/Schreibrechten des Ziel-Repos – ein
klassisches Exfiltrations-Loch. Tests gehören in pull_request (entschärft), nicht
in pull_request_target.
Frage: Du willst, dass externe Beitragende per PR die Tests auslösen, aber keine Secrets sehen. Welches Event nimmst du – und was passiert mit dem Deploy-Job?
pull_request. Der Deploy-Job läuft dort nicht sinnvoll (keine
Secrets) – ihn gatest du auf push/main bzw. workflow_dispatch
(Lektion 10).
Was bekommt ein Workflow aus einem Fork-PR?
Forgejo entschärft Fork-PRs: nur lesender Token, keine Secrets – damit fremder Code nichts abgreift.
Worauf darfst du in pull_request_target verzichten?
Weil das Event Secrets/Rechte hat, darf ungeprüfter Fork-Code dort nicht gebaut/ausgeführt werden.
pull_request_target, Token-Verhalten).