Zabezpieczanie repozytoriów i żądań ściągnięcia

Usługi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Zabezpiecz Azure Repos, łącząc kontrolę dostępu, zasady dla żądań ściągnięcia i sprawdzanie stanu najważniejszych gałęzi. W tym artykule opisano, jak ograniczyć bezpośrednie zmiany, wymagać zatwierdzenia przez odpowiednich recenzentów, wymuszać wymagania dotyczące elementów pracy i kompilacji oraz dodać kontrole usługi GitHub Advanced Security przed scaleniem żądań pull request.

Tip

Możesz użyć sztucznej inteligencji do wsparcia tego zadania w dalszej części tego artykułu lub zobacz Włącz pomoc AI w serwerze MCP usługi Azure DevOps aby rozpocząć pracę.

Zagrożenia i mechanizmy kontroli

Użyj poniższych mechanizmów razem, aby ograniczyć najczęstsze ryzyka związane z pull requestami.

Zagrożenie Ryzyko Zalecana kontrolka
Bezpośrednie wypychanie do chronionych gałęzi Zmiany omijają przegląd i walidację Uprawnienia gałęzi oraz zasady gałęzi
Zatwierdzenie przez jedną osobę Jakość przeglądu zależy od jednej osoby Wymaganie minimalnej liczby recenzentów
Brak przeglądu eksperta na temat poufnych plików Zmiany krytyczne dla bezpieczeństwa są scalane bez odpowiednich recenzentów Automatycznie dołączani recenzenci
Zmiany nieśledzonego kodu Zmniejszona możliwość inspekcji i możliwość śledzenia zmian Sprawdzanie połączonych elementów roboczych
Uszkodzony lub nietestowany kod Regresje docierają do udostępnionych gałęzi Weryfikacja kompilacji
Nierozwiązane opinie dotyczące przeglądu Znane problemy scalają się bez odpowiedzi Sprawdzanie rozwiązywania komentarzy
Nowe luki w zabezpieczeniach o wysokim lub krytycznym znaczeniu Regresje zabezpieczeń przedostają się przez pull requesty GitHub sprawdzanie stanu zabezpieczeń zaawansowanych

Prerequisites

Category Requirements
Dostęp do Projektu Członek projektu.
Permissions — Wyświetlanie kodu w projektach prywatnych: co najmniej dostęp podstawowy .
— Klonowanie lub współtworzenie kodu w projektach prywatnych: członek grupy zabezpieczeń Współautorzy lub odpowiednie uprawnienia w projekcie.
— Ustaw uprawnienia gałęzi lub repozytorium: Zarządzaj uprawnieniami dla gałęzi lub repozytorium.
- Ustawianie zasad gałęzi, kontroli stanu lub zmiana gałęzi domyślnej: uprawnienie Edytowanie zasad dla repozytorium lub gałęzi albo członkostwo w grupie zabezpieczeń Project Administrators.
— Zaimportuj repozytorium: członek grupy zabezpieczeń Administratorzy projektu lub uprawnienia poziomu projektu Git Tworzenie repozytorium ustawione na Zezwalaj. Aby uzyskać więcej informacji, zobacz Ustawianie uprawnień repozytorium Git.
Services Włączone repozytoria.
Tools Optional. Użyj az repos poleceń: Azure DevOps CLI.
Category Requirements
Dostęp do Projektu Członek projektu.
Permissions - Wyświetl kod: co najmniej dostęp podstawowy .
— Możesz klonować lub współtworzyć kod, będąc członkiem grupy zabezpieczeń Contributors lub mając odpowiednie uprawnienia w projekcie.
Services Włączone repozytoria.

Przed skonfigurowaniem zasad gałęzi:

  • Upewnij się, że repozytorium docelowe i gałąź już istnieją.
  • Zdecyduj, które grupy mogą zarządzać uprawnieniami, pomijać zasady i zatwierdzać żądania pull request.
  • Jeśli planujesz wymagać walidacji kompilacji lub kontroli stanu GitHub Advanced Security, najpierw utwórz potok kompilacji.

Punkt odniesienia zabezpieczeń dla większości zespołów

W przypadku typowej gałęzi produkcyjnej, takiej jak main, zacznij od tego punktu odniesienia:

Obszar sterowania Zalecana linia bazowa Dlaczego
Dostęp do repozytorium Ogranicz uprawnienia do zapisu do współtwórców, którzy aktywnie pracują w repozytorium Zmniejsza liczbę tożsamości, które mogą zmieniać ustawienia kodu źródłowego lub repozytorium.
Uprawnienia gałęzi Ogranicz pomijanie zasad podczas finalizowania żądań pobrania i pomijanie zasad podczas wypychania do niewielkiej grupy administratorów Uniemożliwia użytkownikom pomijanie wymaganych przeglądów, walidacji i innych zabezpieczeń gałęzi.
Przejrzyj zasady Wymagaj co najmniej dwóch recenzentów dla main Poprawia jakość przeglądu i zmniejsza ryzyko jednego błędu lub stronniczości zatwierdzenia.
Poufne pliki Automatycznie uwzględniaj recenzentów dla ścieżek wrażliwych z punktu widzenia bezpieczeństwa, infrastruktury lub zgodności Zapewnia, że zmiany w obszarach wysokiego ryzyka są przeglądane przez odpowiednie osoby lub zespoły.
Identyfikowalność Włącz sprawdzanie połączonych elementów pracy Zachowuje ścieżkę audytu między zmianami w kodzie a pracą, która je uzasadniała.
Validation Dodaj weryfikację kompilacji dla gałęzi PR Wykrywa błędy kompilacji i testów, zanim kod zostanie scalony z chronioną gałęzią.
Ukończenie przeglądu Włącz Sprawdzanie rozwiązywania komentarzy Pomaga upewnić się, że problemy recenzentów zostały rozwiązane przed ukończeniem.
Progi podatności Dodaj AdvancedSecurity/NewHighAndCritical po skonfigurowaniu skanowania Advanced Security Blokuje żądania ściągnięcia, które wprowadzają nowe wyniki zabezpieczeń o wysokim lub krytycznym znaczeniu.

Krok 1. Ograniczanie dostępu do repozytorium i gałęzi

Zacznij od uprawnień. Zasady są najbardziej skuteczne, gdy tylko niewielki zestaw użytkowników może je pominąć.

Przeglądanie uprawnień repozytorium

Uprawnienia repozytorium umożliwiają kontrolowanie, kto może odczytywać, współtworzyć, administrować ustawieniami lub współtworzyć żądania ściągnięcia. Aby uzyskać szczegółowe informacje o uprawnieniach, zobacz Ustawianie uprawnień repozytorium Git.

Użyj następującego wzorca:

  • Udziel współtwórcom uprawnień, których potrzebują do pracy w gałęziach funkcji.
  • Rezerwuj administrowanie repozytorium dla małej grupy administracyjnej.
  • Unikaj szerokiego przyznawania uprawnień pomijania zasad.

Ogranicz uprawnienia gałęzi

W przypadku chronionych gałęzi dokładnie przejrzyj i ogranicz następujące uprawnienia:

  • Pomijanie zasad podczas finalizowania pull requestów
  • Omijanie zasad przy wypychaniu
  • Wymuszone wypychanie (przepisywanie historii, usuwanie gałęzi i tagów)
  • Edytowanie zasad
  • Zarządzanie uprawnieniami

Użyj opcji Ustaw uprawnienia gałęzi, aby skonfigurować te ustawienia.

Zalecany wzorzec dla main:

Group Zalecane uprawnienia gałęzi
Contributors Zezwalaj na zwykłe wnoszenie wkładu za pośrednictwem pull requestów, ale nie przyznawaj uprawnień do obejścia
Administratorzy projektu Zezwalaj na edytowanie zasad i zarządzanie uprawnieniami
Właściciele wersji awaryjnej Przyznawanie uprawnień obejścia tylko wtedy, gdy proces zdarzenia wymaga ich

Ważna

Ogranicz uprawnienia Pomijanie zasad podczas kończenia żądań ściągnięcia i Pomijanie zasad podczas wypychania do niewielkiej grupy zaufanych administratorów. Te uprawnienia niweczą zabezpieczenia zapewniane przez wymagane przeglądy, walidację i kontrole stanu.

Krok 2. Wymagaj rygorystycznego przeglądu pull requestów

Wymaganie minimalnej liczby recenzentów

Użyj opcji Wymagaj minimalnej liczby recenzentów w przypadku ważnych gałęzi, takich jak main i gałęzie wydań.

Zalecane ustawienia:

  • Minimalna liczba recenzentów: 2 dla gałęzi współdzielonych o wysokiej wartości
  • Wymagaj co najmniej jednego zatwierdzenia w ostatniej iteracji
  • Zezwalaj osobom zgłaszającym na zatwierdzanie własnych zmian: Off
  • Zabroń osobie, która ostatnio wypchnęła zmiany, zatwierdzania własnych zmian: On gdy chcesz zapewnić większy rozdział obowiązków

