Zugreifen auf Repositorys, Artefakte und andere Ressourcen

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Hinweis

In Microsoft Team Foundation Server (TFS) 2018 und früheren Versionen werden Build- und Release-Pipelines als Definitionen bezeichnet, Ausführungen werden als Builds bezeichnet, Dienstverbindungen werden als Dienstendpunkte bezeichnet, Stages werden als Umgebungen bezeichnet und Aufträge werden als Phasen bezeichnet.

Zur Laufzeit kann jeder Auftrag in einer Pipeline auf andere Ressourcen in Azure DevOps zugreifen. Ein Auftrag kann z. B. folgendes sein:

  • Auschecken von Quellcode aus einem Git-Repository
  • Hinzufügen eines Tags zum Repository
  • Zugreifen auf einen Feed in Azure-Artefakten
  • Hochladen von Protokollen vom Agent in den Dienst
  • Hochladen von Testergebnissen und anderen Artefakten vom Agent in den Dienst
  • Aktualisieren einer Arbeitsaufgabe

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 zugreifen kann, indem Sie steuern, wie Berechtigungen für Auftragszugriffstoken erteilt werden.

Die Berechtigungen des Tokens werden aus (a) Auftragsautorisierungsbereich und (b) den Berechtigungen abgeleitet, die Sie für das Projekt- oder Sammlungsbuilddienstkonto festgelegt haben.

Auftragsautorisierungsbereich

Sie können den Auftragsautorisierungsbereich als Sammlung oder Projekt festlegen. Wenn Sie den Bereich für die Auflistung festlegen, wählen Sie aus, dass Pipelines auf alle Repositorys in der Sammlung oder Organisation zugreifen können. Durch Festlegen des Bereichs auf Projekt können Sie den Zugriff nur auf diese Repositorys beschränken, die sich in demselben Projekt wie die Pipeline befinden.

Der Auftragsautorisierungsbereich kann für die gesamte Azure DevOps-Organisation oder für ein bestimmtes Projekt festgelegt werden.

Hinweis

In Azure DevOps Server 2020 gilt der Bereich der Auftragsautorisierung auf das aktuelle Projekt nur für YAML-Pipelines und klassische Buildpipelinen. Es gilt nicht für klassische Releasepipelinen. Klassische Releasepipelinen werden immer im Projektsammlungsbereich ausgeführt.

So legen Sie den Auftragsautorisierungsbereich für die Organisation fest:

  • Navigieren Sie zur Seite "Organisationseinstellungen" auf der Benutzeroberfläche von Azure DevOps.
  • Wählen Sie "Einstellungen " unter "Pipelines" aus.
  • Aktivieren Sie den Bereich "Auftragsautorisierung einschränken" 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 zur Seite "Projekteinstellungen" auf der Benutzeroberfläche von Azure DevOps.
  • Wählen Sie "Einstellungen " unter "Pipelines" aus.
  • Aktivieren Sie den Bereich "Auftragsautorisierung einschränken" 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 "Pipelines>"-Einstellungen der Organisation aus>.
  • Um den Auftragsautorisierungsbereich für ein bestimmtes Projekt festzulegen, wählen Sie "Pipelines-Einstellungen>" fürProject-Einstellungen> aus.

Aktivieren Sie eine oder mehrere der folgenden Einstellungen. Das Aktivieren dieser Einstellungen wird empfohlen, da die Sicherheit für Ihre Pipelines verbessert wird.

Hinweis

Wenn der Bereich auf Organisationsebene auf Projektebene 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 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 einzelnen 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 zu enthalten.

Wenn Sie Azure DevOps Server 2019 verwenden, werden alle YAML-Aufträge mit dem auf die Sammlung festgelegten Auftragsautorisierungsbereich ausgeführt. Mit anderen Worten, diese Aufträge haben Zugriff auf alle Repositorys in Ihrer Projektsammlung. Dies kann in Azure DevOps Server 2019 nicht geändert werden.

YAML-Pipelines sind in TFS nicht verfügbar.

Hinweis

