Zabezpieczanie usługi Azure Pipelines

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

Usługa Azure Pipelines stanowi unikatowe wyzwania związane z zabezpieczeniami. Potok umożliwia uruchamianie skryptów lub wdrażanie kodu w środowiskach produkcyjnych. Jednak chcesz mieć pewność, że potoki ciągłej integracji/ciągłego wdrażania nie staną się sposobem uruchamiania złośliwego kodu. Chcesz również upewnić się, że wdrożony jest tylko kod, który zamierzasz wdrożyć. Bezpieczeństwo musi być zrównoważone dzięki zapewnianiu zespołom elastyczności i możliwości, które muszą uruchamiać własne potoki.

Uwaga

Usługa Azure Pipelines to jedna z kolekcji usług Azure DevOps Services, która jest oparta na tej samej bezpiecznej infrastrukturze na platformie Azure. Aby zapoznać się z głównymi pojęciami dotyczącymi zabezpieczeń dla wszystkich usług Azure DevOps Services, zobacz Omówienie usługi Azure DevOps Data Protection i Zabezpieczenia i tożsamość usługi Azure DevOps.

Tradycyjnie organizacje wdrażały zabezpieczenia poprzez drakońskie blokady. Środowisko kodu, potoków i środowiska produkcyjne miało poważne ograniczenia dostępu i użycia. W małych organizacjach z kilkoma użytkownikami i projektami takie stanowisko było stosunkowo łatwe do zarządzania. Jednak nie jest tak w większych organizacjach. Jeśli wielu użytkowników ma dostęp współautora do kodu, należy "założyć naruszenie". Przy założeniu, że naruszenie oznacza zachowanie, jakby osoba atakująca ma dostęp współautora do niektórych (jeśli nie wszystkich) repozytoriów.

Celem w tym przypadku jest zapobieganie temu, że osoby atakujące nie uruchamiają złośliwego kodu w potoku. Złośliwy kod może ukraść wpisy tajne lub uszkodzone środowiska produkcyjne. Innym celem jest zapobieganie penetracji innych projektów, potoków i repozytoriów z naruszonego potoku.

Potoki YAML oferują najlepsze zabezpieczenia dla usługi Azure Pipelines. W przeciwieństwie do klasycznych potoków kompilacji i wydania potoki YAML:

  • Można przejrzeć kod. Potoki YAML nie różnią się od innych fragmentów kodu. Możesz uniemożliwić złośliwym podmiotom wprowadzanie złośliwych kroków w potokach, wymuszając użycie żądań ściągnięcia do scalania zmian. Zasady gałęzi ułatwiają skonfigurowanie tych zasad .
  • Zapewnianie zarządzania dostępem do zasobów. Właściciele zasobów decydują, czy potok YAML może uzyskać dostęp do zasobu, czy nie. Te ataki kontroli funkcji zabezpieczeń, takie jak kradzież innego repozytorium. Zatwierdzenia i kontrole zapewniają kontrolę dostępu dla każdego uruchomienia potoku.
  • Obsługa parametrów środowiska uruchomieniowego. Parametry środowiska uruchomieniowego pomagają uniknąć wielu problemów z zabezpieczeniami związanych ze zmiennymi, takimi jak wstrzykiwanie argumentów.

W tej serii artykułów opisano zalecenia ułatwiające łączenie bezpiecznego potoku ciągłej integracji/ciągłego wdrażania opartego na języku YAML. Obejmuje również miejsca, w których można dokonać kompromisów między bezpieczeństwem a elastycznością. W tej serii założono również znajomość usługi Azure Pipelines, podstawowych konstrukcji zabezpieczeń usługi Azure DevOps i usługi Git.

Uwzględnione tematy: