Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące zabezpieczeń

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

W przypadku obsługi informacji i danych, zwłaszcza w rozwiązaniu opartym na chmurze, takiego jak Azure DevOps Services, bezpieczeństwo powinno być twoim priorytetem. Chociaż firma Microsoft zapewnia bezpieczeństwo podstawowej infrastruktury chmury, konfigurowanie zabezpieczeń w usłudze Azure DevOps jest Twoim zadaniem.

Chociaż nie jest to obowiązkowe, włączenie najlepszych rozwiązań może znacząco poprawić twoje środowisko i wzmocnić bezpieczeństwo. Poniższe zalecenia zostały zaprojektowane tak, aby ułatwić utrzymanie bezpiecznego środowiska usługi Azure DevOps.

Zabezpieczanie środowiska usługi Azure DevOps

Zastosuj następujące najlepsze rozwiązania dotyczące usuwania użytkowników, przeglądania zdarzeń inspekcji i integracji z identyfikatorem Entra firmy Microsoft.

Usuwanie użytkowników

  • Usuń nieaktywnych użytkowników z kont MSA:
    • Jeśli organizacja korzysta z kont MSA, bezpośrednio usuń nieaktywnych użytkowników z organizacji.
    • Niestety, nie ma innego sposobu, aby uniemożliwić dostęp dla tych użytkowników.
    • Pamiętaj, że nie można tworzyć zapytań dotyczących elementów roboczych przypisanych do usuniętych kont MSA.
  • Wyłącz lub usuń konta użytkowników usługi Microsoft Entra:
    • Jeśli Twoja organizacja jest połączona z identyfikatorem Entra firmy Microsoft, możesz wyłączyć lub usunąć konto użytkownika Microsoft Entra przy zachowaniu aktywnego konta użytkownika usługi Azure DevOps.
    • Takie podejście umożliwia kontynuowanie wykonywania zapytań dotyczących historii elementów roboczych przy użyciu identyfikatora użytkownika usługi Azure DevOps.
  • Odwoływanie paT użytkowników:
    • Regularnie przeglądaj i odwoływanie wszelkich istniejących paT użytkowników.
    • PaTs to krytyczne tokeny uwierzytelniania, a zarządzanie nimi w bezpieczny sposób jest niezbędne.
  • Odwoływanie specjalnych uprawnień przyznanych poszczególnym użytkownikom:
    • Przeprowadź inspekcję i odwoływanie wszelkich specjalnych uprawnień, które zostały przyznane poszczególnym kontom użytkowników.
    • Upewnij się, że uprawnienia są zgodne z zasadą najniższych uprawnień.
  • Ponowne przypisywanie pracy od usuniętych użytkowników:
    • Przed usunięciem użytkowników przypisz ponownie wszystkie elementy robocze, które obsługiwali.
    • Rozłóż obciążenie między bieżących członków zespołu.

Korzystanie z identyfikatora Entra firmy Microsoft

  • Pojedyncza płaszczyzna tożsamości:
    • Łącząc usługę Azure DevOps z identyfikatorem Entra firmy Microsoft, ustanowić ujednolicony system tożsamości.
    • Spójność między usługami zmniejsza zamieszanie i minimalizuje zagrożenia bezpieczeństwa wynikające z błędów konfiguracji ręcznej.
  • Kompleksowe zarządzanie:
    • Korzystanie z identyfikatora Entra firmy Microsoft umożliwia zaimplementowanie szczegółowego ładu.
    • Przypisz różne role i uprawnienia do określonych grup firmy Microsoft Entra w różnych zakresach zasobów.
    • Takie podejście zapewnia kontrolowany dostęp i jest zgodny z najlepszymi rozwiązaniami w zakresie zabezpieczeń.
  • Funkcje zabezpieczeń:
    • Identyfikator Entra firmy Microsoft umożliwia korzystanie z dodatkowych funkcji zabezpieczeń, takich jak:
      • Uwierzytelnianie wieloskładnikowe (MFA): ulepszanie uwierzytelniania użytkowników przez wymaganie wielu czynników (np. hasła i weryfikacji telefonu).
      • Zasady dostępu warunkowego: zdefiniuj reguły dostępu na podstawie warunków (np. lokalizacji, urządzenia lub poziomu ryzyka).

