Empfehlungen zum Schützen der freigegebenen Infrastruktur in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Geschützte Ressourcen in Azure Pipelines sind eine Abstraktion der realen Infrastruktur. Befolgen Sie diese Empfehlungen, um die zugrunde liegende Infrastruktur zu schützen.

Verwenden Sie von Microsoft gehostete Pools

Von Microsoft gehostete Pools bieten Isolation und einen sauber virtuellen Computer für jede Ausführung einer Pipeline. Verwenden Sie nach Möglichkeit von Microsoft gehostete Pools anstelle von selbstgehosteten Pools.

Separate Agents für jedes Projekt

Ein Agent kann nur an einen Pool gebunden werden. Möglicherweise möchten Sie Agents projektübergreifend freigeben, indem Sie den Pool für mehrere Projekte freigeben. Anders ausgedrückt: Mehrere Projekte können Aufträge nacheinander auf demselben Agent ausführen. Diese Vorgehensweise spart zwar Infrastrukturkosten, kann jedoch eine laterale Bewegung ermöglichen.

Um diese Form der Lateral Movement zu beseitigen und zu verhindern, dass ein Projekt einen Agent für ein anderes Projekt "vergiftet", halten Sie separate Agent-Pools mit separaten Agents für jedes Projekt.

Verwenden von Konten mit geringen Berechtigungen zum Ausführen von Agents

Es ist verlockend, aber gefährlich, den Agent unter einer Identität auszuführen, die direkt auf Azure DevOps-Ressourcen zugreifen kann. Dieses problematische Setup ist in Organisationen üblich, die Microsoft Entra-ID verwenden. Wenn Sie den Agent unter einer Identität ausführen, die von Microsoft Entra ID unterstützt wird, kann er direkt auf Azure DevOps-APIs zugreifen, ohne das Zugriffstoken des Auftrags zu verwenden. Stattdessen sollten Sie den Agent als nicht privilegiertes lokales Konto ausführen, z. B. Netzwerkdienst.

Azure DevOps verfügt über eine Gruppe mit dem irreführenden Namen Project Collection Service Accounts. Durch Vererbung sind Mitglieder von Project Collection Service-Konten auch Mitglieder von Projektsammlungsadministratoren. Kunden führen ihre Build-Agents manchmal mithilfe einer Identität aus, die von Microsoft Entra ID unterstützt wird und Mitglied von Project Collection Service Accounts ist. Wenn Angreifer eine Pipeline auf einem dieser Build-Agents ausführen, können sie die gesamte Azure DevOps-organization übernehmen.

Wir haben auch gesehen, dass selbstgehostete Agents unter Konten mit hohen Berechtigungen ausgeführt werden. Häufig verwenden diese Agents privilegierte Konten, um auf Geheimnisse oder Produktionsumgebungen zuzugreifen. Wenn Angreifer jedoch eine kompromittierte Pipeline auf einem dieser Build-Agents ausführen, können sie auf diese Geheimnisse zugreifen. Dann können sich die Angreifer seitlich durch andere Systeme bewegen, auf die über diese Konten zugegriffen werden kann.

Um Ihre Systeme sicher zu halten, verwenden Sie das Konto mit den niedrigsten Berechtigungen, um selbstgehostete Agents auszuführen. Verwenden Sie beispielsweise Ihr Computerkonto oder eine verwaltete Dienstidentität. Lassen Sie Azure Pipelines den Zugriff auf Geheimnisse und Umgebungen verwalten.

Minimieren des Umfangs von Dienstverbindungen

Dienstverbindungen müssen nur auf die benötigten Ressourcen zugreifen können. Verwenden Sie nach Möglichkeit den Workload-Identitätsverbund anstelle eines Dienstprinzipals für Ihre Azure-Dienstverbindung. Der Workload-Identitätsverbund verwendet eine Industriestandardtechnologie, Open ID Verbinden (OIDC), um die Authentifizierung zwischen Azure und Azure DevOps zu erleichtern, und verwendet keine geheimen Schlüssel.

Ihre Azure-Dienstverbindung sollte auf die Ressourcen zugeschnitten sein, auf die Sie die Dienstverbindung zugreifen müssen. Benutzer sollten nicht über umfassende Mitwirkender Rechte für das gesamte Azure-Abonnement verfügen.

Wenn Sie eine neue Azure Resource Manager-Dienstverbindung erstellen, wählen Sie immer eine Ressourcengruppe aus. Stellen Sie sicher, dass Ihre Ressourcengruppe nur die VMs oder Ressourcen enthält, die für den Build erforderlich sind. Gewähren Sie beim Konfigurieren der GitHub-App nur Zugriff auf die Repositorys, die Sie mithilfe von Azure Pipelines erstellen möchten.

Nächste Schritte

Berücksichtigen Sie einige allgemeine Empfehlungen für die Sicherheit.