Konfigurowanie minimalnych zasad recenzenta

  1. Przejdź do Ustawienia projektu>Repozytoria.
  2. Wybierz repozytorium, a następnie wybierz chronioną gałąź.
  3. W obszarze Zasady włącz opcję Wymagaj minimalnej liczby recenzentów.
  4. Ustaw opcje recenzenta dla gałęzi.

Sprawdź wynik:

  • Lista zasad gałęzi pokazuje, że zasady recenzentów są włączone.
  • Żądania pull request kierowane do gałęzi nie mogą zostać ukończone, dopóki nie zostanie uzyskana wymagana liczba zatwierdzeń.

Aby uzyskać szczegółowe informacje o zasadach, zobacz Zasady i ustawienia gałęzi.

Automatyczne dołączanie recenzentów do poufnych plików

Użyj Recenzenci dodawani automatycznie, gdy określone pliki lub foldery wymagają zatwierdzenia przez konkretną osobę lub zespół.

Dobrymi kandydatami są:

  • wdrażanie i kod infrastruktury
  • kod uwierzytelniania i autoryzacji
  • foldery wrażliwe na zgodność
  • udostępnione szablony potoków

Skonfiguruj zasady automatycznego uwzględniania recenzentów

  1. Przejdź do Ustawienia projektu>Repozytoria.
  2. Otwórz gałąź docelową w sekcji Zasady gałęzi.
  3. Dodaj zasadę automatycznie dodawanych recenzentów.
  4. Dodaj wymagane osoby lub grupy.
  5. Wybierz, czy zasady są wymagane , czy opcjonalne.
  6. Dodaj filtry ścieżek dla plików lub folderów, które wymagają ich przeglądu.
  7. Nie zezwalaj autorom zmian na zatwierdzanie własnych zmian.

Sprawdź wynik:

  • Żądanie ściągnięcia, które zmienia pasujące pliki, automatycznie dodaje skonfigurowanych recenzentów.
  • Żądanie ściągnięcia nie może zakończyć się, dopóki wymagane zasady recenzenta nie będą spełnione.

Aby uzyskać więcej informacji, zobacz Automatyczne dołączanie recenzentów kodu.

Krok 3. Wymuszanie możliwości śledzenia i walidacji

Sprawdzanie połączonych elementów roboczych

Włącz opcję Sprawdzaj połączone elementy robocze, gdy zespół potrzebuje śledzenia zmian między żądaniami ściągnięcia a śledzeniem elementów roboczych.

Skonfiguruj zasadę połączonych elementów roboczych

  1. Przejdź do Ustawienia projektu>Repozytoria.
  2. Otwórz gałąź docelową w sekcji Zasady gałęzi.
  3. Włącz opcję Sprawdź połączone elementy pracy.
  4. Wybierz Wymagane, jeśli żądania ściągnięcia muszą mieć połączone elementy robocze przed ukończeniem.

Sprawdź wynik: żądania pull request bez połączonych elementów roboczych pokazują, że zasada nie jest spełniona.

Aby uzyskać więcej informacji, zobacz Sprawdzanie połączonych elementów roboczych.

Walidacja kompilacji

Użyj weryfikacji kompilacji, aby wymagać pomyślnego ukończenia potoku dla żądań typu pull request przed scaleniem.

Ważna

Przed skonfigurowaniem weryfikacji kompilacji utwórz potok kompilacji, który będzie weryfikował pull request.

Zalecane ustawienia dla chronionych gałęzi:

  • Wyzwalacz: automatyczny
  • Wymaganie dotyczące zasad: Required
  • Wygaśnięcie kompilacji: wybierz wartość odpowiadającą częstotliwości zmian w chronionej gałęzi

Konfigurowanie zasad weryfikacji kompilacji

  1. Otwórz gałąź docelową w sekcji Zasady gałęzi.
  2. Dodaj zasadę weryfikacji kompilacji.
  3. Wybierz potok kompilacji.
  4. Wybierz, czy zasada jest wymagana.
  5. Zapisz zasady.

Sprawdź wynik:

  • Otwarcie lub zaktualizowanie żądania ściągnięcia powoduje dodanie skonfigurowanej kompilacji weryfikacyjnej do kolejki.
  • Pull request nie może zostać ukończony, dopóki wymagana kompilacja nie zakończy się powodzeniem.

Aby uzyskać więcej informacji, zobacz Weryfikacja kompilacji.

Sprawdź rozwiązywanie komentarzy