Wenn sich Ihre Pipeline in einem öffentlichen Projekt befindet, wird der Auftragsautorisierungsbereich automatisch auf Das Projekt beschränkt, unabhängig davon, was Sie in jeder Einstellung konfigurieren. Aufträge in einem öffentlichen Projekt können auf Ressourcen wie Buildartefakte oder Testergebnisse nur innerhalb des Projekts und nicht aus anderen Projekten der Organisation zugreifen.

Beschränken des Auftragsautorisierungsbereichs auf Azure DevOps-Repositorys

Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines einen Berechtigungsbereich für den Grenzwert für die Auftragsautorisierung, um auf die Einstellung für Azure DevOps-Repositorys zu verweisen .

Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, es sei denn, der Auftragsberechtigungsbereich für referenzierte Azure DevOps-Repositorys ist aktiviert. Mit dieser Option können Sie den Zugriffsbereich für alle Pipelines nur auf Azure DevOps-Repositorys explizit auf einen Schritt oder eine checkoutuses Anweisung im Pipelineauftrag verweisen, auf den dieses Repository verwendet wird.

Weitere Informationen finden Sie unter Azure Repos Git-Repositorys – Einschränken des Auftragsberechtigungsbereichs für referenzierte Azure DevOps-Repositorys.

Schützen des Zugriffs auf Repositorys in YAML-Pipelines

Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen für die Auftragsautorisierung bietet Azure Pipelines einen Schutzzugriff auf Repositorys in YAML-Pipelines-Einstellung .

Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, sofern der Zugriff auf Repositorys in YAML-Pipelines aktiviert ist. Mit dieser Option können Sie den Zugriffsbereich für alle Pipelines nur auf Azure DevOps-Repositorys explizit auf einen Schritt oder eine checkoutuses Anweisung im Pipelineauftrag verweisen, auf den dieses Repository verwendet wird.

Weitere Informationen finden Sie unter Azure Repos Git-Repositorys – Schützen des Zugriffs auf Repositorys in YAML-Pipelines.

Wichtig

Schutz des Zugriffs auf Repositorys in YAML-Pipelines 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, um Pipelines auszuführen.

  • Eine Sammlungsidentität, die Zugriff auf alle Projekte in der Auflistung hat (oder Organisation für Azure DevOps Services)
  • Eine projektbezogene Identität, die Zugriff auf ein einzelnes Projekt hat

Diese Identitäten werden Berechtigungen zugewiesen, die erforderlich sind, um Build-/Release-Ausführungszeitaktivitäten auszuführen, wenn Sie zurück zum Azure DevOps-System aufrufen. Es gibt integrierte Standardberechtigungen, und Sie können auch Ihre eigenen Berechtigungen bei Bedarf verwalten.

Der Name der Auflistungsidentität weist das folgende Format auf:

  • Project Collection Build Service ({OrgName})
  • Wenn der Organisationsname beispielsweise lautet, hat dieses Konto den Namen fabrikam-tailspinProject Collection Build Service (fabrikam-tailspin).

Der Name der projektbezogenen Identität weist das folgende Format auf:

  • {Project Name} Build Service ({Org Name})
  • Wenn beispielsweise der Organisationsname und der Projektname SpaceGameWeblautet, weist dieses Konto den Namen fabrikam-tailspinSpaceGameWeb Build Service (fabrikam-tailspin)auf.

Standardmäßig wird die Sammlungsidentität verwendet, es sei denn, dies ist anders als im vorherigen Abschnitt " Auftragsberechtigungsbereich " beschrieben.

Verwalten von Builddienstkontoberechtigungen

Ein Ergebnis der Einstellung des Projektbereichszugriffs kann sein, dass die Projektbereichsidentität möglicherweise keine Berechtigungen für eine Ressource hat, die die auflistungsbezogene Eigenschaft besitzt.

Möglicherweise möchten Sie 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 Ihre Pipeline auf das Ändern von Code im Repository beschränkt werden soll.
  • Sie möchten, dass Ihre Pipeline auf das Erstellen von Arbeitselementen beschränkt werden soll.