Aby uzyskać więcej informacji, zobacz następujące artykuły:

Przeglądanie zdarzeń inspekcji

Gdy twoja organizacja jest wspierana przez firmę Microsoft Entra, wykonaj następujące zadania, aby zwiększyć bezpieczeństwo i monitorować wzorce użycia:

  • Włącz inspekcję:
    • W ramach zasad zabezpieczeń włącz inspekcję.
    • Inspekcja pomaga śledzić i rejestrować zdarzenia związane z akcjami, uprawnieniami i zmianami użytkownika.
  • Regularnie przeglądaj zdarzenia inspekcji:
    • Okresowo przejrzyj dziennik inspekcji.
    • Poszukaj nieoczekiwanych wzorców użycia, zwłaszcza przez administratorów i innych użytkowników.

Zabezpieczanie sieci

Poniższe funkcje są skutecznymi sposobami zwiększenia bezpieczeństwa sieci podczas pracy z usługą Azure DevOps.

  • Lista dozwolonych adresów IP:
    • Skonfiguruj listę dozwolonych, aby ograniczyć dostęp do określonych adresów IP.
    • Zezwalaj tylko na ruch z zaufanych źródeł, zmniejszając obszar ataków.
  • Szyfrowanie:
    • Zawsze używaj szyfrowania dla danych przesyłanych i magazynowanych.
    • Zabezpieczanie kanałów komunikacyjnych przy użyciu protokołów, takich jak HTTPS.
  • Weryfikacja certyfikatu:
    • Zweryfikuj certyfikaty podczas nawiązywania połączeń.
    • Upewnij się, że certyfikaty są prawidłowe i wystawione przez zaufane urzędy.
  • Zapory aplikacji internetowej (WAFs):
    • Zaimplementuj funkcje WAFs, aby filtrować, monitorować i blokować złośliwy ruch internetowy.
    • Funkcje WAFs zapewniają dodatkową warstwę ochrony przed typowymi atakami.

Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące zarządzania aplikacjami.


Uprawnienia o określonym zakresie

System obsługuje uprawnienia na różnych poziomach — indywidualne, kolekcje, projekt i obiekt — i przypisuje je do co najmniej jednej wbudowanej grupy domyślnie. Aby zwiększyć bezpieczeństwo, wykonaj następujące czynności:

  • Zapewnij minimalny dostęp: zapewnij użytkownikom i usługom minimalny niezbędny dostęp do wykonywania swoich funkcji biznesowych.
  • Wyłącz dziedziczenie:
    • Jeśli to możliwe, wyłącz dziedziczenie.
    • Dziedziczenie może przypadkowo udzielić dostępu lub uprawnień nieoczekiwanym użytkownikom ze względu na jej charakter dozwolony domyślnie.
    • Aby uzyskać więcej informacji, zapoznaj się z sekcją dotyczącą dziedziczenia uprawnień

Aby uzyskać więcej informacji na temat uprawnień, zobacz następujące artykuły:

Uprawnienia na poziomie projektu

  • Ogranicz dostęp do projektów i repozytoriów:
    • Aby zmniejszyć ryzyko wycieku poufnych informacji i wdrożenia niezabezpieczonego kodu w środowisku produkcyjnym, ogranicz dostęp do projektów i repozytoriów.
    • Aby zarządzać uprawnieniami, użyj wbudowanych grup zabezpieczeń lub niestandardowych grup zabezpieczeń. Aby uzyskać więcej informacji, zobacz Udzielanie lub ograniczanie uprawnień do określonych zadań.
  • Wyłącz opcję "Zezwalaj na projekty publiczne":
    • W ustawieniach zasad organizacji wyłącz opcję tworzenia projektów publicznych.
    • Usługa Azure DevOps Services umożliwia przełączanie widoczności projektu z publicznego na prywatny (i odwrotnie).
    • Użytkownicy, którzy nie zalogowali się do organizacji, mają dostęp tylko do odczytu do projektów publicznych.
    • Zalogowani użytkownicy mogą mieć dostęp do projektów prywatnych i wprowadzać dozwolone zmiany.
  • Ogranicz tworzenie projektu:
    • Uniemożliwianie użytkownikom tworzenia nowych projektów w celu utrzymania kontroli nad środowiskiem.

Dostęp gościa zewnętrznego

  • Blokuj dostęp gościa zewnętrznego:
    • Wyłącz zasady "Zezwalaj na wysyłanie zaproszeń do dowolnej domeny", aby uniemożliwić dostęp gościa zewnętrznego.
    • Rozważ ten krok, jeśli nie ma potrzeby biznesowego dla gości zewnętrznych.
  • Użyj innej nazwy e-mail lub nazwy UPN dla kont osobistych i biznesowych:
    • Mimo że jest to dozwolone, użyj odrębnych adresów e-mail lub głównych nazw użytkowników (UPN) dla kont osobistych i biznesowych.
    • Ta praktyka eliminuje niejednoznaczność podczas uściślania między kontami osobistymi i służbowymi.
  • Grupuj zewnętrznych użytkowników-gości:
    • Umieść wszystkich zewnętrznych użytkowników-gości w jednej grupie firmy Microsoft Entra.
    • Odpowiednio zarządzaj uprawnieniami dla tej grupy.
    • Usuń przypisania bezpośrednie, aby upewnić się, że reguły grupy mają zastosowanie do tych użytkowników. Aby uzyskać więcej informacji, zobacz Dodawanie reguły grupy w celu przypisania poziomów dostępu.
    • Regularnie przeszacuj reguły na karcie Reguły grupy na stronie Użytkownicy. Rozważ wszelkie zmiany członkostwa w grupie w identyfikatorze Entra firmy Microsoft, które mogą mieć wpływ na Twoją organizację. Aktualizacja członkostwa w grupie dynamicznej może potrwać do 24 godzin. Reguły są automatycznie ponownie oceniane co 24 godziny i zawsze, gdy zmienia się reguła grupy.

Aby uzyskać więcej informacji, zobacz B2B gości w identyfikatorze Microsoft Entra ID.


Zarządzanie grupami zabezpieczeń

Zabezpieczenia i grupy użytkowników

W poniższej tabeli przedstawiono zalecenia dotyczące przypisywania uprawnień do grup zabezpieczeń i grup użytkowników.

Robić Nie
Użyj identyfikatora Entra firmy Microsoft, usługi Active Directory lub grup zabezpieczeń systemu Windows, gdy zarządzasz wieloma użytkownikami. Nie zmieniaj domyślnych uprawnień dla grupy Project Valid Users (Prawidłowe użytkownicy projektu). Ta grupa może uzyskiwać dostęp do informacji o projekcie i wyświetlać je.
Podczas dodawania zespołów należy wziąć pod uwagę uprawnienia, które chcesz przypisać członkom zespołu, którzy muszą tworzyć i modyfikować ścieżki obszaru, ścieżki iteracji i zapytania. Nie dodawaj użytkowników do wielu grup zabezpieczeń, które zawierają różne poziomy uprawnień. W niektórych przypadkach poziom uprawnień Odmów może zastąpić poziom uprawnień Zezwalaj .
Podczas dodawania wielu zespołów rozważ utworzenie grupy niestandardowej Administratorzy zespołu, w której przydzielasz podzestaw uprawnień dostępnych dla administratorów projektu. Nie zmieniaj domyślnych przypisań dokonanych w grupach Project Valid Users . Jeśli usuniesz lub ustawisz opcję Wyświetl informacje na poziomie wystąpienia na wartość Odmów dla jednej z grup Project Valid Users , żaden użytkownik w grupie nie będzie mógł uzyskać dostępu do dowolnego projektu, kolekcji lub wdrożenia, dla którego ustawiono uprawnienie.
Rozważ przyznanie folderom zapytań elementu roboczego uprawnienie Współtworzenie użytkownikom lub grupom, którzy wymagają możliwości tworzenia i udostępniania zapytań dotyczących elementów roboczych dla projektu. Nie przypisuj uprawnień, które są zanotowane jako Przypisywanie tylko do kont usług do kont użytkowników.
Zachowaj możliwie najmniejsze grupy. Dostęp powinien być ograniczony, a grupy powinny być często poddawane inspekcji.
Korzystaj z wbudowanych ról i domyślnych ról współautora dla deweloperów. Administratorzy uzyskują przypisanie do grupy zabezpieczeń Administrator projektu w celu uzyskania podwyższonych uprawnień, co pozwala im skonfigurować uprawnienia zabezpieczeń.