Użyj opcji Sprawdź rozwiązywanie komentarzy, aby upewnić się, że wątki recenzji zostały rozwiązane, zanim żądanie ściągnięcia zostanie ukończone.

Konfigurowanie zasad rozwiązywania komentarzy

  1. Otwórz gałąź docelową w sekcji Zasady gałęzi.
  2. Włącz opcję Sprawdzanie rozwiązania komentarza.
  3. Wybierz pozycję Wymagane , jeśli nierozwiązane komentarze powinny blokować ukończenie.

Sprawdź wynik: pull requesty z nierozwiązanymi komentarzami pozostają zablokowane, dopóki recenzenci lub autorzy nie rozwiążą wątków.

Aby uzyskać więcej informacji, zobacz Sprawdzanie rozwiązania komentarza.

Ogranicz typy scalania

Użyj ustawienia Ogranicz typy scalania jako ustawienia zarządzania historią repozytorium. Te zasady ułatwiają standaryzację sposobu wyświetlania zatwierdzeń żądań ściągnięcia po scaleniu, ale nie jest to bezpośrednia kontrola zabezpieczeń.

Wybierz strategię scalania na podstawie sposobu, w jaki zespół przegląda, śledzi i przeprowadza inspekcję historii.

Przykładowe zastosowania:

  • Wymagaj scalań typu squash dla krótkotrwałych gałęzi funkcjonalności.
  • Nie zezwalaj na przebazowanie ani squash w gałęziach, w których proces audytu oczekuje commitów scalających.

Zagadnienia dotyczące inspekcji i możliwości śledzenia:

  • Squash tworzy czystszą historię gałęzi docelowej, ale zwija wiele zatwierdzeń źródłowych w jednym zatwierdzeniu w czasie scalania.
  • Jeśli model audytu zależy od zachowania dokładnej sekwencji commitów z gałęzi funkcjonalnej, wybieraj strategie scalania z commitami scalającymi zamiast squasha.
  • Zachowaj spójność zasad ze sposobem, w jaki deweloperzy sprawdzają i debugują historię w pull requestach oraz w gałęzi docelowej.

przykład interfejsu wiersza polecenia Azure DevOps:

az repos policy merge-strategy create \
  --blocking true \
  --branch main \
  --enabled true \
  --repository-id <repository-id> \
  --allow-no-fast-forward true \
  --allow-rebase false \
  --allow-rebase-merge false \
  --allow-squash false

Aby uzyskać więcej informacji, zobacz Ograniczanie typów scalania.

Krok 4. Dodawanie kontroli stanu zabezpieczeń zaawansowanych GitHub

Kontrole stanu usługi GitHub Advanced Security pomagają zapobiegać scalaniu pull requestów, jeśli wprowadzane są nowe luki w zabezpieczeniach o krytycznym lub wysokim poziomie ważności.

Ważna

usługa GitHub Advanced Security for Azure DevOps jest dostępna tylko dla usług Azure DevOps Services i tylko w przypadku repozytoriów Git kodu.

Przed dodaniem zasad sprawdzania stanu:

  1. Włącz GitHub Advanced Security w repozytorium.
  2. Skonfiguruj wymagane zadania w potoku Advanced Security.
  3. Dodaj zasadę weryfikacji kompilacji dla gałęzi pull requestu.
  4. Włącz Wait for Processing: true na potrzeby opisanych zadań Advanced Security.
  5. Uruchom potok pomyślnie co najmniej raz, aby kontrola stanu pojawiła się na liście Status do sprawdzenia.

AdvancedSecurity/NewHighAndCritical Zacznij od tego, czy repozytorium ma już nierozwiązane alerty. Po zmniejszeniu zaległości rozważ przejście do AdvancedSecurity/AllHighAndCritical.

Ścieżka przeglądarki:

  1. Otwórz gałąź docelową w sekcji Zasady gałęzi.
  2. W obszarze Kontrole stanu wybierz pozycję +.
  3. Ustaw Status do sprawdzenia na AdvancedSecurity/NewHighAndCritical.
  4. Pozostaw wartości domyślne opcji zaawansowanych .
  5. Zapisz zasady.

Kontrole stanu usługi Advanced Security konfiguruje się w sekcji Kontrole stanu w przeglądarce po włączeniu skanowania Advanced Security i weryfikacji kompilacji dla repozytorium. Aby zapoznać się z wymaganą konfiguracją, zobacz Konfigurowanie kontroli stanu żądania ściągnięcia.

Sprawdź wynik:

  • Żądania ściągnięcia z nowymi wysokimi lub krytycznymi wynikami pokazują, że sprawdzanie stanu zakończyło się niepowodzeniem.
  • Zasady gałęzi blokują uzupełnianie, dopóki wyniki nie zostaną rozwiązane lub zasady zostaną wprowadzone jako opcjonalne.

Aby uzyskać szczegółowe informacje o konfiguracji, zobacz:

Przykładowe plany wdrażania

Linia bazowa repozytorium o niższej wrażliwości

Jeśli repozytorium ma niższą czułość i chcesz zacząć od czegoś łatwego do opanowania:

  1. Ogranicz uprawnienia pomijania gałęzi w systemie main.
  2. Wymagaj co najmniej jednego lub dwóch recenzentów.
  3. Włącz połączone elementy robocze.
  4. Dodaj walidację kompilacji.
  5. Włącz rozwiązywanie komentarzy.

Repozytorium o wysokiej poufności

Jeśli repozytorium zawiera zasoby krytyczne dla wdrażania, zarządzania tożsamością lub zgodności:

  1. Ogranicz uprawnienia do pomijania zasad administratorom.
  2. Wymagaj dwóch recenzentów dla main.
  3. Dodaj automatycznie dodawanych recenzentów do chronionych ścieżek.
  4. Wymagaj połączonych elementów roboczych.
  5. Dodaj walidację kompilacji.
  6. Dodaj kontrole stanu usługi GitHub Advanced Security, jeśli używasz usługi Azure DevOps Services.

Opcjonalnie: Użyj pomocy sztucznej inteligencji, aby przejrzeć konfigurację zasad gałęzi

Pomoc dotycząca sztucznej inteligencji jest opcjonalna. Uprawnienia gałęzi, zasady i kontrole stanu wymuszają ochronę repozytorium niezależnie od tego, czy używasz sztucznej inteligencji.

Za pomocą tych podpowiedzi możesz szybciej przeanalizować konfigurację zasad, zidentyfikować luki i uzyskać podstawowe zalecenia. Jeśli skonfigurujesz Azure DevOps serwer MCP, asystent może użyć kontekstu Azure DevOps, aby poprawić odpowiedzi. Aby uzyskać wskazówki dotyczące konfiguracji, zobacz Włącz asystę SI za pomocą serwera Azure DevOps MCP.

Użyj monitów, takich jak następujące, aby rozpocząć pracę:

Goal Przykładowy monit
Przegląd ochrony gałęzi Summarize the branch policies on main and explain which ones are required.
Zidentyfikuj ryzyko obejścia Find users or groups that can bypass branch policies on the main branch.
Sprawdź pokrycie recenzji List the reviewer and comment-resolution policies configured for this repository.
Zweryfikuj śledzenie pracy Check whether pull requests into main require linked work items.
Sprawdź bramki walidacji Show the build validation policy for main and explain what pipeline it uses.
Badanie kontroli stanu zabezpieczeń List the status checks configured for main and tell me whether GitHub Advanced Security is one of them.
Zaplanuj bezpieczniejszy plan bazowy Recommend a secure branch policy baseline for this repository based on its current settings.

Przed ich zastosowaniem należy zawsze weryfikować wygenerowane polecenia i zalecenia dotyczące uprawnień repozytorium, ustawień gałęzi i bieżącej dokumentacji Azure DevOps.

Wskazówki dotyczące rozwiązywania problemów

Problem Prawdopodobna przyczyna Zalecana akcja
Opcja zasad gałęzi nie jest wyświetlana Nie masz uprawnień do edycji zasad lub nie wybrano gałęzi Potwierdź dostęp do gałęzi i uprawnienia dotyczące zasad
Żądania scalenia nadal mogą być scalane bez spełnienia zasad Użytkownik ma uprawnienia obejścia Przejrzyj zasady pomijania podczas ukończenia żądań ściągnięcia i zasady pomijania podczas wypychania
Wymagani recenzenci nie są dodawani Filtr ścieżki zasad recenzenta nie jest zgodny ze zmienionymi plikami Sprawdź ponownie filtry ścieżki i tożsamości recenzentów
Sprawdzanie stanu zabezpieczeń zaawansowanych jest niedostępne Repozytorium nie zakończyło pomyślnego uruchomienia skanowania z wymaganymi zadaniami Zweryfikuj poprawność kompilacji, zadania potoku i ustawienia Wait for Processing
Zasada dotycząca połączonych elementów roboczych nie blokuje Zasada jest opcjonalna, a nie wymagana. Ponownie otwórz zasady dotyczące gałęzi i potwierdź poziom wymagania