Zugreifen auf Repositorys, Artefakte und andere Ressourcen
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Zur Laufzeit kann jeder Auftrag in einer Pipeline auf andere Ressourcen in Azure DevOps zugreifen. Beispielsweise kann ein Auftrag:
- Auschecken des Quellcodes aus einem Git-Repository
- Hinzufügen eines Tags zum Repository
- Zugreifen auf einen Feed in Azure Artifacts
- Hochladen von Protokollen vom Agent in den Dienst
- Hochladen von Testergebnissen und anderen Artefakten vom Agent in den Dienst
- Ein Arbeitselement aktualisieren
Azure Pipelines verwendet Auftragszugriffstoken, um diese Aufgaben auszuführen. Ein Auftragszugriffstoken ist ein Sicherheitstoken, das dynamisch von Azure-Pipelines für jeden Auftrag zur Laufzeit generiert wird. Der Agent, auf dem der Auftrag ausgeführt wird, verwendet das Auftragszugriffstoken, um auf diese Ressourcen in Azure DevOps zuzugreifen. Sie können steuern, auf welche Ressourcen Ihre Pipeline Zugriff besitzt, indem Sie steuern, wie Berechtigungen für Auftragszugriffstoken erteilt werden.
Die Berechtigungen des Tokens werden von (a) dem Auftragsautorisierungsbereich und (b) den Berechtigungen abgeleitet, die Sie für das Builddienstkonto des Projekts oder der Sammlung festlegen.
Auftragsautorisierungsbereich
Sie können den Auftragsautorisierungsbereich so festlegen, dass er Sammlung oder Projektwerden soll. Indem Sie den Bereich auf Sammlungfestlegen, wählen Sie aus, dass Pipelines auf alle Repositorys in der Sammlung oder Organisation zugreifen können. Indem Sie den Bereich auf Projektfestlegen, können Sie den Zugriff nur auf die Repositorys beschränken, die sich im selben Projekt wie die Pipeline befinden.
Der Jobautorisierungsbereich kann für die gesamte Azure DevOps Organisation oder für ein bestimmtes Projekt festgelegt werden.
Hinweis
In Azure DevOps Server 2020 gilt Einschränkung des Auftragsautorisierungsbereichs auf das aktuelle Projekt nur für YAML-Pipelines und klassische Buildpipelinen gilt. Sie gilt nicht für klassische Releasepipelinen. Klassische Releasepipelinen werden immer mit Dem Projektsammlungsbereich ausgeführt.
So legen Sie den Bereich für die Auftragsautorisierung für die Organisation fest:
- Navigieren Sie auf der Azure DevOps-Benutzeroberfläche zur Seite "Organisationseinstellungen".
- Wählen Sie Einstellungen unter Pipelinesaus.
- Aktivieren Sie Festlegen des Autorisierungsbereichs für den Auftrag auf das aktuelle Projekt, um den Bereich auf das Projekt zu beschränken. Dies ist die empfohlene Einstellung, da sie die Sicherheit für Ihre Pipelines verbessert.
So legen Sie den Auftragsautorisierungsbereich für ein bestimmtes Projekt fest:
- Navigieren Sie auf der Azure DevOps-Benutzeroberfläche zur Seite "Projekteinstellungen".
- Wählen Sie Einstellungen unter Pipelinesaus.
- Aktivieren Sie Festlegen des Autorisierungsbereichs für den Auftrag auf das aktuelle Projekt, um den Bereich auf das Projekt zu beschränken. Dies ist die empfohlene Einstellung, da sie die Sicherheit für Ihre Pipelines verbessert.
- Wenn Sie den Bereich für die Auftragsautorisierung auf Organisationsebene für alle Projekte festlegen möchten, wählen Sie Organisationseinstellungen>Pipelines>Einstellungenaus.
- Um den Auftragsautorisierungsbereich für ein bestimmtes Projekt festzulegen, wählen Sie Project-Einstellungen>Pipelines>Einstellungenaus.
Aktivieren Sie eine oder mehrere der folgenden Einstellungen. Das Aktivieren dieser Einstellungen wird empfohlen, da die Sicherheit für Ihre Pipelines verbessert wird.
- Einschränken des Auftragsautorisierungsbereichs auf das aktuelle Projekt für Nicht-Release-Pipelines – Diese Einstellung gilt für YAML-Pipelines und klassische Buildpipelinen und gilt nicht für klassische Releasepipelines.
- Autorisierungsbereich für Auftrag für Releasepipelines auf aktuelles Projekt begrenzen: Diese Einstellung gilt nur für klassische Releasepipelines.
Hinweis
Wenn der Bereich auf Projekt auf Organisationsebene festgelegt ist, können Sie den Bereich in jedem Projekt nicht ändern.
Wichtig
Wenn der Bereich weder auf Organisationsebene noch auf Projektebene eingeschränkt ist, erhält jeder Auftrag in Ihrer YAML-Pipeline ein Sammlungsauftragszugriffstoken mit Bereichsumfang. Mit anderen Worten, Ihre Pipeline hat Zugriff auf jedes Repository in einem beliebigen Projekt Ihrer Organisation. Wenn ein Angreifer Zugriff auf eine einzelne Pipeline in einem einzigen Projekt erhalten kann, kann er zugriff auf jedes Repository in Ihrer Organisation erhalten. Aus diesem Grund wird empfohlen, den Bereich auf der höchsten Ebene (Organisationseinstellungen) einzuschränken, um den Angriff auf ein einzelnes Projekt einzudämmen.
Hinweis
Wenn sich Ihre Pipeline in einem öffentlichen Projektbefindet, wird der Auftragsautorisierungsbereich automatisch auf Projekt beschränkt, unabhängig davon, was Sie in einer Einstellung konfigurieren. Aufträge in einem öffentlichen Projekt können nur innerhalb des Projekts und nicht aus anderen Projekten der Organisation auf Ressourcen wie Buildartefakte oder Testergebnisse zugreifen.
Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys einschränken
Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines einen Einschränkungsauftragsautorisierungsbereich für referenzierte Azure DevOps-Repositorys Einstellung.
Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, es sei denn, Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys beschränken, aktiviert ist. Wenn diese Option aktiviert ist, können Sie den Zugriffsbereich für alle Pipelines auf die Azure DevOps-Repositorys beschränken, auf die explizit in einem checkout
-Schritt oder einer uses
-Anweisung im Pipelineauftrag verwiesen wird, der dieses Repository verwendet.
Weitere Informationen finden Sie unter Azure Repos Git-Repositorys – Einschränken des Auftragsautorisierungsbereichs auf referenzierte Azure DevOps-Repositorys.
Zugriff auf Repositorys in YAML-Pipelines schützen
Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines einen Schutz des Zugriffs auf Repositorys in YAML-Pipelines Einstellung.
Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, es sei denn, Den Zugriff auf Repositorys in YAML-Pipelines schützen, aktiviert ist. Wenn diese Option aktiviert ist, können Sie den Zugriffsbereich für alle Pipelines auf die Azure DevOps-Repositorys beschränken, auf die explizit in einem checkout
-Schritt oder einer uses
-Anweisung im Pipelineauftrag verwiesen wird, der dieses Repository verwendet.
Weitere Informationen finden Sie unter Azure Repos Git-Repositorys – Schützen des Zugriffs auf Repositorys in YAML-Pipelines.
Wichtig
Die Option Zugriff auf Repositorys in YAML-Pipelines schützen ist standardmäßig für neue Organisationen und Projekte aktiviert, die nach Mai 2020 erstellt wurden.
Bereichsbezogene Buildidentitäten
Azure DevOps verwendet zwei integrierte Identitäten zum Ausführen von Pipelines.
- Eine sammlungsbezogenen Identität, die Zugriff auf alle Projekte in der Sammlung (oder Organisation für Azure DevOps Services) hat.
- Eine projektbezogenen Identität, die Zugriff auf ein einzelnes Projekt hat
Diese Identitäten werden Berechtigungen zugewiesen, die zum Ausführen von Build-/Release-Ausführungszeitaktivitäten erforderlich sind, wenn Sie zurück zum Azure DevOps-System aufrufen. Es gibt integrierte Standardberechtigungen, und Sie können auch ihre eigenen Berechtigungen bei Bedarf verwalten.
Die identitätsbezogenen Name weist das folgende Format auf:
Project Collection Build Service ({OrgName})
- Wenn der Organisationsname beispielsweise
fabrikam-tailspin
ist, hat dieses Konto den NamenProject Collection Build Service (fabrikam-tailspin)
.
Die projektbezogenen Identität Name weist das folgende Format auf:
{Project Name} Build Service ({Org Name})
- Wenn beispielsweise der Name der Organisation
fabrikam-tailspin
und der ProjektnameSpaceGameWeb
ist, hat dieses Konto den NamenSpaceGameWeb Build Service (fabrikam-tailspin)
.
Standardmäßig wird die Sammlungsidentität verwendet, es sei denn, dies ist anders konfiguriert, wie im vorherigen abschnitt Auftragsautorisierungsbereich beschrieben.
Verwalten von Builddienstkontoberechtigungen
Ein Ergebnis des Festlegens des Projektbereichszugriffs kann sein, dass die projektbezogene Identität möglicherweise nicht über Berechtigungen für eine Ressource verfügt, die der Sammlungsbereich zugewiesen hat.
Sie können die Berechtigungen des Auftragszugriffstokens in Szenarien wie den folgenden ändern:
- Sie möchten, dass Ihre Pipeline auf einen Feed zugreifen soll, der sich in einem anderen Projekt befindet.
- Sie möchten, dass die Pipeline nicht mehr den Code im Repository ändert.
- Sie möchten, dass Die Pipeline auf das Erstellen von Arbeitsaufgaben beschränkt werden soll.
So aktualisieren Sie die Berechtigungen des Auftragszugriffstokens:
Bestimmen Sie zunächst den Auftragsautorisierungsbereich für Ihre Pipeline. Lesen Sie den abschnitt oben, um den Umfang der Auftragsautorisierung zu verstehen. Wenn der Auftragsautorisierungsbereich Sammlungist, ist das entsprechende Builddienstkonto zum Verwalten von Berechtigungen Project Collection Build Service (Ihr Sammlungsname). Wenn der Auftragsautorisierungsbereich Projektist, ist das Builddienstkonto zum Verwalten von Berechtigungen Builddienst (Ihr Sammlungsname).
So beschränken oder gewähren Sie zusätzlichen Zugriff auf Project Collection Build Service (Ihren Sammlungsnamen):
- Wählen Sie Sicherheits- im Überlaufmenü auf Seite "Pipelines" aus.
- Wählen Sie unter BenutzerProject Collection Build Service (Ihr Sammlungsname)aus.
- Nehmen Sie alle Änderungen an den Pipelines-bezogenen Berechtigungen für dieses Konto vor.
- Navigieren Sie zu den Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder Sammlungseinstellungen für Ihre Projektsammlung).
- Wählen Sie unter Sicherheit die Option Berechtigungen aus.
- Suchen Sie auf der Registerkarte Benutzer nach Project Collection Build Service (Ihr Sammlungsname).
- Nehmen Sie alle Änderungen an den Nicht-Pipelines-bezogenen Berechtigungen für dieses Konto vor.
- Da Project Collection Build Service (Ihr Sammlungsname) ein Benutzer in Ihrer Organisation oder Sammlung ist, können Sie dieses Konto explizit zu einer beliebigen Ressource hinzufügen , z. B. einem Feed in Azure Artifacts.
So beschränken oder gewähren Sie zusätzlichen Zugriff auf Build service (Ihren Sammlungsnamen):
- Das Builddienstkonto, für das Sie Berechtigungen verwalten können, wird erst erstellt, nachdem Sie die Pipeline einmal ausgeführt haben. Stellen Sie sicher, dass Sie die Pipeline bereits einmal ausgeführt haben.
- Wählen Sie Sicherheits- im Überlaufmenü auf Seite "Pipelines" aus.
- Wählen Sie unter BenutzerBuilddienst (Ihren Sammlungsnamen) aus.
- Nehmen Sie alle Änderungen an den Pipelines-bezogenen Berechtigungen für dieses Konto vor.
- Navigieren Sie zu den Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder Sammlungseinstellungen für Ihre Projektsammlung).
- Wählen Sie unter Sicherheit die Option Berechtigungen aus.
- Suchen Sie auf der Registerkarte "Benutzer" nach Builddienst für ihren Projektnamen (Ihren Sammlungsnamen).
- Nehmen Sie alle Änderungen an den Nicht-Pipelines-bezogenen Berechtigungen für dieses Konto vor.
- Da Ihr Projektname Build Service (Ihr Sammlungsname) ein Benutzer in Ihrer Organisation oder Sammlung ist, können Sie dieses Konto explizit zu einer beliebigen Ressource hinzufügen , z. B. einem Feed in Azure Artifacts.
Konfigurieren von Berechtigungen für ein Projekt für den Zugriff auf ein anderes Projekt in derselben Projektsammlung
In diesem Beispiel erhält die fabrikam-tailspin/SpaceGameWeb
projektbezogenen Buildidentität Berechtigungen für den Zugriff auf das fabrikam-tailspin/FabrikamFiber
Projekt.
Navigieren Sie im FabrikamFiber Projekt zu Projekteinstellungen, Berechtigungen.
Erstellen Sie eine neue Gruppe mit dem Namen externe Projekte, und fügen Sie das SpaceGameWeb Build Service Konto hinzu.
Wählen Sie Benutzeraus, beginnen Sie mit der Eingabe des Namens SpaceGameWeb-, und wählen Sie das SpaceGameWeb Build Service Konto aus. Wenn anfänglich keine Suchergebnisse angezeigt werden, wählen Sie Suche erweiternaus.
Erteilen Sie den Informationen auf Projektebene anzeigen Berechtigung für diesen Benutzer.
Beispiel: Konfigurieren von Berechtigungen für den Zugriff auf ein anderes Repository in derselben Projektsammlung
In diesem Beispiel erhält die fabrikam-tailspin/SpaceGameWeb
projektbezogenen Buildidentität die Berechtigung für den Zugriff auf das FabrikamFiber
Repository im fabrikam-tailspin/FabrikamFiber
Projekt.
Führen Sie die Schritte aus, um die
SpaceGameWeb
projektbezogenen Buildidentitätsberechtigung für den Zugriff auf dasFabrikamFiber
Projektzu erteilen.Navigieren Sie im FabrikamFiber Projekt zu Project-Einstellungen, Repositorys, FabrikamFiber.
Wählen Sie das Symbol + aus, beginnen Sie mit der Eingabe im Namen SpaceGameWeb-, und wählen Sie das SpaceGameWeb Build Service Konto aus.
Beginnen Sie mit der Eingabe im Namen SpaceGameWeb-, und wählen Sie das SpaceGameWeb Build Service Konto aus.
Erteilen sie Lese- Berechtigungen für diesen Benutzer.
Beispiel: Konfigurieren von Berechtigungen für den Zugriff auf andere Ressourcen in derselben Projektsammlung
In diesem Beispiel erhält die fabrikam-tailspin/SpaceGameWeb
projektbezogenen Buildidentität Berechtigungen für den Zugriff auf andere Ressourcen im fabrikam-tailspin/FabrikamFiber
Projekt.
Führen Sie die Schritte aus, um die
SpaceGameWeb
projektbezogenen Buildidentitätsberechtigung für den Zugriff auf dasFabrikamFiber
Projektzu erteilen.Konfigurieren Sie die gewünschten Berechtigungen für diesen Benutzer.
Häufig gestellte Fragen
Wie kann ich den Auftragsautorisierungsbereich meiner YAML-Pipeline bestimmen?
- Wenn Ihr Projekt ein öffentliches Projekt ist, wird der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen immer Projekt.
- Überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps Organisationseinstellungen:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken, nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken aktiviert ist, ist der Bereich Projekt.
- Andernfalls ist der Bereich Auflistung.
- Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
- Wenn Auftragsautorisierungsbereich für nicht freigegebene Pipelines auf das aktuelle Projekt beschränken, aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für Nicht-Release-Pipelines beschränken, nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
- Wenn Auftragsautorisierungsbereich für nicht freigegebene Pipelines auf das aktuelle Projekt beschränken, aktiviert ist, ist der Bereich Projekt.
- Andernfalls ist der Bereich Auflistung.
Wie kann ich den Auftragsautorisierungsbereich meiner klassischen Buildpipeline bestimmen?
- Wenn sich die Pipeline in einem öffentlichen Projekt befindet, wird der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen Projekt.
- Überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps Organisationseinstellungen:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken, nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt beschränken nicht aktiviert ist, öffnen Sie den Editor für die Pipeline, und navigieren Sie zur Registerkarte Optionen.
- Wenn der BuildauftragsautorisierungsbereichAktuelles Projektist, ist der Bereich Projekt.
- Andernfalls ist der Bereich Auflistung.
- Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
- Wenn Auftragsautorisierungsbereich für nicht freigegebene Pipelines auf das aktuelle Projekt beschränken, aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für Nicht-Release-Pipelines beschränken, nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
- Wenn Auftragsautorisierungsbereich für nicht freigegebene Pipelines auf das aktuelle Projekt beschränken, aktiviert ist, ist der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für nicht freigegebene Pipelines beschränken, nicht aktiviert ist, öffnen Sie den Editor für die Pipeline, und navigieren Sie zur Registerkarte Optionen.
- Wenn der BuildauftragsautorisierungsbereichAktuelles Projektist, ist der Bereich Projekt.
- Andernfalls ist der Bereich Sammlung.
Beim Erstellen einer neuen klassischen Pipeline wird der Auftragsautorisierungsbereich auf aktuellen Projekt- festgelegt, und der Erstellungsauftragsautorisierung sbereich ist standardmäßig auf Projekt- festgelegt.
Wie kann ich den Auftragsautorisierungsbereich meiner klassischen Releasepipeline bestimmen?
Klassische Releasepipelinen in Azure DevOps Server 2020 und unten werden mit Sammlung Bereich ausgeführt.
- Wenn sich die Pipeline in einem öffentlichen Projekt befindet, wird der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen Projekt.
- Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für Releasepipelines beschränken, aktiviert ist, wird der Bereich Projekt.
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für Releasepipelines beschränken, nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
- Wenn Auftragsautorisierungsbereich auf das aktuelle Projekt für Releasepipelines beschränken, aktiviert ist, wird der Bereich Projekt.
- Andernfalls ist der Bereich Auflistung.