So aktualisieren Sie die Berechtigungen des Auftragszugriffstokens:

  • Bestimmen Sie zunächst den Auftragsberechtigungsbereich für Ihre Pipeline. Lesen Sie den Abschnitt oben, um den Bereich der Auftragsberechtigung zu verstehen. Wenn der Auftragsautorisierungsbereich Sammlung ist, dann ist das entsprechende Builddienstkonto zum Verwalten von Berechtigungen auf Project Collection Build Service (Name Ihrer Auflistung) festgelegt. Wenn der Auftragsautorisierungsbereich projektiert ist, dann ist das Builddienstkonto zum Verwalten von Berechtigungen auf Ihrem Projektnamen BuildDienst (Name Ihrer Auflistung).

  • So beschränken oder gewähren Sie zusätzlichen Zugriff auf den Projektsammlungs-Builddienst (Name Ihrer Auflistung):

    • Wählen Sie " Sicherheit verwalten " im Menü "Überlauf" auf der Seite "Pipelines " aus.
    • Wählen Sie unter "Benutzer" den Projektsammlungs-Builddienst (Name Ihrer Auflistung) aus.
    • Ändern Sie alle Änderungen an den zugehörigen Pipelineberechtigungen für dieses Konto.
    • Navigieren Sie zu Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder Sammlungseinstellungen für Ihre Projektsammlung).
    • Wählen Sie "Berechtigungen unter Sicherheit" aus.
    • Suchen Sie auf der Registerkarte "Benutzer" nach Project-Auflistungs-Builddienst (Name Ihrer Auflistung).
    • Nehmen Sie änderungen an den nicht mit Pipelines verbundenen Berechtigungen für dieses Konto vor.
    • Da Project Collection Build Service (Ihr Auflistungsname) ein Benutzer in Ihrer Organisation oder Auflistung ist, können Sie dieses Konto explizit zu einer beliebigen Ressource hinzufügen – z. B. zu einem Feed in Azure-Artefakten.
  • So beschränken oder gewähren Sie zusätzlichen Zugriff auf Ihren Projektnamen-Builddienst (Name Ihrer Auflistung):

    • Das Builddienstkonto, auf dem Sie Berechtigungen verwalten können, wird nur erstellt, nachdem Sie die Pipeline einmal ausgeführt haben. Stellen Sie sicher, dass Sie die Pipeline bereits einmal ausgeführt haben.
    • Wählen Sie " Sicherheit verwalten " im Menü "Überlauf" auf der Seite "Pipelines " aus.
    • Wählen Sie unter "Benutzer" den Builddienst (Ihren Auflistungsnamen) aus.
    • Ändern Sie alle Änderungen an den zugehörigen Pipelineberechtigungen für dieses Konto.
    • Navigieren Sie zu Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder Sammlungseinstellungen für Ihre Projektsammlung).
    • Wählen Sie "Berechtigungen unter Sicherheit" aus.
    • Suchen Sie auf der Registerkarte "Benutzer" nach Ihrem Projektnamen-Builddienst (Name Ihrer Sammlung).
    • Nehmen Sie änderungen an den nicht mit Pipelines verbundenen Berechtigungen für dieses Konto vor.
    • Da Ihr Projektname Build Service (Ihr Auflistungsname) ein Benutzer in Ihrer Organisation oder Auflistung ist, können Sie dieses Konto explizit zu einer beliebigen Ressource hinzufügen – z. B. zu einem Feed in Azure-Artefakten.

Beispiel: Konfigurieren von Berechtigungen zum Zugriff auf ein anderes Repo in derselben Projektprojektsammlung

In diesem Beispiel wird die fabrikam-tailspin/SpaceGameWeb projektbezogene Buildidentität dem Zugriff auf das FabrikamFiberfabrikam-tailspin/FabrikamFiber Repository im Projekt gewährt.

  1. Navigieren Sie im FabrikamFiber-Projekt zu Project-Einstellungen, Repositorys, FabrikamFiber.

    Konfigurieren des Repositoryzugriffs.

  2. Wählen Sie das + Symbol aus, beginnen Sie mit dem Namen SpaceGameWeb, und wählen Sie das SpaceGameWeb Build Service-Konto aus.

    Hinzufügen des Benutzers zum Repositoryzugriff.

  3. Konfigurieren Sie die gewünschten Berechtigungen für diesen Benutzer.

    Konfigurieren sie Repositoryberechtigungen.