Aby uzyskać więcej informacji, zobacz Prawidłowe grupy użytkowników.

Dostęp just in time dla grup administratorów

Jeśli masz dostęp administratora kolekcji projektów i administratora projektu, możesz zmodyfikować konfigurację organizacji lub projektu. Aby zwiększyć bezpieczeństwo tych wbudowanych grup administratorów, rozważ zaimplementowanie dostępu just in time przy użyciu grupy usługi Microsoft Entra Privileged Identity Management (PIM). Takie podejście umożliwia przyznawanie podwyższonych uprawnień tylko wtedy, gdy jest to konieczne, co zmniejsza ryzyko związane z trwałym dostępem.

Konfigurowanie dostępu

  1. Utwórz grupę z możliwością przypisywania ról w identyfikatorze Entra firmy Microsoft.
  2. Dodaj grupę Microsoft Entra do grupy usługi Azure DevOps.

Uwaga

Podczas konfigurowania dostępu just in time przy użyciu grupy microsoft Entra Privileged Identity Management (PIM) upewnij się, że każdy użytkownik z podwyższonym poziomem dostępu zachowuje również standardowy dostęp do organizacji. Dzięki temu mogą wyświetlać niezbędne strony i odświeżać uprawnienia zgodnie z potrzebami.

Korzystanie z dostępu

  1. Aktywuj dostęp.
  2. Odśwież swoje uprawnienia w usłudze Azure DevOps.
  3. Wykonaj akcję wymagającą dostępu administratora.

Uwaga

Użytkownicy mają podwyższony poziom dostępu w usłudze Azure DevOps przez maksymalnie 1 godzinę po dezaktywowaniu dostępu do grupy PIM.

Określanie zakresu kont usług

  • Omówienie kont usług
  • Tworzenie kont usług jednofunkcyjnych:
    • Każda usługa powinna mieć dedykowane konto, aby zminimalizować ryzyko.
    • Unikaj używania zwykłych kont użytkowników jako kont usług.
  • Postępuj zgodnie z konwencjami nazewnictwa i dokumentacji:
    • Użyj przejrzystych, opisowych nazw kont usług.
    • Dokumentowanie ich przeznaczenia i skojarzonych usług.
  • Identyfikowanie i wyłączanie nieużywanych kont usług:
    • Regularne przeglądanie i identyfikowanie kont, które nie są już używane.
    • Wyłącz nieużywane konta przed rozważeniem usunięcia.
  • Ogranicz uprawnienia:
    • Ogranicz uprawnienia konta usługi do minimum niezbędnego.
    • Unikaj interaktywnych praw logowania dla kont usług.
  • Użyj oddzielnych tożsamości dla czytelników raportów:
    • Jeśli używasz kont domeny dla kont usług, użyj innej tożsamości dla czytelników raportów.
    • Izoluj uprawnienia, aby zapobiec niepotrzebnemu dostępowi. Aby uzyskać więcej informacji, zobacz Konta usług i zależności.
  • Użyj kont lokalnych dla instalacji grup roboczych:
    • Podczas instalowania składników w grupie roboczej użyj kont lokalnych dla kont użytkowników.
    • Unikaj kont domeny w tym scenariuszu. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące konta usługi.
  • Korzystanie z połączeń usług:
    • Zawsze, gdy jest to możliwe, używaj połączeń usług.
    • Zapewniają one bezpieczny sposób nawiązywania połączenia z usługami bez bezpośredniego przekazywania zmiennych tajnych do kompilacji.
    • Ogranicz połączenia z określonymi przypadkami użycia.
  • Monitorowanie aktywności konta usługi:

Aby uzyskać więcej informacji, zobacz Typowe typy połączeń usługi.

