Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
2dla 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:
Ongdy chcesz zapewnić większy rozdział obowiązków
Konfigurowanie minimalnych zasad recenzenta
- Przejdź do Ustawienia projektu>Repozytoria.
- Wybierz repozytorium, a następnie wybierz chronioną gałąź.
- W obszarze Zasady włącz opcję Wymagaj minimalnej liczby recenzentów.
- 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
- Przejdź do Ustawienia projektu>Repozytoria.
- Otwórz gałąź docelową w sekcji Zasady gałęzi.
- Dodaj zasadę automatycznie dodawanych recenzentów.
- Dodaj wymagane osoby lub grupy.
- Wybierz, czy zasady są wymagane , czy opcjonalne.
- Dodaj filtry ścieżek dla plików lub folderów, które wymagają ich przeglądu.
- 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
- Przejdź do Ustawienia projektu>Repozytoria.
- Otwórz gałąź docelową w sekcji Zasady gałęzi.
- Włącz opcję Sprawdź połączone elementy pracy.
- 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
- Otwórz gałąź docelową w sekcji Zasady gałęzi.
- Dodaj zasadę weryfikacji kompilacji.
- Wybierz potok kompilacji.
- Wybierz, czy zasada jest wymagana.
- 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
- Otwórz gałąź docelową w sekcji Zasady gałęzi.
- Włącz opcję Sprawdzanie rozwiązania komentarza.
- 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:
- Włącz GitHub Advanced Security w repozytorium.
- Skonfiguruj wymagane zadania w potoku Advanced Security.
- Dodaj zasadę weryfikacji kompilacji dla gałęzi pull requestu.
- Włącz
Wait for Processing: truena potrzeby opisanych zadań Advanced Security. - 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:
- Otwórz gałąź docelową w sekcji Zasady gałęzi.
- W obszarze Kontrole stanu wybierz pozycję +.
- Ustaw Status do sprawdzenia na
AdvancedSecurity/NewHighAndCritical. - Pozostaw wartości domyślne opcji zaawansowanych .
- 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:
- Ogranicz uprawnienia pomijania gałęzi w systemie
main. - Wymagaj co najmniej jednego lub dwóch recenzentów.
- Włącz połączone elementy robocze.
- Dodaj walidację kompilacji.
- 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:
- Ogranicz uprawnienia do pomijania zasad administratorom.
- Wymagaj dwóch recenzentów dla
main. - Dodaj automatycznie dodawanych recenzentów do chronionych ścieżek.
- Wymagaj połączonych elementów roboczych.
- Dodaj walidację kompilacji.
- 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 |