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. Ein Auftrag kann z. B.:

  • Quellcodes aus einem Git-Repository auschecken
  • Ein Tag zum Repository hinzufügen
  • Auf einen Feed in Azure Artifacts zugreifen
  • Protokolle vom Agent in den Dienst hochladen
  • Testergebnisse und andere Artefakte vom Agent in den Dienst hochladen
  • Ein Arbeitselement aktualisieren

Azure Pipelines verwendet Auftragszugriffstoken, um diese Aufgaben auszuführen. Ein Auftragszugriffstoken ist ein Sicherheitstoken, das von Azure Pipelines für jeden Auftrag zur Laufzeit dynamisch 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 Projekt- oder Sammlungsbuild-Dienstkonto festgelegt haben.

Auftragsautorisierungsbereich

Sie können den Auftragsautorisierungsbereich auf Sammlung oder Projekt festlegen. Wenn Sie den Bereich auf Sammlung festlegen, können Sie Pipelines den Zugriff auf alle Repositorys in der Sammlung oder Organisation gewähren. Wenn Sie den Bereich auf Projekt festlegen, können Sie den Zugriff auf die Repositorys beschränken, die sich im selben 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 Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen nur für YAML-Pipelines und klassische Buildpipelines. Sie gelten nicht für klassische Releasepipelines. Klassische Releasepipelines 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 mit den Organisationseinstellungen.
  • Wählen Sie unter Pipelines die Option Einstellungen aus.
  • Aktivieren Sie Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen, um den Bereich auf das Projekt zu beschränken. Dies ist die empfohlene Einstellung, da sie die Sicherheit für Ihre Pipelines erhöht.

So legen Sie den Auftragsautorisierungsbereich für ein bestimmtes Projekt fest:

  • Navigieren Sie auf der Azure DevOps-Benutzeroberfläche zur Seite mit den Projekteinstellungen.
  • Wählen Sie unter Pipelines die Option Einstellungen aus.
  • Aktivieren Sie Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen, um den Bereich auf das Projekt zu beschränken. Dies ist die empfohlene Einstellung, da sie die Sicherheit für Ihre Pipelines erhöht.
  • Um den Auftragsautorisierungsbereich auf der Organisationsebene für alle Projekte festzulegen, wählen Sie Organisationseinstellungen>Pipelines>Einstellungen aus.
  • Um den Auftragsautorisierungsbereich für ein bestimmtes Projekt festzulegen, wählen Sie Projekteinstellungen>Pipelines>Einstellungen aus.

Aktivieren Sie mindestens eine der folgenden Einstellungen. Es wird empfohlen, diese Einstellungen zu aktivieren, da dies die Sicherheit für Ihre Pipelines erhöht.

  • Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen: Diese Einstellung gilt für YAML-Pipelines und klassische Buildpipelines 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 nicht in jedem Projekt ändern.

Wichtig

Wenn der Bereich weder auf Organisations- noch auf Projektebene beschränkt ist, erhält jeder Auftrag in Ihrer YAML-Pipeline ein Zugriffstoken für den Sammlungsbereich des Auftrags. Anders ausgedrückt: Ihre Pipeline hat Zugriff auf jedes Repository in jedem Projekt Ihrer Organisation. Wenn ein Angreifer Zugriff auf eine einzelne Pipeline in einem einzelnen Projekt erhält, kann er somit Zugriff auf alle Repositorys in Ihrer Organisation erlangen. Aus diesem Grund wird empfohlen, den Bereich auf der höchsten Ebene (Organisationseinstellungen) zu beschränken, um den Angriff auf ein einzelnes Projekt einzudämmen.

Wenn Sie Azure DevOps Server 2019 verwenden, ist bei Ausführung aller YAML-Aufträge der Auftragsautorisierungsbereich auf Sammlung festgelegt. Anders ausgedrückt: Diese Aufträge haben Zugriff auf alle Repositorys in Ihrer Projektsammlung. Sie können dies in Azure DevOps Server 2019 nicht ändern.

YAML-Pipelines sind in TFS nicht verfügbar.

Hinweis

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

Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys einschränken

Zusätzlich zu den Im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines die Einstellung Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys einschränken.

Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, es sei denn, die Option Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys einschränken ist aktiviert. Wenn diese Option aktiviert ist, können Sie den Zugriffsbereich für alle Pipelines auf nur jene 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: Auftragsautorisierungsbereich auf referenzierte Azure DevOps-Repositorys einschränken.

Schützen des Zugriffs auf Repositorys in YAML-Pipelines

Zusätzlich zu den Im vorherigen Abschnitt beschriebenen Einstellungen für den Auftragsautorisierungsbereich bietet Azure Pipelines eine Einstellung zum Schützen des Zugriffs auf Repositorys in YAML-Pipelines.

Pipelines können auf alle Azure DevOps-Repositorys in autorisierten Projekten zugreifen, es sei denn die Option zum Schützen des Zugriffs auf Repositorys in YAML-Pipelines ist aktiviert. Wenn diese Option aktiviert ist, können Sie den Zugriffsbereich für alle Pipelines auf nur jene 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 zum Schützen 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 zum Ausführen von Pipelines.

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

Diesen Identitäten werden Berechtigungen zugewiesen, die zum Ausführen von Build-/Releaseausführungs-Zeitaktivitäten beim Rückruf an das Azure DevOps-System erforderlich sind. Es sind integrierte Standardberechtigungen vorhanden und Sie können zudem bei Bedarf eigene Berechtigungen verwalten.

Der Name der sammlungsbezogenen Identität hat das folgende Format:

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

Der Name der projektbezogenen Identität hat das folgende Format:

  • {Project Name} Build Service ({Org Name})
  • Wenn z. B. der Organisationsname fabrikam-tailspin und der Projektname SpaceGameWeb lautet, hat dieses Konto den Namen SpaceGameWeb Build Service (fabrikam-tailspin).

Standardmäßig wird die sammlungsbezogene Identität verwendet, sofern nicht anders konfiguriert, wie im vorherigen Abschnitt zum Auftragsautorisierungsbereich beschrieben.

Verwalten der Berechtigungen für das Builddienstkonto

Eine Folge von projektbezogenem Zugriff kann sein, dass die projektbezogene Identität möglicherweise nicht über Berechtigungen für eine Ressource verfügt, die bei einer sammlungsbezogenen Identität vorhanden wären.

Sie können die Berechtigungen des Auftragszugriffstokens in Szenarien wie den Nachfolgenden ändern:

  • Sie möchten, dass Ihre Pipeline auf einen Feed zugreift, der sich in einem anderen Projekt befindet.
  • Sie möchten, dass Ihre Pipeline nicht den Code im Repository ändern kann.
  • Sie möchten, dass Ihre Pipeline keine Arbeitselemente erstellen kann.

So aktualisieren Sie die Berechtigungen des Auftragszugriffstokens:

  • Bestimmen Sie zunächst den Auftragsautorisierungsbereich für Ihre Pipeline. Informationen zum Auftragsautorisierungsbereich finden Sie im obigen Abschnitt. Wenn der Auftragsautorisierungsbereich Sammlung lautet, ist das entsprechende Builddienstkonto, für das Berechtigungen verwaltet werden sollen, Builddienst für die Projektauflistung (Name-Ihrer-Sammlung). Wenn der Auftragsautorisierungsbereich Projekt lautet, ist das Builddienstkonto, für das Berechtigungen verwaltet werden sollen, Builddienst für Name-Ihres-Projekts (Name-Ihrer-Sammlung).

  • So beschränken oder gewähren Sie zusätzlichen Zugriff für Builddienst für die Projektauflistung (Name-Ihrer-Sammlung):

    • Wählen Sie im Überlaufmenü auf der Seite Pipelines die Option Sicherheit verwalten aus.
    • Wählen Sie unter Benutzer die Option Builddienst für die Projektauflistung (Name-Ihrer-Sammlung) aus.
    • Nehmen Sie alle Änderungen an den pipelinebezogenen Berechtigungen für dieses Konto vor.
    • Navigieren Sie zu den Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder den Sammlungseinstellungen für Ihre Projektsammlung).
    • Wählen Sie unter Sicherheit die Option Berechtigungen aus.
    • Suchen Sie auf der Registerkarte Benutzer nach Builddienst für die Projektauflistung (Name-Ihrer-Sammlung).
    • Nehmen Sie alle Änderungen an den nicht-pipelinebezogenen Berechtigungen für dieses Konto vor.
    • Da Builddienst für die Projektauflistung (Name-Ihrer-Sammlung) ein Benutzer in Ihrer Organisation oder Sammlung ist, können Sie dieses Konto explizit zu jeder Ressource hinzufügen, z. B. zu einem Feed in Azure Artifacts.
  • So beschränken oder gewähren Sie zusätzlichen Zugriff für Builddienst für Name-Ihres-Projekts (Name-Ihrer-Sammlung):

    • 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 im Überlaufmenü auf der Seite Pipelines die Option Sicherheit verwalten aus.
    • Wählen Sie unter Benutzer die Option Builddienst für Name-Ihres-Projekts (Name-Ihrer-Sammlung) aus.
    • Nehmen Sie alle Änderungen an den pipelinebezogenen Berechtigungen für dieses Konto vor.
    • Navigieren Sie zu den Organisationseinstellungen für Ihre Azure DevOps-Organisation (oder den Sammlungseinstellungen für Ihre Projektsammlung).
    • Wählen Sie unter Sicherheit die Option Berechtigungen aus.
    • Suchen Sie auf der Registerkarte Benutzer nach Builddienst für Name-Ihres-Projekts (Name-Ihrer-Sammlung).
    • Nehmen Sie alle Änderungen an den nicht-pipelinebezogenen Berechtigungen für dieses Konto vor.
    • Da Builddienst für Name-Ihres-Projekts (Name-Ihrer-Sammlung) ein Benutzer in Ihrer Organisation oder Sammlung ist, können Sie dieses Konto explizit zu jeder Ressource hinzufügen, z. B. zu einem Feed in Azure Artifacts.

Konfigurieren von Berechtigungen eines Projekt für den Zugriff auf ein anderes Projekt in derselben Projektsammlung

In diesem Beispiel werden der projektbezogenen Buildidentität fabrikam-tailspin/SpaceGameWeb Berechtigungen für den Zugriff auf das Projekt fabrikam-tailspin/FabrikamFiber gewährt.

  1. Navigieren Sie im Projekt FabrikamFiber zu den Projekteinstellungen und zu Berechtigungen.

    Screenshot: Konfigurieren von Projekteinstellungen.

  2. Erstellen Sie eine neue Gruppe mit dem Namen Externe Projekte und fügen Sie das Konto Builddienst für SpaceGameWeb hinzu. Screenshot: Erstellen einer neuen Sicherheitsgruppe.

  3. Wählen Sie Benutzer aus, geben Sie den Namen SpaceGameWeb ein und wählen Sie das Konto Builddienst für SpaceGameWeb aus. Wenn anfänglich keine Suchergebnisse angezeigt werden, wählen Sie Suche erweitern aus.

    Screenshot: Auswahl des projektbezogenen Buildidentitätsbenutzers für SpaceGameWeb.

  4. Erteilen Sie dem Benutzer die Berechtigung Projektebeneninformationen anzeigen.

    Screenshot: Erteilen der Berechtigung „Projektebeneninformationen anzeigen“ für einen Benutzer.

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

In diesem Beispiel werden der projektbezogenen Buildidentität fabrikam-tailspin/SpaceGameWeb Berechtigungen für den Zugriff auf das Repository FabrikamFiber im Projekt fabrikam-tailspin/FabrikamFiber gewährt.

  1. Führen Sie die Schritte aus, um der projektbezogenen Buildidentität für SpaceGameWeb die Berechtigung für den Zugriff auf das Projekt FabrikamFiber zu erteilen.

  2. Navigieren Sie im Projekt FabrikamFiber zu Projekteinstellungen, Repositorys, FabrikamFiber.

    Konfigurieren des Repositoryzugriffs.

  1. Wählen Sie das Symbol + aus, geben Sie den Namen SpaceGameWeb ein und wählen Sie das Konto Builddienst für SpaceGameWeb aus.

    Benutzer für den Repositoryzugriff hinzufügen.

  1. Geben Sie den Namen SpaceGameWeb ein und wählen Sie das Konto Builddienst für SpaceGameWeb aus.

    Screenshot: Hinzufügen eines Benutzers für den Repositoryzugriff.

  1. Erteilen Sie diesem Benutzer Leseberechtigungen.

    Screenshot: Konfigurieren von Repositoryberechtigungen.

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

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

  1. Führen Sie die Schritte aus, um der projektbezogenen Buildidentität für SpaceGameWeb die Berechtigung für den Zugriff auf das Projekt FabrikamFiber zu erteilen.

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

    Konfigurieren von Benutzerberechtigungen.

Häufig gestellte Fragen

Gewusst wie: Auftragsautorisierungsbereich einer YAML-Pipeline bestimmen

  • Wenn es sich bei Ihrem Projekt um ein öffentliches Projekt handelt, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen immer Projekt.

Alle YAML-Pipelines in Azure DevOps Server 2019 werden mit dem Auftragsautorisierungsbereich Sammlung ausgeführt.

  • Überprüfen Sie die Pipelineeinstellungen in Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
    • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen in Ihren Projekteinstellungen in Azure DevOps:
      • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
      • Andernfalls ist der Bereich Sammlung.
  • Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen in Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
    • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen in Ihren Projekteinstellungen in Azure DevOps:
      • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
      • Andernfalls ist der Bereich Sammlung.

Gewusst wie: Auftragsautorisierungsbereich einer klassischen Buildpipeline bestimmen

  • Wenn sich Ihre Pipeline in einem öffentliches Projekt befindet, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen Projekt.
  • Öffnen Sie den Editor für die Pipeline und navigieren Sie zur Registerkarte Optionen.
    • Wenn der Autorisierungsbereich für BuildauftragAktuelles Projekt lautet, ist der Bereich Projekt.
    • Andernfalls ist der Bereich Sammlung.
  • Überprüfen Sie die Pipelineeinstellungen in Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
    • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen in Ihren Projekteinstellungen in Azure DevOps:
      • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
      • Wenn Autorisierungsbereich für Auftrag auf aktuelles Projekt begrenzen nicht aktiviert ist, öffnen Sie den Editor für die Pipeline und navigieren Sie zur Registerkarte Optionen.
        • Wenn der Autorisierungsbereich für BuildauftragAktuelles Projekt lautet, ist der Bereich Projekt.
        • Andernfalls ist der Bereich Sammlung.
  • Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen in Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
    • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen in Ihren Projekteinstellungen in Azure DevOps:
      • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
      • Wenn Autorisierungsbereich für Auftrag für Nicht-Releasepipelines auf aktuelles Projekt begrenzen nicht aktiviert ist, öffnen Sie den Editor für die Pipeline und navigieren Sie zur Registerkarte Optionen.
        • Wenn der Autorisierungsbereich für BuildauftragAktuelles Projekt lautet, ist der Bereich Projekt.
        • Andernfalls ist der Bereich Sammlung.

Beim Erstellen einer neuen klassischen Pipeline wird der Auftragsautorisierungsbereich auf das aktuelle Projekt festgelegt, und der Autorisierungsbereich des Buildauftrags ist standardmäßig auf Projekt festgelegt.

Gewusst wie: Auftragsautorisierungsbereich einer klassischen Releasepipeline bestimmen

Klassische Releasepipelines in Azure DevOps Server 2020 und niedriger werden mit der Einstellung Sammlungsbereich ausgeführt.

  • Wenn sich Ihre Pipeline in einem öffentliches Projekt befindet, ist der Auftragsautorisierungsbereich unabhängig von anderen Einstellungen Projekt.
  • Wenn sich die Pipeline in einem privaten Projekt befindet, überprüfen Sie die Pipelineeinstellungen in Ihren Azure DevOps-Organisationseinstellungen:
    • Wenn Autorisierungsbereich für Auftrag für Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
    • Wenn Autorisierungsbereich für Auftrag für Releasepipelines auf aktuelles Projekt begrenzen nicht aktiviert ist, überprüfen Sie die Pipelineeinstellungen in Ihren Projekteinstellungen in Azure DevOps:
      • Wenn Autorisierungsbereich für Auftrag für Releasepipelines auf aktuelles Projekt begrenzen aktiviert ist, lautet der Bereich Projekt.
      • Andernfalls ist der Bereich Sammlung.