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 Artifacts
  • Hochladen Protokolle vom Agent an den Dienst
  • Hochladen Testergebnisse und andere Artefakte vom Agent zum 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 auf der Azure DevOps Benutzeroberfläche zur Seite "Organisationseinstellungen".
  • 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 Azure DevOps Benutzeroberfläche.
  • 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.
  • Wählen Sie "Organisationseinstellungen>Pipelines Einstellungen>" aus, um den Bereich für die Auftragsautorisierung auf Organisationsebene für alle Projekte festzulegen.
  • Um den Auftragsautorisierungsbereich für ein bestimmtes Projekt festzulegen, wählen Sie Project Einstellungen>Pipelines>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 Bereichs der Auftragsautorisierung auf referenzierte Azure DevOps Repositorys

Zusätzlich zu den im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines einen Bereich zur Einschränkung der Auftragsautorisierung, um auf die Einstellung Azure DevOps Repositorys zu verweisen.

Pipelines können auf alle Azure DevOps Repositorys in autorisierten Projekten zugreifen, es sei denn, der Bereich der Auftragsautorisierung auf referenzierte Azure DevOps Repositorys ist aktiviert. Mit dieser Option können Sie den Zugriffsbereich für alle Pipelines auf nur Azure DevOps Repositorys reduzieren, auf die explizit nach einem checkout Schritt oder einer uses Anweisung im Pipelineauftrag verwiesen wird, auf den dieses Repository verwendet wird.

Weitere Informationen finden Sie unter Azure Repos Git-Repositorys – Einschränken des Auftragsautorisierungsbereichs, um auf Azure DevOps Repositorys zu verweisen.

Wichtig

Beschränken Sie den Bereich der Auftragsautorisierung auf referenzierte Azure DevOps Repositorys 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 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 Ausführungszeitaktivitäten für die Build-/Release-Ausführung 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 Identitätsname des Auflistungsbereichs weist das folgende Format auf:

  • Project Collection Build Service ({OrgName})
  • Wenn der Name der Organisation beispielsweise lautet, weist fabrikam-tailspindieses Konto den Namen auf Project 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 Name der Organisation fabrikam-tailspin und der Projektname lautet, hat SpaceGameWebdieses Konto den Namen SpaceGameWeb 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 Projektbereichsidentität möglicherweise keine Berechtigungen für eine Ressource hat, die der Sammlungsbereich zugewiesen hat.

Möglicherweise möchten Sie die Berechtigungen des Auftragszugriffstokens in Szenarien wie 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 vom Ändern von Code im Repository eingeschrä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:

  • Ermitteln Sie zunächst den Auftragsautorisierungsbereich für Ihre Pipeline. Lesen Sie den Abschnitt oben, um den Bereich der Auftragsautorisierung zu verstehen. Wenn der Bereich für die Auftragsautorisierung sammlung ist, ist das entsprechende Builddienstkonto zum Verwalten von Berechtigungen Project Sammlungsbuilddienst (Ihr-Sammlungsname). Wenn der Auftragsautorisierungsbereich projektiert ist, ist das Builddienstkonto zum Verwalten von Berechtigungen für den Builddienst "Your-project-name" (Your-collection-name).

  • So beschränken oder gewähren Sie zusätzlichen Zugriff auf Project Sammlungsbuilddienst (Ihr-Sammlungsname):

    • Wählen Sie "Sicherheit verwalten" im Überlaufmenü auf Pipelines Seite aus.
    • Wählen Sie unter "Benutzer" Project Sammlungsbuilddienst (Ihren Sammlungsnamen) aus.
    • Nehmen Sie änderungen an den pipelinesbezogenen Berechtigungen für dieses Konto vor.
    • 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 Sammlungsbuilddienst (Ihrem Sammlungsnamen).
    • Nehmen Sie änderungen an den nicht pipelinesbezogenen Berechtigungen für dieses Konto vor.
    • Da Project Sammlungsbuilddienst (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 den Builddienst ihres Projektnamens (Ihren-Sammlungsnamen):

    • Das Builddienstkonto, auf dem 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 "Sicherheit verwalten" im Überlaufmenü auf Pipelines Seite aus.
    • Wählen Sie unter "Benutzer" den Builddienst ihres Projekts (Ihren Sammlungsnamen) aus.
    • Nehmen Sie änderungen an den pipelinesbezogenen Berechtigungen für dieses Konto vor.
    • 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 (Ihrem Sammlungsnamen).
    • Nehmen Sie änderungen an den nicht pipelinesbezogenen 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. zu einem Feed in Azure Artifacts.

Beispiel: Konfigurieren von Berechtigungen für den Zugriff auf ein anderes Repository in derselben Projektprojektsammlung

In diesem Beispiel erhält die fabrikam-tailspin/SpaceGameWeb projektbezogene Buildidentität die Berechtigung zum Zugriff auf das FabrikamFiber Repository im fabrikam-tailspin/FabrikamFiber Projekt.

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

    Configure repository access.

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

    Add user for repository access.

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

    Configure repository permissions.

Beispiel: Konfigurieren von Berechtigungen für den Zugriff auf andere Ressourcen in derselben Projektsammlung

In diesem Beispiel erhält die fabrikam-tailspin/SpaceGameWeb projektbezogene Buildidentität Berechtigungen für den Zugriff auf andere Ressourcen im fabrikam-tailspin/FabrikamFiber Projekt.

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

    Configure project settings.

  2. Wählen Sie "Benutzer" aus, beginnen Sie mit der Eingabe im Namen "SpaceGameWebWeb", und wählen Sie das SpaceGameWeb Build Service-Konto aus. Wenn anfänglich keine Suchergebnisse angezeigt werden, wählen Sie " Suche erweitern" aus.

    Select SpaceGameWeb project-scoped build identity user.

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

    Configure user permissions.

Häufig gestellte Fragen

Gewusst wie den Auftragsautorisierungsbereich meiner YAML-Pipeline bestimmen?

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

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

  • Überprüfen Sie die Pipelineeinstellungen unter den Einstellungen ihrer Azure DevOps Organisation:
    • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
    • Wenn der Berechtigungsbereich für den Auftrag auf das aktuelle Projekt nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter den Project Einstellungen in Azure DevOps:
      • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
      • Andernfalls ist der Bereich sammlung.
  • 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 nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich der Auftragsautorisierung 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 Bereich "Auftragsautorisierung" auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
      • Andernfalls ist der Bereich sammlung.

Gewusst wie den Auftragsautorisierungsbereich meiner klassischen Buildpipeline bestimmen?

  • Wenn sich die Pipeline in einem öffentlichen Projekt befindet, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen projektunabhängig .
  • Ö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.
    • Andernfalls ist der Bereich eine Auflistung.
  • Überprüfen Sie die Pipelineeinstellungen unter den Einstellungen ihrer Azure DevOps Organisation:
    • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
    • Wenn der Berechtigungsbereich für den Auftrag auf das aktuelle Projekt nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter den Project Einstellungen in Azure DevOps:
      • Wenn der Bereich "Auftragsautorisierung" auf das aktuelle Projekt aktiviert ist, ist der Bereich Projekt.
      • Wenn der Bereich für die Auftragsautorisierung 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 Erstellungsauftragsautorisierungaktuelles Projekt ist, ist der Bereich Projekt.
        • Andernfalls ist der Bereich eine Auflistung.
  • 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 nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
    • Wenn der Bereich der Auftragsautorisierung 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 Bereich "Auftragsautorisierung" auf das aktuelle Projekt für nicht freigegebene Pipelines aktiviert ist, ist der Bereich Projekt.
      • Wenn der Bereich der Auftragsautorisierung 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 Berechtigungsbereich des Auftrags auf das aktuelle Projekt für Releasepipelinen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen unter ihren 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.