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.git

von Git transparent umgeschrieben zu:

git clone https://git-proxy.kuka.runa.bot/github/someorg/repo.git

Der 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:

  1. Öffnen Sie die Einstellungen des Git Proxy-Addons.
  2. Erstellen Sie einen Eintrag unter Upstream Git credentials für GitHub.
  3. Setzen Sie den Proxy-Pfad-Präfix auf github.
  4. Wählen Sie als Typ Generic HTTPS.
  5. Setzen Sie den Hostnamen auf github.com.
  6. Wählen Sie einen Authentifizierungsmodus.
  7. Fügen Sie eine Repository-Pfad-Regel hinzu, zum Beispiel someorg/repo.git oder einen Regex für eine kontrollierte Menge von Repositories.
  8. Vergeben Sie für diese Pfad-Regel an ein Repo access profile die Berechtigung read.
  9. 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.