Zakres połączeń usług

  • Zakres połączeń usługi Azure Resource Manager :
    • Aby ograniczyć dostęp, określ zakres połączeń usługi z określonymi zasobami i grupami. Unikaj udzielania szerokich praw współautora w całej subskrypcji platformy Azure.
    • Użyj federacji tożsamości obciążenia na potrzeby uwierzytelniania. Umożliwia to nawiązywanie połączeń usługi bez wpisów tajnych w usłudze Azure Pipelines.
  • Użyj federacji tożsamości obciążenia:
    • Federacja tożsamości obciążenia używa protokołu OpenID Connect (OIDC) do uwierzytelniania za pomocą zasobów platformy Azure bez używania wpisów tajnych.
    • Federację tożsamości obciążenia można utworzyć automatycznie lub ręcznie. Rozważ to podejście, jeśli:
      • Masz rolę Właściciel dla subskrypcji platformy Azure.
      • Nie łączysz się ze środowiskami azure Stack lub Azure US Government.
      • Wszystkie zadania rozszerzeń witryny Marketplace, których używasz, obsługują federację tożsamości obciążenia1.
  • Określanie zakresu grupy zasobów:
    • Upewnij się, że grupa zasobów zawiera tylko maszyny wirtualne lub zasoby potrzebne do procesu kompilacji.
  • Unikaj połączeń usługi klasycznej platformy Azure:
    • Klasyczne połączenia usług nie mają opcji określania zakresu. Zamiast tego wybierz nowoczesne połączenia usługi Azure Resource Manager.
  • Użyj kont usług zespołowych specyficznych dla określonego celu:
    • Uwierzytelnianie połączeń usług przy użyciu kont usług zespołowych specyficznych dla celu w celu zachowania zabezpieczeń i kontroli.

Aby uzyskać więcej informacji, zobacz Typowe typy połączeń usługi.


Wybieranie odpowiedniej metody uwierzytelniania

Wybierz metody uwierzytelniania z następujących źródeł:

Rozważ jednostki usługi

Zapoznaj się z alternatywami, takimi jak jednostki usługi i tożsamości zarządzane:

  • Jednostki usługi:
    • Reprezentują obiekty zabezpieczeń w aplikacji Microsoft Entra.
    • Zdefiniuj, co aplikacja może zrobić w danej dzierżawie.
    • Konfigurowanie podczas rejestracji aplikacji w witrynie Azure Portal.
    • Skonfigurowano dostęp do zasobów platformy Azure, w tym usługi Azure DevOps.
    • Przydatne w przypadku aplikacji wymagających określonego dostępu i kontroli.
  • Tożsamości zarządzane:
    • Podobnie jak jednostka usługi aplikacji.
    • Podaj tożsamości dla zasobów platformy Azure.
    • Zezwalaj usługom obsługującym uwierzytelnianie firmy Microsoft Entra na udostępnianie poświadczeń.
    • Platforma Azure automatycznie obsługuje zarządzanie poświadczeniami i rotację.
    • Idealne rozwiązanie w przypadku bezproblemowego zarządzania szczegółami logowania.

Używanie pats oszczędnie

  • Zakres paTs do określonych ról:
    • Przypisz stacje paT tylko niezbędne uprawnienia wymagane dla określonych zadań. Unikaj udzielania dostępu globalnego do wielu organizacji lub repozytoriów.
    • Określanie zakresu punktów dostępu zapewnia, że mają wymagane minimalne uprawnienia, co zmniejsza ryzyko przypadkowego nieprawidłowego użycia.
  • Unikaj zapisywania i zarządzania uprawnieniami do kompilacji i wydań:
    • Dostawcy paTs nie powinni mieć uprawnień do zapisu ani zarządzania kompilacjami, wydaniami ani innymi krytycznymi zasobami.
    • Ograniczenie tych uprawnień pomaga zapobiegać niezamierzonym akcjom, które mogą mieć wpływ na potoki lub wdrożenia.
  • Ustaw daty wygaśnięcia i zachowaj wpis tajny usługi PATs:
    • Zawsze ustawiaj datę wygaśnięcia dla pats. Regularnie przeglądaj i odnawiaj je zgodnie z potrzebami.
    • Traktuj pats jako krytyczne jako hasła. Zachowaj ich poufność i unikaj ich publicznego udostępniania lub trwałego kodowania w kodzie aplikacji.
  • Unikaj kodowania hardcoding PATs w kodzie aplikacji:
    • Chociaż może się wydawać wygodne, unikaj osadzania paTs bezpośrednio w kodzie.
    • Zamiast tego używaj bezpiecznych plików konfiguracji lub zmiennych środowiskowych do dynamicznego przechowywania i pobierania paT.
  • Regularnie przeprowadzaj inspekcję i odwoływanie nieużywanych paTs:
    • Administratorzy powinni okresowo przeglądać wszystkie pakiety PAT przy użyciu interfejsów API REST.
    • Odwoływanie żadnych paT, które nie są już potrzebne lub nie spełniają zalecanych kryteriów.

Aby uzyskać więcej informacji, zapoznaj się z następującymi artykułami:


Zabezpieczanie usługi Azure Artifacts

  • Upewnij się, że rozumiesz różnicę między kanałami informacyjnymi, projektami i administratorami kolekcji projektów. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień usługi Azure Artifacts.
  • Ustaw uprawnienia kanału informacyjnego.

Zabezpieczanie usługi Azure Boards

Zabezpieczanie usługi Azure Pipelines

Zasady

  • Wymagaj recenzentów spoza oryginalnego osoby żądającego:
    • Posiadanie co najmniej jednego recenzenta spoza oryginalnego osoby żądającego zapewnia bardziej szczegółowy proces przeglądu.
    • Osoba zatwierdzająca współwłaściciel akcji zmian powinna być równie pociągnięta do odpowiedzialności za potencjalny wpływ.
  • Wymagaj przekazania kompilacji ciągłej integracji:
    • Wymaganie przekazania kompilacji ciągłej integracji przed scaleniem żądania ściągnięcia ustanawia punkt odniesienia dla jakości kodu.
    • Testy ciągłej integracji obejmują linting kodu, testy jednostkowe i skanowania zabezpieczeń (na przykład testy wirusów i poświadczeń).
  • Nie zezwalaj na samodzielne zatwierdzanie przez oryginalnego żądającego:
    • Uniemożliwiaj oryginalnemu żądającemu żądania ściągnięcia zatwierdzenie własnych zmian.
    • Ta akcja zapewnia niestronny proces przeglądu i pozwala uniknąć potencjalnych konfliktów interesów.
  • Nie zezwalaj na ukończenie żądania ściągnięcia nawet z głosami "wait" lub "reject":
    • Nawet jeśli niektórzy recenzenci głosują, aby czekać lub odrzucić, uniemożliwić ukończenie żądania ściągnięcia.
    • Ta akcja zachęca do zwracania się do wszystkich opinii przed scaleniem.
  • Zresetuj głosy recenzentów kodu przy wypchniętych zmianach:
    • Po wypchnięciu ostatnich zmian do żądania ściągnięcia zresetuj głosy recenzentów.
    • Ta akcja gwarantuje, że recenzenci ponownie ocenią zaktualizowany kod.
  • Zablokuj potoki wydania do określonych gałęzi produkcyjnych:
    • Ogranicz potoki wydania do określonych gałęzi (zwykle produkcyjnych lub głównych).
    • Unikaj przypadkowych wdrożeń z innych gałęzi.
  • Wymuszanie zmiennych ustawianych w czasie kolejki:
    • Włącz opcję "Wymuszaj tabelę ustawianą w czasie kolejki" dla zmiennych potoku.
    • Ta akcja uniemożliwia użytkownikom zastępowanie wartości zmiennych podczas wykonywania potoku.
  • Nie zezwalaj na przesłonięcia zmiennych w edytorze:
    • W przypadku zmiennych ustawionych w edytorze potoków nie zezwalaj na przesłonięcia użytkowników.
    • Ta akcja utrzymuje spójność i zapobiega niezamierzonym zmianom.

Agenci

  • Udziel uprawnień oszczędnie:
    • Ogranicz uprawnienia do najmniejszego niezbędnego zestawu kont.
    • Unikaj nadmiernego dostępu, zmniejszając obszar ataków.
  • Restrykcyjne zapory dla agentów do użycia:
    • Skonfiguruj zapory tak restrykcyjne, jak to możliwe, jednocześnie zezwalając agentom na działanie.
    • Zachowanie równowagi między bezpieczeństwem a użytecznością.
  • Regularnie aktualizuj pule agentów:
    • Aktualizuj flotę agentów, regularnie aktualizując agentów.
    • Ta akcja gwarantuje, że kod podatny na zagrożenia nie działa, zmniejszając ryzyko wykorzystania.
  • Oddzielna pula agentów dla artefaktów produkcyjnych:
    • Użyj odrębnej puli agentów dla artefaktów kompilacji przeznaczonych do produkcji.
    • Izolowanie artefaktów produkcyjnych pomaga zapobiegać przypadkowym wdrożeniom z gałęzi nieprodukcyjnych.
  • Pule poufne segmentów:
    • Utwórz oddzielne pule dla obciążeń poufnych i niewrażliwych.
    • Zezwalaj tylko na poświadczenia w definicjach kompilacji skojarzonych z odpowiednią pulą.

