Zabezpieczanie usługi Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Usługa Azure Pipelines przedstawia różne wyzwania związane z zabezpieczeniami. Potoki umożliwiają wykonywanie skryptów lub wdrażanie kodu w środowiskach produkcyjnych, ale niezwykle ważne jest, aby zapobiec ich powstawaniu w poszukiwaniu złośliwego kodu. Równoważenie zabezpieczeń dzięki elastyczności i możliwości wymaganej przez zespoły programistyczne jest niezbędne.
Uwaga
Usługa Azure Pipelines jest częścią pakietu usług Azure DevOps Services, które są oparte na bezpiecznej infrastrukturze na platformie Azure. Aby uzyskać kompleksową wiedzę na temat pojęć związanych z zabezpieczeniami we wszystkich usługach Azure DevOps Services, zalecamy wyświetlenie następujących zasobów:
Tradycyjnie organizacje wymuszają bezpieczeństwo za pomocą rygorystycznych blokad. Środowisko kodu, potoków i środowiska produkcyjne mają poważne ograniczenia dostępu. Chociaż takie podejście działa dobrze w małych organizacjach z ograniczonymi użytkownikami i projektami, większe organizacje stoją w obliczu innej rzeczywistości. Przy licznych współautorach mających dostęp do kodu zasada "zakładania naruszenia" staje się kluczowa. Obejmuje ona działanie tak, jakby osoba atakująca posiadała dostęp współautora do repozytoriów, co wymaga zwiększonej czujności.
Aby osiągnąć cele zabezpieczeń, należy wziąć pod uwagę następujące kwestie:
Zapobiegaj wykonywaniu złośliwego kodu:
- Upewnij się, że potoki są skonfigurowane w celu zapobiegania nieautoryzowanemu wykonywaniu złośliwego kodu, który obejmuje następujące zadania:
- Ogranicz dostęp do poufnych wpisów tajnych i poświadczeń.
- Zweryfikuj parametry wejściowe i argumenty, aby zapobiec niezamierzonemu zachowaniu.
- Regularnie przeglądaj i przeprowadzaj inspekcję skryptów potoków pod kątem potencjalnych zagrożeń bezpieczeństwa.
- Zaimplementuj rozwiązania w zakresie zabezpieczeń, takie jak:
- Użyj sparametryzowanych zapytań w skryptach, aby zapobiec wstrzyknięciu kodu SQL.
- Ucieczka znaków specjalnych w argumentach, aby uniknąć iniekcji poleceń powłoki.
- Ogranicz uprawnienia dla połączeń usługi potoku.
- Rozważ użycie potoków YAML, które zapewniają szczegółową kontrolę nad wykonywaniem i są mniej podatne na zagrożenia bezpieczeństwa.
- Upewnij się, że potoki są skonfigurowane w celu zapobiegania nieautoryzowanemu wykonywaniu złośliwego kodu, który obejmuje następujące zadania:
Eliminowanie narażenia bocznego:
- Izoluj potoki, aby zapobiec ruchowi bocznemu w projektach i repozytoriach organizacji.
- Ogranicz dostęp tylko do niezbędnych repozytoriów i zasobów dla każdego potoku.
- Monitorowanie działania potoku i konfigurowanie alertów pod kątem podejrzanego zachowania.
- Regularne przeglądanie i aktualizowanie uprawnień w celu zminimalizowania narażenia.
Użyj potoków YAML:
- Potoki YAML oferują następujące korzyści w zakresie zabezpieczeń:
- Jawne definiowanie kroków i zależności potoku.
- Kontrola wersji definicji potoku.
- Wyczyść wgląd w konfigurację potoku.
- Zmniejszono ryzyko przypadkowej błędnej konfiguracji.
- Przegląd kodu i żądania ściągnięcia:
- Traktuj potoki YAML tak jak każdy inny kod.
- Wymuszanie żądań ściągnięcia w celu scalenia zmian, aby zapobiec złośliwym krokom.
- Użyj zasad gałęzi, aby skonfigurować ten proces przeglądu.
- Zarządzanie dostępem do zasobów:
- Właściciele zasobów kontrolują, czy potok YAML może uzyskiwać dostęp do określonych zasobów.
- Ta funkcja zabezpieczeń zapobiega atakom, takim jak kradzież innego repozytorium.
- Zatwierdzenia i kontrole zapewniają kontrolę dostępu dla każdego uruchomienia potoku.
- Parametry środowiska uruchomieniowego:
- Parametry środowiska uruchomieniowego pomagają uniknąć problemów z zabezpieczeniami związanych ze zmiennymi, takimi jak wstrzykiwanie argumentów.
- Rozważ migrację istniejących potoków do formatu YAML, aby zwiększyć bezpieczeństwo i łatwość konserwacji.
- Potoki YAML oferują następujące korzyści w zakresie zabezpieczeń:
Bezpieczeństwo to ciągły proces, a regularne oceny i aktualizacje są niezbędne. Potoki YAML oferują najlepsze zabezpieczenia dla usługi Azure Pipelines.
W poniższych artykułach opisano zalecenia ułatwiające opracowywanie bezpiecznego potoku opartego na języku YAML: