Ochrona repozytorium

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Kod źródłowy, plik YAML potoku i niezbędne skrypty i narzędzia są przechowywane w repozytorium kontroli wersji. Aby zapewnić bezpieczeństwo kodu i potoku, należy stosować uprawnienia i zasady gałęzi. Możesz również dodać uprawnienia potoku i kontrole do repozytoriów.

Ponadto należy przejrzeć domyślną kontrolę dostępu dla repozytoriów.

Ze względu na projekt usługi Git ochrona na poziomie gałęzi będzie prowadzić cię tylko do tej pory. Użytkownicy z dostępem wypychanym do repozytorium mogą zwykle tworzyć nowe gałęzie. Jeśli korzystasz z projektów open source usługi GitHub, każda osoba mająca konto GitHub może rozwidlić repozytorium i zaproponować współtworzenie z powrotem. Ponieważ potoki są skojarzone z repozytorium, a nie z określonymi gałęziami, należy założyć, że kod i pliki YAML są niezaufane.

Rozwidlenia

Jeśli tworzysz repozytoria publiczne z usługi GitHub, musisz rozważyć swoje stanowisko w przypadku kompilacji rozwidlenia. Rozwidlenia są szczególnie niebezpieczne, ponieważ pochodzą spoza organizacji. Aby chronić produkty przed kodem współautora, należy wziąć pod uwagę następujące zalecenia.

Uwaga

Poniższe zalecenia dotyczą głównie tworzenia publicznych repozytoriów z usługi GitHub.

Nie udostępniaj wpisów tajnych do rozwidleń kompilacji

Domyślnie potoki są konfigurowane do tworzenia rozwidlenia, ale wpisy tajne i chronione zasoby nie są domyślnie dostępne dla zadań w tych potokach. Nie wyłączaj tej drugiej ochrony.

Screenshot of fork build protection UI.

Uwaga

Po włączeniu kompilacji rozwidlenia w celu uzyskania dostępu do wpisów tajnych usługa Azure Pipelines domyślnie ogranicza token dostępu używany w przypadku kompilacji rozwidlenia. Ma on bardziej ograniczony dostęp do otwartych zasobów niż normalny token dostępu. Aby nadać rozwidlenie kompiluje te same uprawnienia co zwykłe kompilacje, włącz opcję Utwórz kompilacje rozwidlenia mają takie same uprawnienia jak zwykłe ustawienia kompilacji .

Screenshot of fork build protection UI in Azure DevOps Server 2020 and lower.

Uwaga

Nawet jeśli włączysz kompilacje rozwidlenia w celu uzyskania dostępu do wpisów tajnych, usługa Azure Pipelines ogranicza token dostępu używany w przypadku kompilacji rozwidlenia. Ma on bardziej ograniczony dostęp do otwartych zasobów niż normalny token dostępu. Nie można wyłączyć tej ochrony.

Rozważ ręczne wyzwalanie kompilacji rozwidlenia

Możesz wyłączyć automatyczne kompilacje rozwidlenia i zamiast tego używać komentarzy żądania ściągnięcia jako sposobu ręcznego kompilowania tych współtworzeń. To ustawienie umożliwi przejrzenie kodu przed wyzwoleniem kompilacji.

Korzystanie z agentów hostowanych przez firmę Microsoft dla kompilacji rozwidlenia

Nie uruchamiaj kompilacji z rozwidlenia na własnych agentach. W ten sposób skutecznie udostępniasz ścieżkę do organizacji zewnętrznych w celu uruchamiania kodu zewnętrznego na maszynach w sieci firmowej. Zawsze, gdy jest to możliwe, używaj agentów hostowanych przez firmę Microsoft. W przypadku własnego agenta użyj jakiejś formy izolacji sieciowej i upewnij się, że agenci nie utrwali stanu między zadaniami.

Przegląd zmian kodu

Przed uruchomieniem potoku w rozwidlonym żądaniu ściągnięcia dokładnie przejrzyj proponowane zmiany i upewnij się, że dobrze się z nim uruchamiasz.

Wersja potoku YAML, który uruchomisz, to ta z żądania ściągnięcia. W związku z tym należy zwrócić szczególną uwagę na zmiany w kodzie YAML i na kod uruchamiany po uruchomieniu potoku, na przykład skrypty wiersza polecenia lub testy jednostkowe.

Ograniczenie zakresu tokenu usługi GitHub

Podczas tworzenia rozwidlenia żądania ściągnięcia w usłudze GitHub usługa Azure Pipelines gwarantuje, że potok nie może zmienić żadnej zawartości repozytorium GitHub. To ograniczenie ma zastosowanie tylko wtedy, gdy używasz aplikacji GitHub usługi Azure Pipelines do integracji z usługą GitHub. Jeśli używasz innych form integracji z usługą GitHub, na przykład aplikacji OAuth, ograniczenie nie zostanie wymuszone.

Gałęzie użytkowników

Użytkownicy w organizacji z odpowiednimi uprawnieniami mogą tworzyć nowe gałęzie zawierające nowy lub zaktualizowany kod. Ten kod może działać przez ten sam potok co chronione gałęzie. Ponadto jeśli plik YAML w nowej gałęzi zostanie zmieniony, zaktualizowany kod YAML zostanie użyty do uruchomienia potoku. Chociaż ten projekt zapewnia dużą elastyczność i samoobsługę, nie wszystkie zmiany są bezpieczne (niezależnie od tego, czy zostały wprowadzone złośliwie, czy nie).

Jeśli potok używa kodu źródłowego lub jest zdefiniowany w usłudze Azure Repos, musisz w pełni zrozumieć model uprawnień usługi Azure Repos. W szczególności użytkownik z uprawnieniem Tworzenie gałęzi na poziomie repozytorium może wprowadzić kod do repozytorium, nawet jeśli ten użytkownik nie ma uprawnień Współtworzenie.

Następne kroki

Następnie dowiedz się więcej o większej ochronie oferowanej przez kontrole chronionych zasobów.