Definicje

  • Użyj kodu YAML dla definicji potoków:
    • YAML (Yet Another Markup Language) to zalecane podejście do definiowania potoków.
    • Zapewnia możliwość śledzenia zmian, co ułatwia śledzenie modyfikacji w czasie.
    • Ponadto potoki YAML mogą być zgodne z wytycznymi dotyczącymi zatwierdzania i praktykami kontroli wersji.
  • Ogranicz dostęp do edycji definicji potoku:
    • Ogranicz dostęp do edytowania definicji potoku do minimalnych niezbędnych kont.
    • Dzięki temu można zmniejszyć ryzyko przypadkowych lub nieautoryzowanych zmian.

Dane wejściowe

  • Uwzględnij sprawdzanie kondycji zmiennych w skryptach kompilacji:
    • Zaimplementuj kontrole kondycji w skryptach kompilacji, aby wyeliminować potencjalne ataki iniekcji poleceń za pomocą zmiennych settable.
    • Te testy mogą weryfikować wartości wejściowe i zapobiegać niezamierzonym lub złośliwym poleceniom.
  • Ogranicz liczbę zmiennych kompilacji "settable at release time":
    • Ustaw jak najwięcej zmiennych kompilacji, aby mieć wartość "settable w czasie wydania".
    • Minimalizacja liczby takich zmiennych zmniejsza obszar ataków i upraszcza zarządzanie konfiguracją.

Zadania

  • Unikaj zdalnego pobierania zasobów:
    • Jeśli to możliwe, unikaj pobierania zasobów z zewnętrznych adresów URL podczas procesu kompilacji.
    • Jeśli zasoby zdalne są niezbędne, użyj sprawdzania wersji i skrótu, aby zapewnić integralność.
  • Unikaj rejestrowania wpisów tajnych:
    • Nigdy nie rejestruj poufnych informacji, takich jak wpisy tajne lub poświadczenia, w dziennikach kompilacji.
    • Rejestrowanie wpisów tajnych może spowodować przypadkowe ujawnienie ich i naruszenie zabezpieczeń.
  • Użyj usługi Azure Key Vault dla wpisów tajnych:
    • Zamiast przechowywać wpisy tajne bezpośrednio w zmiennych potoku, użyj usługi Azure Key Vault.
    • Usługa Key Vault zapewnia bezpieczny sposób centralnego zarządzania wpisami tajnymi i pobierania ich.
  • Ogranicz uruchamianie kompilacji względem dowolnych gałęzi lub tagów:
    • W przypadku potoków krytycznych dla zabezpieczeń ogranicz użytkownikom uruchamianie kompilacji względem dowolnej gałęzi lub tagu.
    • Zdefiniuj określone autoryzowane gałęzie lub tagi, aby zapobiec przypadkowym lub nieautoryzowanym wykonywaniu.
  • Wyłącz dziedziczenie dla uprawnień potoku:
    • Uprawnienia dziedziczone mogą być zbyt szerokie i mogą nie odzwierciedlać dokładnie Twoich potrzeb.
    • Wyłącz dziedziczenie i jawnie ustaw uprawnienia zgodnie z wymaganiami dotyczącymi zabezpieczeń.
  • Ogranicz zakresy autoryzacji zadań:
    • Zawsze ogranicz zakresy autoryzacji zadań do minimum niezbędnego.
    • Dostosuj uprawnienia na podstawie określonych zadań wykonywanych przez każde zadanie.