Beispiel: Konfigurieren von Berechtigungen zum Zugriff auf andere Ressourcen in derselben Projektsammlung

In diesem Beispiel wird der fabrikam-tailspin/SpaceGameWeb Projektbereichs-Buildidentität Berechtigungen für den Zugriff auf andere Ressourcen im fabrikam-tailspin/FabrikamFiber Projekt gewährt.

  1. Navigieren Sie im FabrikamFiber-Projekt zu Project-Einstellungen, Berechtigungen.

    Konfigurieren der Projekteinstellungen.

  2. Wählen Sie "Benutzer" aus, beginnen Sie mit dem Namen "SpaceGameWeb", und wählen Sie das SpaceGameWeb Build Service-Konto aus. Wenn zunächst keine Suchergebnisse angezeigt werden, wählen Sie die Suche erweitern aus.

    Wählen Sie

  3. Konfigurieren Sie die gewünschten Berechtigungen für diesen Benutzer.

    Konfigurieren von Benutzerberechtigungen.

Häufig gestellte Fragen

Gewusst wie bestimmen den Auftragsberechtigungsbereich meiner YAML-Pipeline?

  • Wenn Ihr Projekt ein öffentliches Projekt ist, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen immer projektiert .

Alle YAML-Pipelines in Azure DevOps Server 2019 werden unter Sammlungsauftragsberechtigungsbereich ausgeführt.

  • Überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn der Bereich "Auftragsberechtigung einschränken" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich "Auftragsberechtigung auf aktuelles Projekt einschränken" nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
      • Wenn der Bereich "Auftragsberechtigung einschränken" auf das aktuelle Projekt 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 der Umfang der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
      • Wenn der Umfang der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
      • Andernfalls ist der Bereich Auflistung.

Gewusst wie bestimmen den Auftragsberechtigungsbereich meiner klassischen Buildpipeline?

  • Wenn sich die Pipeline in einem öffentlichen Projekt befindet, wird der Auftragsberechtigungsbereich unabhängig von anderen Einstellungen projektiert .
  • Öffnen Sie den Editor für die Pipeline, und navigieren Sie zur Registerkarte "Optionen" .
    • Wenn der Bereich für die Erstellungsauftragsberechtigung aktuelles Projekt ist, ist der Bereich Projekt.
    • Andernfalls ist der Bereich Auflistung.
  • Überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn der Bereich "Auftragsberechtigung einschränken" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich "Auftragsberechtigung auf aktuelles Projekt einschränken" nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
      • Wenn der Bereich "Auftragsberechtigung einschränken" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
      • Wenn der Bereich "Auftragsberechtigung einschränken" auf das aktuelle Projekt nicht aktiviert ist, öffnen Sie den Editor für die Pipeline, und navigieren Sie zur Registerkarte "Optionen ".
        • Wenn der Bereich für die Erstellungsauftragsberechtigung aktuelles Projekt 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 der Umfang der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter Ihren Project-Einstellungen in Azure DevOps:
      • Wenn der Umfang der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
      • Wenn der Bereich der Auftragsberechtigung auf das aktuelle Projekt für nicht freigegebene Pipelines nicht aktiviert ist, öffnen Sie den Editor für die Pipeline, und navigieren Sie zur Registerkarte "Optionen ".
        • Wenn der Bereich für die Erstellungsauftragsautorisierungaktuelles Projekt ist, ist der Bereich Projekt.
        • Der Bereich ist eine Auflistung.

Gewusst wie den Auftragsautorisierungsbereich meiner klassischen Releasepipeline bestimmen?

Klassische Releasepipelinen in Azure DevOps Server 2020 und unten mit Sammlungsbereich ausführen.

  • Wenn sich die Pipeline in einem öffentlichen Projekt befindet, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen projektunabhängig .
  • Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen unter Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt für Releasepipelinen aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich der Auftragsautorisierung auf das aktuelle Projekt für Releasepipelinen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter den Project-Einstellungen in Azure DevOps:
      • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt für Releasepipelinen aktiviert ist, ist der Bereich Projekt.
      • Andernfalls ist der Bereich sammlung.