Blog

TFS 2017 Build-Agent in nicht vertrauenswürdiger Domäne

Kees Verhaar

Aktualisiert Oktober 21, 2025
3 Minuten

Diese Woche wurde ich mit einem Szenario konfrontiert, in dem ein TFS Build/Release-Agent verwendet wurde, um Software aus dem TFS Release Management bereitzustellen. Dieser Agent lief in der gleichen Windows-Domäne wie die Server, auf denen die Software bereitgestellt werden musste. Der TFS-Server selbst wurde in einer anderen Windows-Domäne ausgeführt. Aus Sicherheitsgründen (wir sprechen hier von Produktionsservern) war zwischen diesen beiden Windows-Domänen kein Domänenvertrauen konfiguriert.

Wie also authentifiziert man den Build-Agent beim TFS-Server? In der Vergangenheit (TFS 2015 und früher) mussten Sie Schattenkonten konfigurieren, indem Sie Dienstkonten auf dem TFS-Server und jedem einzelnen Build-Agent mit identischen Benutzernamen und Kennwörtern einrichteten. Das funktioniert zwar, hat aber zwei große Probleme:

  1. Sie müssen diese Konten auf allen Servern separat verwalten, was die Durchsetzung von Kennwortrichtlinien usw. erschwert.
  2. Wenn Sie Ihren Build-Agenten benötigen, um Dinge (wie das Kopieren von Dateien, das Erstellen von Websites usw.) auf Servern in der Zieldomäne auszuführen, möchten Sie den Agenten wahrscheinlich als Domänenkonto ausführen, damit Sie sich problemlos auf Ihren Zielservern authentifizieren können.

Vor TFS 2017 war es leider nicht möglich, Ihren Build Agent unter einem Domänenkonto auszuführen und sich bei einem TFS-Server zu authentifizieren, der in einer anderen, nicht vertrauenswürdigen Domäne läuft. Dies ist ein ziemlich häufiges Szenario, und es gab keine wirklich gute Lösung. Bis jetzt! Mit TFS 2017 hat Microsoft die Möglichkeit geschaffen, Personal Access Tokens (PAT) für On-Premise-Bereitstellungen zu verwenden (VSTS verfügt bereits seit geraumer Zeit über dieses Konzept).

Verwendung eines PAT zur Authentifizierung eines Build-Agenten

Damit dies funktioniert, müssen Sie Ihren TFS-Server über HTTP laufen lassenS. Glücklicherweise können Sie dies mit dem TFS 2017 Konfigurationsassistenten leicht konfigurieren. Stellen Sie sicher, dass Sie ein SSL-Zertifikat verwenden, das sowohl auf den Build-Agenten als auch auf allen Clients als vertrauenswürdig eingestuft ist, sonst werden Sie mit unangenehmen Zertifikatsfehlern konfrontiert.Sobald Sie Ihren TFS über HTTPS zum Laufen gebracht haben, können Sie Ihren Build-Agenten weiter konfigurieren. Beginnen Sie damit, ein PAT aus den Sicherheitseinstellungen zu erzeugen:

clip_image002

Versuchen Sie, die Anzahl der ausgewählten Bereiche für jedes PAT, das Sie erstellen, so gering wie möglich zu halten, um Sicherheitsrisiken zu minimieren. Für die Installation eines Build-Agenten ist der einzige erforderliche Bereich "Agent Pools (lesen, verwalten)":

clip_image002[5]

Kopieren Sie das generierte PAT und bewahren Sie es an einem sicheren Ort auf (z.B. in einem Passwort-Safe). Wenn Sie es verlieren, gibt es keine Möglichkeit, es wiederzuerlangen. Sie müssen dann ein neues generieren. Übrigens: Dieses PAT wird nur benötigt, wenn Sie einen neuen Build-Agent bei TFS registrieren. Sobald der Build-Agent in Betrieb ist, benötigen Sie den PAT nicht mehr und können ihn sogar widerrufen. Laden Sie auf dem Build-Agent die Build-Agent-Bits herunter und extrahieren Sie sie. Starten Sie dann die Konfiguration, indem Sie ".config.cmd" ausführen. Geben Sie das Folgende ein:

  • Server-URL: die URL zum Stammverzeichnis Ihres TFS-Servers, also ohne das "/DefaultCollection"-Bit. Denken Sie daran, dass dies eine HTTPS-URL sein muss.
  • Authentifizierungstyp: PAT
  • Benutzerkonto, das für den Dienst verwendet werden soll: Geben Sie ein Konto in der Domäne an, in der der Agent ausgeführt werden soll.
  • Der Rest der Optionen sollte ziemlich selbsterklärend sein

Das Ergebnis ist ein laufender Build-Agent, der ein Domänenkonto als Dienstkonto verwendet. In meinem Fall läuft der Build-Agent in der Domäne TFS-LAB-BUILD und verbindet sich mit einem TFS-Server, der in der Domäne TFS-LAB läuft:

clip_image002

Der Agent wird auch im Abschnitt "Agentenpools" der TFS-Webverwaltung angezeigt:

clip_image002[6]

Da haben Sie es! Ich hoffe, das hilft Ihnen! Viel Spaß beim Bauen!

Verfasst von

Kees Verhaar

Welcome to my blog! I am an ALM consultant for Xpirit Netherlands B.V. Sounds fancy, doesn’t it? Basically it means I help people to do their work as a software engineer better, faster and easier. In the past couple of years of working in the field, I have encountered many things of which I thought: “I should share this!”. This blog is my way of doing that. You’ll find real life stories, tips & tricks, examples and probably even some code here. Hope you enjoy! If you have any suggestions, please feel free to drop me a line.

Contact

Let’s discuss how we can support your journey.