Repozytoria i gałęzie

  • Wymagaj minimalnej liczby recenzentów:
    • Włącz zasady "Wymagaj minimalnej liczby recenzentów", aby upewnić się, że każde żądanie ściągnięcia odbiera przeglądy od co najmniej dwóch osób zatwierdzających.
    • Promuje to dokładne przeglądy kodu i odpowiedzialność.
  • Konfigurowanie zasad zabezpieczeń specyficznych dla repozytorium:
    • Zamiast zasad dotyczących całego projektu dostosuj zasady zabezpieczeń do każdego repozytorium lub gałęzi.
    • Dostosowane zasady zmniejszają ryzyko, wymuszają standardy zarządzania zmianami i zwiększają jakość kodu.
  • Izolowanie wpisów tajnych produkcyjnych w oddzielnym magazynie kluczy:
    • Przechowywanie wpisów tajnych produkcyjnych oddzielnie w usłudze Azure Key Vault.
    • Ogranicz dostęp do podstawy konieczności znajomości, aby zachować separację od kompilacji nieprodukcyjnych.
  • Segregowanie środowisk testowych z środowiska produkcyjnego:
    • Unikaj mieszania środowisk testowych z produkcją.
    • Upewnij się, że poświadczenia i wpisy tajne nie są używane w kontekstach nieprodukcyjnych.
  • Wyłącz rozwidanie:
    • Wyłączenie rozwidłania ułatwia zarządzanie zabezpieczeniami.
    • Rozwidlenia mogą być dystrybuowane, co utrudnia śledzenie zabezpieczeń we wszystkich kopiach.
  • Unikaj podawania wpisów tajnych do kompilacji rozwidlenia:
    • Powstrzymaj się od udostępniania wpisów tajnych z rozwidlonych kompilacji.
    • Wpisy tajne powinny pozostać poufne i nie być narażone na rozwidlenia.
  • Rozważ ręczne wyzwalanie kompilacji rozwidlenia:
    • Ręczne wyzwalanie kompilacji forksów zamiast zezwalania na wyzwalacze automatyczne.
    • Zapewnia to lepszą kontrolę nad kontrolami zabezpieczeń.
  • Użyj agentów hostowanych przez firmę Microsoft dla kompilacji rozwidlenia:
    • Korzystaj z agentów hostowanych przez firmę Microsoft dla rozwidlenia kompilacji.
    • Ci agenci są utrzymywani i bezpieczni.
  • Skanuj definicje kompilacji produkcyjnej w repozytoriach Git:
    • Regularnie sprawdzaj definicje kompilacji produkcyjnej przechowywane w repozytorium Git projektu.
    • Skanuj pod kątem wszelkich poświadczeń lub informacji poufnych.
  • Konfigurowanie kontroli gałęzi dla kontekstu produkcyjnego:
    • Skonfiguruj kontrole kontroli gałęzi, aby ograniczyć użycie połączeń poufnych (np. prod-connection) do potoków uruchomionych w kontekście gałęzi produkcyjnej.
    • Zapewnia to właściwą autoryzację i zapobiega przypadkowemu niewłaściwemu użyciu.

Aby uzyskać więcej informacji, zobacz Inne zagadnienia dotyczące zabezpieczeń.

Zabezpieczanie usługi Azure Repos

Zabezpieczanie planów testów platformy Azure

Zabezpieczanie integracji z usługą GitHub

  • Użyj przepływu OAuth zamiast paTs:
    • Wyłącz uwierzytelnianie oparte na pat dla połączeń usługi GitHub.
    • Wybierz przepływ OAuth, który zapewnia lepsze zabezpieczenia i integrację.
  • Unikaj tożsamości administratora lub właściciela:
    • Nigdy nie uwierzytelniaj połączeń usługi GitHub przy użyciu tożsamości, która jest administratorem lub właścicielem jakichkolwiek repozytoriów.
    • Ogranicz uprawnienia do niezbędnego poziomu.
  • Unikaj pełnozakresowych paT usługi GitHub:
    • Powstrzymaj się od używania pełnego dostępu do usługi GitHub w celu uwierzytelniania połączeń usług.
    • Użyj tokenów z minimalnymi wymaganymi uprawnieniami.
  • Unikaj osobistych kont usługi GitHub jako połączeń usług:
    • Nie używaj osobistych kont usługi GitHub jako połączeń usług w usłudze Azure DevOps.
    • Zamiast tego utwórz dedykowane konta usług lub użyj kont na poziomie organizacji.