Uzyskiwanie dostępu do repozytoriów, artefaktów i innych zasobów

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

W czasie wykonywania każde zadanie w potoku może uzyskiwać dostęp do innych zasobów w usłudze Azure DevOps. Na przykład zadanie może:

  • Zapoznaj się z kodem źródłowym z repozytorium Git
  • Dodawanie tagu do repozytorium
  • Uzyskiwanie dostępu do źródła danych w usłudze Azure Artifacts
  • Przekazywanie dzienników z agenta do usługi
  • Przekazywanie wyników testów i innych artefaktów z agenta do usługi
  • Aktualizuj element roboczy

Usługa Azure Pipelines używa tokenów dostępu do zadań do wykonywania tych zadań. Token dostępu do zadania to token zabezpieczający, który jest dynamicznie generowany przez usługę Azure Pipelines dla każdego zadania w czasie wykonywania. Agent, na którym jest uruchomione zadanie, używa tokenu dostępu do zadania w celu uzyskania dostępu do tych zasobów w usłudze Azure DevOps. Możesz kontrolować zasoby, do których potok ma dostęp, kontrolując sposób udzielania uprawnień do tokenów dostępu do zadań.

Uprawnienia tokenu pochodzą z (a) zakresu autoryzacji zadania i (b) uprawnienia ustawionego na koncie usługi kompilacji projektu lub kolekcji.

Zakres autoryzacji zadania

Zakres autoryzacji zadania można ustawić na kolekcję lub projekt. Ustawiając zakres na kolekcję, możesz zezwolić potokom na dostęp do wszystkich repozytoriów w kolekcji lub organizacji. Ustawiając zakres projektu, należy ograniczyć dostęp tylko do tych repozytoriów, które znajdują się w tym samym projekcie co potok.

Zakres autoryzacji zadania można ustawić dla całej organizacji usługi Azure DevOps lub dla określonego projektu.

Uwaga

W usłudze Azure DevOps Server 2020 ogranicz zakres autoryzacji zadań do bieżącego projektu dotyczy tylko potoków YAML i klasycznych potoków kompilacji. Nie ma zastosowania do klasycznych potoków wydania. Klasyczne potoki wydania zawsze są uruchamiane z zakresem kolekcji projektów.

Aby ustawić zakres autoryzacji zadania dla organizacji:

  • Przejdź do strony ustawień organizacji w interfejsie użytkownika usługi Azure DevOps.
  • Wybierz pozycję Ustawienia w obszarze Potoki.
  • Włącz ograniczenie zakresu autoryzacji zadania do bieżącego projektu , aby ograniczyć zakres do projektu. Jest to zalecane ustawienie, ponieważ zwiększa bezpieczeństwo potoków.

Aby ustawić zakres autoryzacji zadania dla określonego projektu:

  • Przejdź do strony ustawień projektu w interfejsie użytkownika usługi Azure DevOps.
  • Wybierz pozycję Ustawienia w obszarze Potoki.
  • Włącz ograniczenie zakresu autoryzacji zadania do bieżącego projektu , aby ograniczyć zakres do projektu. Jest to zalecane ustawienie, ponieważ zwiększa bezpieczeństwo potoków.
  • Aby ustawić zakres autoryzacji zadań na poziomie organizacji dla wszystkich projektów, wybierz pozycję Potoki> ustawień>organizacji Ustawienia.
  • Aby ustawić zakres autoryzacji zadania dla określonego projektu, wybierz pozycję Potoki> ustawień>projektu Ustawienia.

Włącz co najmniej jedno z następujących ustawień. Włączenie tych ustawień jest zalecane, ponieważ zwiększa bezpieczeństwo potoków.

  • Ogranicz zakres autoryzacji zadań do bieżącego projektu dla potoków innych niż wydania — to ustawienie dotyczy potoków YAML i klasycznych potoków kompilacji i nie dotyczy klasycznych potoków wydania.
  • Ogranicz zakres autoryzacji zadań do bieżącego projektu dla potoków wydania — to ustawienie dotyczy tylko klasycznych potoków wydania.

Uwaga

Jeśli zakres jest ustawiony na projekt na poziomie organizacji, nie można zmienić zakresu w każdym projekcie.

Ważne

Jeśli zakres nie jest ograniczony na poziomie organizacji lub na poziomie projektu, każde zadanie w potoku YAML pobiera token dostępu do zadania w zakresie kolekcji. Innymi słowy potok ma dostęp do dowolnego repozytorium w dowolnym projekcie organizacji. Jeśli przeciwnik może uzyskać dostęp do pojedynczego potoku w jednym projekcie, będzie mógł uzyskać dostęp do dowolnego repozytorium w organizacji. Dlatego zaleca się ograniczenie zakresu na najwyższym poziomie (ustawienia organizacji) w celu powstrzymania ataku do pojedynczego projektu.

Jeśli używasz usługi Azure DevOps Server 2019, wszystkie zadania YAML są uruchamiane z zakresem autoryzacji zadania ustawionym na kolekcję. Innymi słowy, te zadania mają dostęp do wszystkich repozytoriów w kolekcji projektów. Nie można tego zmienić w usłudze Azure DevOps Server 2019.

Potoki YAML nie są dostępne w programie TFS.

Uwaga

Jeśli potok znajduje się w projekcie publicznym, zakres autoryzacji zadania jest automatycznie ograniczony do projektu niezależnie od tego, co zostało skonfigurowane w dowolnym ustawieniu. Zadania w projekcie publicznym mogą uzyskiwać dostęp do zasobów, takich jak artefakty kompilacji lub wyniki testów tylko w projekcie, a nie z innych projektów organizacji.

Ograniczanie zakresu autoryzacji zadań do odwołań do repozytoriów usługi Azure DevOps

Oprócz ustawień zakresu autoryzacji zadania opisanych w poprzedniej sekcji usługa Azure Pipelines udostępnia zakres autoryzacji zadania Limit do przywoływanych repozytoriów usługi Azure DevOps.

Potoki mogą uzyskiwać dostęp do dowolnych repozytoriów usługi Azure DevOps w autoryzowanych projektach, chyba że włączono ograniczenie zakresu autoryzacji zadań do odwołań do repozytoriów usługi Azure DevOps. Po włączeniu tej opcji można zmniejszyć zakres dostępu dla wszystkich potoków tylko do repozytoriów usługi Azure DevOps, do których jawnie odwołuje się checkout krok lub uses instrukcja w zadaniu potoku, które używa tego repozytorium.

Aby uzyskać więcej informacji, zobacz Repozytoria Git usługi Azure Repos — ograniczanie zakresu autoryzacji zadań do odwołań do repozytoriów usługi Azure DevOps.

Ochrona dostępu do repozytoriów w potokach YAML

Oprócz ustawień zakresu autoryzacji zadania opisanych w poprzedniej sekcji usługa Azure Pipelines zapewnia ustawienie Ochrona dostępu do repozytoriów w potokach YAML.

Potoki mogą uzyskiwać dostęp do dowolnych repozytoriów usługi Azure DevOps w autoryzowanych projektach, chyba że włączono ochronę dostępu do repozytoriów w potokach YAML. Po włączeniu tej opcji można zmniejszyć zakres dostępu dla wszystkich potoków tylko do repozytoriów usługi Azure DevOps, do których jawnie odwołuje się checkout krok lub uses instrukcja w zadaniu potoku, które używa tego repozytorium.

Aby uzyskać więcej informacji, zobacz Repozytoria Git usługi Azure Repos — ochrona dostępu do repozytoriów w potokach YAML.

Ważne

Ochrona dostępu do repozytoriów w potokach YAML jest domyślnie włączona dla nowych organizacji i projektów utworzonych po maju 2020 r.

Tożsamości kompilacji o określonym zakresie

Usługa Azure DevOps używa dwóch wbudowanych tożsamości do wykonywania potoków.

  • Tożsamość o zakresie kolekcji, która ma dostęp do wszystkich projektów w kolekcji (lub organizacji dla usług Azure DevOps Services)
  • Tożsamość o zakresie projektu, która ma dostęp do pojedynczego projektu

Te tożsamości są przydzielane uprawnienia niezbędne do wykonywania działań czasu wykonywania kompilacji/wydania podczas wywoływania z powrotem do systemu Azure DevOps. Istnieją wbudowane uprawnienia domyślne i możesz również zarządzać własnymi uprawnieniami zgodnie z potrzebami.

Nazwa tożsamości o zakresie kolekcji ma następujący format:

  • Project Collection Build Service ({OrgName})
  • Jeśli na przykład nazwa organizacji to fabrikam-tailspin, to konto ma nazwę Project Collection Build Service (fabrikam-tailspin).

