Sicherheitsfunktionen#
Git-Proxy-Addon#
Das Git Proxy-Addon erlaubt einem Bot den Zugriff auf Upstream-Git-Repositories, ohne dass die eigentlichen Upstream-Git-Credentials direkt im Dateisystem des Bots gespeichert werden. Der Bot verwendet nur ein einzelnes von Runabot ausgestelltes Proxy-Token, und der Proxy entscheidet bei jeder Anfrage dynamisch, ob der Bot für einen bestimmten Repository-Pfad lesen oder schreiben darf.
Dadurch wird der Schaden bei kompromittierten Zugangsdaten begrenzt:
- ein gestohlenes Bot-Token ist nur gegen den Runabot-Git-Proxy nutzbar
- der Zugriff kann auf ausgewählte Repository-Pfade begrenzt werden
- Lese- und Schreibrechte sind getrennt
- Berechtigungen können zentral geändert werden, ohne das Dateisystem des Bots anzupassen
(zum Lesen klicken) Anwendungsbeispiel: Read-only git proxy to github.com
Ein nützliches Muster ist, einen schreibgeschützten Proxy-Pfad für github.com zu konfigurieren und normale GitHub-Clone-URLs durch den Proxy umzuleiten.
Beispiel:
git config --global url."https://git-proxy.kuka.runa.bot/github/".insteadOf "https://github.com/"Mit dieser Regel wird ein Befehl wie:
git clone https://github.com/someorg/repo.gitvon Git transparent umgeschrieben zu:
git clone https://git-proxy.kuka.runa.bot/github/someorg/repo.gitDer Bot erreicht GitHub dann über den Runabot-Git-Proxy, statt direkt mit github.com zu sprechen.
Runabot konfiguriert das Proxy-Token auf dem Bot fuer https://git-proxy.kuka.runa.bot. Das Addon schreibt das Token in die Git-Credential-Konfiguration und installiert einen URL-spezifischen Credential-Helper fuer den Proxy-Host. Dadurch bleibt das Token aus der umgeschriebenen Repository-URL heraus, waehrend Git sich weiterhin am Proxy authentifizieren kann.
Empfohlene Konfiguration in der Runabot-Oberfläche:
- Öffnen Sie die Einstellungen des
Git Proxy-Addons. - Erstellen Sie einen Eintrag unter
Upstream Git credentialsfür GitHub. - Setzen Sie den Proxy-Pfad-Präfix auf
github. - Wählen Sie als Typ
Generic HTTPS. - Setzen Sie den Hostnamen auf
github.com. - Wählen Sie einen Authentifizierungsmodus.
- Fügen Sie eine Repository-Pfad-Regel hinzu, zum Beispiel
someorg/repo.gitoder einen Regex für eine kontrollierte Menge von Repositories. - Vergeben Sie für diese Pfad-Regel an ein
Repo access profiledie Berechtigungread. - Weisen Sie dieses Repo-Access-Profil dem gewünschten Bot zu.
Für öffentliche Repositories können Sie Auth type = None verwenden. In diesem Fall leitet der Proxy schreibgeschützte Anfragen an öffentliche GitHub-Repositories weiter, ohne Upstream-Credentials zu senden.
Warum das nützlich ist:
- der Bot kann Quellcode von GitHub lesen, ohne direkte GitHub-Credentials zu besitzen
- der Proxy kann Lesezugriff erzwingen, selbst wenn der Bot durch fremde Prompts gesteuert wird
- Prompt Injection kann aus einer schreibgeschützten Proxy-Regel kein schreibfähiges GitHub-Credential machen
- ein Supply-Chain-Angriff innerhalb des Bots kann das Runabot-Proxy-Token höchstens für die erlaubten Proxy-Pfade wiederverwenden
- ausgehender Git-Zugriff wird auditierbar und zentral widerrufbar
Das ist besonders hilfreich für Coding-Agenten, die Repositories analysieren sollen, aber niemals Code pushen, Tags erstellen oder auf andere Repositories zugreifen dürfen.