Rekomendacje zabezpieczanie udostępnionej infrastruktury w usłudze Azure Pipelines

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

Chronione zasoby w usłudze Azure Pipelines to abstrakcja rzeczywistej infrastruktury. Postępuj zgodnie z tymi zaleceniami, aby chronić podstawową infrastrukturę.

Korzystanie z pul hostowanych przez firmę Microsoft

Pule hostowane przez firmę Microsoft oferują izolację i czystą maszynę wirtualną dla każdego uruchomienia potoku. Jeśli to możliwe, użyj pul hostowanych przez firmę Microsoft, a nie pul hostowanych samodzielnie.

Oddzielni agenci dla każdego projektu

Agent może być powiązany tylko z jedną pulą. Możesz udostępnić agentów między projektami, udostępniając pulę wielu projektom. Innymi słowy, wiele projektów może uruchamiać zadania na tym samym agencie, jeden po drugim. Mimo że ta praktyka pozwala zaoszczędzić koszty infrastruktury, może pozwolić na ruch poprzeczny.

Aby wyeliminować taką formę ruchu bocznego i zapobiec "zatruciu" jednego projektu agentowi dla innego projektu, zachowaj oddzielne pule agentów z oddzielnymi agentami dla każdego projektu.

Uruchamianie agentów przy użyciu kont z niskimi uprawnieniami

Kuszące jest, ale niebezpieczne, aby uruchomić agenta w ramach tożsamości, która może bezpośrednio uzyskać dostęp do zasobów usługi Azure DevOps. Ta problematyczna konfiguracja jest powszechna w organizacjach korzystających z identyfikatora Entra firmy Microsoft. Jeśli uruchamiasz agenta w ramach tożsamości, która jest wspierana przez identyfikator Entra firmy Microsoft, może on bezpośrednio uzyskać dostęp do interfejsów API usługi Azure DevOps bez użycia tokenu dostępu zadania. Zamiast tego należy uruchomić agenta jako nieuprzywilejowane konto lokalne, takie jak usługa sieciowa.

Usługa Azure DevOps ma grupę, która wprowadza w błąd nazwę Konta usług kolekcji projektów. Po dziedziczeniu członkowie kont usługi kolekcji projektów są również członkami kolekcji projektów Administracja istratorów. Klienci czasami uruchamiają swoich agentów kompilacji przy użyciu tożsamości, która jest wspierana przez identyfikator Firmy Microsoft Entra i jest członkiem kont usług kolekcji projektów. Jeśli przeciwnicy uruchamiają potok na jednym z tych agentów kompilacji, mogą przejąć całą organizację usługi Azure DevOps.

Widzieliśmy również agentów hostowanych samodzielnie w ramach wysoce uprzywilejowanych kont. Często agenci używają uprzywilejowanych kont do uzyskiwania dostępu do wpisów tajnych lub środowisk produkcyjnych. Jeśli jednak przeciwnicy uruchamiają potok z naruszeniem zabezpieczeń na jednym z tych agentów kompilacji, mogą oni uzyskać dostęp do tych wpisów tajnych. Następnie przeciwnicy mogą przechodzić później przez inne systemy, które są dostępne za pośrednictwem tych kont.

Aby zapewnić bezpieczeństwo systemów, użyj konta z najniższymi uprawnieniami do uruchamiania własnych agentów. Na przykład użyj konta komputera lub tożsamości usługi zarządzanej. Pozwól usłudze Azure Pipelines zarządzać dostępem do wpisów tajnych i środowisk.

Minimalizuj zakres połączeń usług

Połączenia usług muszą mieć dostęp tylko do zasobów, których potrzebują. Jeśli to możliwe, użyj federacji tożsamości obciążenia zamiast jednostki usługi dla połączenia z usługą platformy Azure. Federacja tożsamości obciążeń używa standardowej technologii Open ID Połączenie (OIDC), aby ułatwić uwierzytelnianie między platformą Azure i usługą Azure DevOps i nie używa wpisów tajnych.

Połączenie usługi platformy Azure powinno być ograniczone do zasobów, do których wymagane jest połączenie usługi. Użytkownicy nie powinni mieć szerokich praw współautora dla całej subskrypcji platformy Azure.

Podczas tworzenia nowego połączenia usługi Azure Resource Manager zawsze wybieraj grupę zasobów. Upewnij się, że grupa zasobów zawiera tylko maszyny wirtualne lub zasoby wymagane przez kompilację. Podobnie podczas konfigurowania aplikacji GitHub przyznaj dostęp tylko do repozytoriów, które mają zostać skompilowane przy użyciu usługi Azure Pipelines.

Następne kroki

Rozważ kilka ogólnych zaleceń dotyczących zabezpieczeń.