Nazwa tożsamości o zakresie projektu ma następujący format:

  • {Project Name} Build Service ({Org Name})
  • Jeśli na przykład nazwa organizacji to fabrikam-tailspin , a nazwa projektu to SpaceGameWeb, to konto ma nazwę SpaceGameWeb Build Service (fabrikam-tailspin).

Domyślnie jest używana tożsamość o zakresie kolekcji, chyba że skonfigurowano inaczej zgodnie z opisem w poprzedniej sekcji Zakres autoryzacji zadania .

Zarządzanie uprawnieniami konta usługi kompilacji

Jednym z wyników ustawienia dostępu w zakresie projektu może być to, że tożsamość o zakresie projektu może nie mieć uprawnień do zasobu, który ma zakres kolekcji.

Możesz zmienić uprawnienia tokenu dostępu do zadania w scenariuszach, takich jak:

  • Chcesz, aby potok uzyskiwał dostęp do kanału informacyjnego, który znajduje się w innym projekcie.
  • Chcesz, aby potok był ograniczony do zmiany kodu w repozytorium.
  • Chcesz, aby potok był ograniczony do tworzenia elementów roboczych.

Aby zaktualizować uprawnienia tokenu dostępu do zadania:

  • Najpierw określ zakres autoryzacji zadania dla potoku. Zobacz sekcję powyżej, aby zrozumieć zakres autoryzacji zadania. Jeśli zakres autoryzacji zadania to kolekcja, odpowiednie konto usługi kompilacji do zarządzania uprawnieniami jest usługa Project Collection Build Service (nazwa-kolekcja). Jeśli zakres autoryzacji zadania to projekt, to konto usługi kompilacji do zarządzania uprawnieniami to Your-project-name Build Service (twoja nazwa-kolekcja).

  • Aby ograniczyć lub udzielić dodatkowego dostępu do usługi kompilacji kolekcji projektów (nazwa kolekcji):

    • Wybierz pozycję Zarządzaj zabezpieczeniami w menu przepełnienia na stronie Potoki .
    • W obszarze Użytkownicy wybierz pozycję Usługa kompilacji kolekcji projektów (nazwa-kolekcja).
    • Wprowadź zmiany w uprawnieniach związanych z potokami dla tego konta.
    • Przejdź do ustawień organizacji dla organizacji usługi Azure DevOps (lub ustawień kolekcji dla kolekcji projektów).
    • Wybierz pozycję Uprawnienia w obszarze Zabezpieczenia.
    • Na karcie Użytkownicy wyszukaj pozycję Project Collection Build Service (twoja nazwa-kolekcja).
    • Wprowadź zmiany w uprawnieniach niezwiązanych z potokami dla tego konta.
    • Ponieważ usługa Kompilacja kolekcji projektów (nazwa kolekcji) jest użytkownikiem w organizacji lub kolekcji, możesz jawnie dodać to konto do dowolnego zasobu — na przykład do źródła danych w usłudze Azure Artifacts.
  • Aby ograniczyć lub udzielić dodatkowego dostępu do usługi kompilacji Your-project-name (nazwa-kolekcji):

    • Konto usługi kompilacji, na którym można zarządzać uprawnieniami, zostanie utworzone tylko po uruchomieniu potoku raz. Upewnij się, że potok został już uruchomiony raz.
    • Wybierz pozycję Zarządzaj zabezpieczeniami w menu przepełnienia na stronie Potoki .
    • W obszarze Użytkownicy wybierz pozycję Twoja-nazwa projektu Usługa kompilacji (twoja nazwa-kolekcja).
    • Wprowadź zmiany w uprawnieniach związanych z potokami dla tego konta.
    • Przejdź do ustawień organizacji dla organizacji usługi Azure DevOps (lub ustawień kolekcji dla kolekcji projektów).
    • Wybierz pozycję Uprawnienia w obszarze Zabezpieczenia.
    • Na karcie Użytkownicy wyszukaj usługę kompilacji Nazwa projektu (twoja-kolekcja-nazwa).
    • Wprowadź zmiany w uprawnieniach niezwiązanych z potokami dla tego konta.
    • Ponieważ Usługa kompilacji Your-project-name (nazwa-kolekcji) jest użytkownikiem w organizacji lub kolekcji, możesz jawnie dodać to konto do dowolnego zasobu — na przykład do kanału informacyjnego w usłudze Azure Artifacts.

Konfigurowanie uprawnień dla projektu w celu uzyskania dostępu do innego projektu w tej samej kolekcji projektów

W tym przykładzie fabrikam-tailspin/SpaceGameWeb tożsamość kompilacji w zakresie projektu ma przyznane uprawnienia dostępu fabrikam-tailspin/FabrikamFiber do projektu.

  1. W projekcie FabrikamFiber przejdź do pozycji Ustawienia projektu, Uprawnienia.

    Zrzut ekranu przedstawiający sposób konfigurowania ustawień projektu.

  2. Utwórz nową grupę o nazwie Projekty zewnętrzne i dodaj konto usługi SpaceGameWeb Build. Zrzut ekranu przedstawiający tworzenie nowej grupy zabezpieczeń.

  3. Wybierz pozycję Użytkownicy, zacznij wpisywać nazwę SpaceGameWeb, a następnie wybierz konto usługi SpaceGameWeb Build. Jeśli początkowo nie widzisz żadnych wyników wyszukiwania, wybierz pozycję Rozwiń wyszukiwanie.

    Zrzut ekranu przedstawiający wybieranie użytkownika tożsamości kompilacji o zakresie projektu SpaceGameWeb.

  4. Przyznaj użytkownikowi uprawnienie Wyświetl informacje na poziomie projektu.

    Zrzut ekranu przedstawiający sposób udzielania użytkownikowi uprawnień wyświetlanie informacji na poziomie projektu.

Przykład — konfigurowanie uprawnień dostępu do innego repozytorium w tej samej kolekcji projektów

W tym przykładzie fabrikam-tailspin/SpaceGameWeb tożsamość kompilacji w zakresie projektu ma uprawnienie dostępu FabrikamFiber do repozytorium w projekcie fabrikam-tailspin/FabrikamFiber .

  1. Postępuj zgodnie z instrukcjami, aby udzielić SpaceGameWeb tożsamości kompilacji o zakresie projektu w celu uzyskania dostępu do FabrikamFiber projektu.

  2. W projekcie FabrikamFiber przejdź do pozycji Ustawienia projektu, Repozytoria, FabrikamFiber.

    Konfigurowanie dostępu do repozytorium.

  1. Wybierz ikonę + , zacznij wpisywać nazwę SpaceGameWeb, a następnie wybierz konto usługi SpaceGameWeb Build.

    Dodaj użytkownika na potrzeby dostępu do repozytorium.

  1. Zacznij wpisywać nazwę SpaceGameWeb, a następnie wybierz konto usługi SpaceGameWeb Build.

    Zrzut ekranu przedstawiający sposób dodawania użytkownika na potrzeby dostępu do repozytorium.

  1. Udziel uprawnień do odczytu dla tego użytkownika.

    Zrzut ekranu przedstawiający sposób konfigurowania uprawnień repozytorium.

Przykład — konfigurowanie uprawnień dostępu do innych zasobów w tej samej kolekcji projektów

W tym przykładzie fabrikam-tailspin/SpaceGameWeb tożsamość kompilacji w zakresie projektu ma przyznane uprawnienia dostępu do innych zasobów w projekcie fabrikam-tailspin/FabrikamFiber .

  1. Postępuj zgodnie z instrukcjami, aby udzielić SpaceGameWeb tożsamości kompilacji o zakresie projektu w celu uzyskania dostępu do FabrikamFiber projektu.

  2. Skonfiguruj odpowiednie uprawnienia dla tego użytkownika.

    Konfigurowanie uprawnień użytkownika.

Często zadawane pytania

Jak mogę określić zakres autoryzacji zadania w potoku YAML?

  • Jeśli projekt jest projektem publicznym, zakres autoryzacji zadania jest zawsze projektowy niezależnie od innych ustawień.

Wszystkie potoki YAML w usłudze Azure DevOps Server 2019 działają w zakresie autoryzacji zadania kolekcji .

  • Sprawdź ustawienia potoku w ustawieniach organizacji usługi Azure DevOps:
    • Jeśli włączono ograniczenie zakresu autoryzacji zadania do bieżącego projektu , zakres to projekt.
    • Jeśli zakres autoryzacji zadania limitu do bieżącego projektu nie jest włączony, sprawdź ustawienia potoku w obszarze Ustawienia projektu w usłudze Azure DevOps:
      • Jeśli włączono ograniczenie zakresu autoryzacji zadania do bieżącego projektu , zakres to projekt.
      • W przeciwnym razie zakres to kolekcja.
  • Jeśli potok znajduje się w projekcie prywatnym, sprawdź ustawienia potoku w obszarze Ustawienia organizacji usługi Azure DevOps:
    • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków innych niż wydania, zakres jest projektem.
    • Jeśli nie włączono ograniczenia zakresu autoryzacji zadania do bieżącego projektu dla potoków innych niż wydania, sprawdź ustawienia potoku w obszarze Ustawienia projektu w usłudze Azure DevOps:
      • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków innych niż wydania, zakres jest projektem.
      • W przeciwnym razie zakres to kolekcja.

Jak mogę określić zakres autoryzacji zadania dla mojego klasycznego potoku kompilacji?

  • Jeśli potok znajduje się w projekcie publicznym, zakres autoryzacji zadania jest projektem niezależnie od innych ustawień.
  • Otwórz edytor potoku i przejdź do karty Opcje .
    • Jeśli zakres autoryzacji zadania kompilacji to Bieżący projekt, zakres to projekt.
    • W przeciwnym razie zakres to kolekcja.
  • Sprawdź ustawienia potoku w ustawieniach organizacji usługi Azure DevOps:
    • Jeśli włączono ograniczenie zakresu autoryzacji zadania do bieżącego projektu , zakres to projekt.
    • Jeśli zakres autoryzacji zadania limitu do bieżącego projektu nie jest włączony, sprawdź ustawienia potoku w obszarze Ustawienia projektu w usłudze Azure DevOps:
      • Jeśli włączono ograniczenie zakresu autoryzacji zadania do bieżącego projektu , zakres to projekt.
      • Jeśli zakres autoryzacji zadań ogranicz do bieżącego projektu nie jest włączony, otwórz edytor potoku i przejdź do karty Opcje .
        • Jeśli zakres autoryzacji zadania kompilacji to Bieżący projekt, zakres to projekt.
        • W przeciwnym razie zakres to kolekcja.
  • Jeśli potok znajduje się w projekcie prywatnym, sprawdź ustawienia potoku w obszarze Ustawienia organizacji usługi Azure DevOps:
    • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków innych niż wydania, zakres jest projektem.
    • Jeśli nie włączono ograniczenia zakresu autoryzacji zadania do bieżącego projektu dla potoków innych niż wydania, sprawdź ustawienia potoku w obszarze Ustawienia projektu w usłudze Azure DevOps:
      • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków innych niż wydania, zakres jest projektem.
      • Jeśli zakres autoryzacji zadań ogranicz do bieżącego projektu dla potoków innych niż wydania nie jest włączony, otwórz edytor potoku i przejdź do karty Opcje .
        • Jeśli zakres autoryzacji zadania kompilacji to Bieżący projekt, zakres to projekt.
        • Inaczej zakres to kolekcja.

Podczas tworzenia nowego potoku klasycznego zakres autoryzacji zadania jest ustawiony na bieżący projekt , a zakres autoryzacji zadania kompilacji jest domyślnie ustawiony na projekt .

Jak mogę określić zakres autoryzacji zadania dla mojego klasycznego potoku wydania?

Klasyczne potoki wydania w usłudze Azure DevOps Server 2020 i poniżej działają z zakresem kolekcji .

  • Jeśli potok znajduje się w projekcie publicznym, zakres autoryzacji zadania jest projektem niezależnie od innych ustawień.
  • Jeśli potok znajduje się w projekcie prywatnym, sprawdź ustawienia potoku w obszarze Ustawienia organizacji usługi Azure DevOps:
    • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków wydania, zakres to projekt.
    • Jeśli zakres autoryzacji zadań ogranicz do bieżącego projektu dla potoków wydania nie jest włączony, sprawdź ustawienia potoku w obszarze Ustawienia projektu w usłudze Azure DevOps:
      • Jeśli włączono ograniczenie zakresu autoryzacji zadań do bieżącego projektu dla potoków wydania, zakres to projekt.
      • W przeciwnym razie zakres to kolekcja.