Zagadnienia dotyczące zabezpieczeń dla platform DevOps
Bezpieczeństwo zawsze powinno być priorytetem na platformach deweloperskich opartych na chmurze, takich jak Azure DevOps i GitHub. Firma Microsoft aktualizuje i utrzymuje bezpieczeństwo podstawowej infrastruktury chmury, ale warto przejrzeć i skonfigurować najlepsze rozwiązania w zakresie zabezpieczeń dla własnych organizacji usługi Azure DevOps i wystąpień usługi GitHub.
Rozważ następujące krytyczne obszary zabezpieczeń niezależnie od tego, czy wdrażasz środowiska za pośrednictwem infrastruktury jako kodu w potokach ciągłej integracji i ciągłego wdrażania (CI/CD), czy wdrażasz kod w aplikacjach hostowanych na platformie Azure.
Ograniczanie dostępu do narzędzi DevOps
Postępuj zgodnie z zasadą najniższych uprawnień przy użyciu kontroli dostępu opartej na rolach (RBAC) za pośrednictwem identyfikatora Entra firmy Microsoft. Zapewnij użytkownikom i usługom minimalny dostęp do platform DevOps, których potrzebują do wykonywania swoich funkcji biznesowych. Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Połącz swoją organizację z Microsoft Entra ID
- Integracja logowania jednokrotnego (SSO) firmy Microsoft z usługą GitHub Enterprise Cloud
- Najlepsze rozwiązania dotyczące zabezpieczeń usługi Azure DevOps
Po ustanowieniu identyfikatora Entra firmy Microsoft jako płaszczyzny zarządzania tożsamościami postępuj zgodnie z najlepszymi rozwiązaniami, aby zarządzać przypisaniami ról usługi Azure DevOps za pomocą członkostw w grupach firmy Microsoft Entra. Role usługi Azure DevOps można przypisać do grup firmy Microsoft Entra i dostosować członkostwo użytkownika Microsoft Entra w celu zmiany lub usunięcia dostępu do usługi Azure DevOps.
Zarządzanie upoważnieniami identyfikatora Entra firmy Microsoft umożliwia tworzenie pakietów dostępu, które umożliwiają użytkownikom firmy Microsoft Entra ograniczony czas dostęp do wymaganych zasobów w celu ukończenia zadań.
Możesz również użyć usługi Microsoft Entra Privileged Identity Management w celu uzyskania dostępu just in time do promowania osób do ról administratora usługi Azure DevOps przez pewien czas.
Zarządzanie zabezpieczeniami w usłudze Azure DevOps przy użyciu grup zabezpieczeń, zasad i ustawień na poziomie organizacji, projektu lub obiektu usługi Azure DevOps. Rozważ wyłączenie dziedziczenia uprawnień w usłudze Azure DevOps, jeśli to możliwe.
Ograniczanie dostępu do repozytorium i gałęzi
Ogranicz dostęp do repozytorium, uprawnienia i tworzenie gałęzi, aby chronić kod i środowiska przed niepożądanymi lub złośliwymi zmianami. Ograniczanie dostępu do repozytoriów przy użyciu grup zabezpieczeń w usłudze Azure DevOps. Ogranicz, kto może odczytywać i aktualizować kod w gałęziach, ustawiając uprawnienia gałęzi.
Ograniczanie dostępu i uprawnień potoku
Złośliwy kod może ukraść dane i wpisy tajne przedsiębiorstwa oraz uszkodzone środowiska produkcyjne. Zaimplementuj zabezpieczenia, aby zapobiec złośliwemu wdrożeniu kodu w potoku. Ograniczając dostęp i implementując bariery ochronne, można również zapobiec penetracji innych projektów, potoków i repozytoriów z jakichkolwiek naruszonych potoków.
Rozważ zastosowanie przyrostowego podejścia do zabezpieczania potoków YAML. Aby uzyskać więcej informacji, zobacz Planowanie sposobu zabezpieczania potoków YAML.
Wybieranie agenta DevOps na podstawie potrzeb zabezpieczeń
Możesz użyć agentów hostowanych przez firmę Microsoft lub własnych do obsługi potoków usług Azure DevOps i GitHub. Istnieją kompromisy dla każdego typu agenta.
W przypadku agentów hostowanych przez firmę Microsoft nie musisz martwić się o uaktualnienia ani konserwację. Dzięki własnym agentom masz większą elastyczność wdrażania mechanizmów zabezpieczających. Kontrolujesz sprzęt agenta, system operacyjny i zainstalowane narzędzia.
Zobacz Agenci usługi Azure Pipelines, aby przejrzeć różnice między typami agentów i zidentyfikować potencjalne zagadnienia dotyczące zabezpieczeń.
Korzystanie z bezpiecznych i o określonym zakresie połączeń usług
Jeśli to możliwe, użyj połączenia z usługą, aby wdrożyć infrastrukturę lub kod aplikacji w środowisku platformy Azure. Połączenie z usługą powinno mieć ograniczony dostęp do wdrożenia do określonych zasobów lub grup zasobów platformy Azure, aby zmniejszyć potencjalne powierzchnie ataków. Należy również rozważyć utworzenie oddzielnych połączeń usług dla środowisk deweloperskich, testowych, kontroli jakości i produkcyjnych.
Korzystanie z magazynu wpisów tajnych
Nigdy nie zakodowano wpisów tajnych w kodzie lub dokumentacji pomocniczej w repozytoriach. Przeciwnicy skanują repozytoria, wyszukując ujawnione poufne dane do wykorzystania. Skonfiguruj magazyn wpisów tajnych, taki jak usługa Azure Key Vault, i odwoływanie się do magazynu w usłudze Azure Pipelines w celu bezpiecznego pobierania kluczy, wpisów tajnych lub certyfikatów. Aby uzyskać więcej informacji, zobacz Zabezpieczanie potoku i przepływu pracy ciągłej integracji/ciągłego wdrażania. Możesz również użyć wpisów tajnych usługi Key Vault w przepływach pracy funkcji GitHub Actions.
Tworzenie i wdrażanie kodu przy użyciu stacji roboczych DevOps ze wzmocnionymi zabezpieczeniami
Zespoły ds. platformy i programowania często mają podwyższone uprawnienia na platformie Azure lub w innych usługach, takich jak Azure DevOps i GitHub. Ten dostęp znacznie zwiększa potencjalną powierzchnię ataków. Zaimplementuj zabezpieczenia w celu zabezpieczenia wszystkich punktów końcowych i stacji roboczych używanych do tworzenia i wdrażania kodu.
Użyj zabezpieczonych stacji roboczych administratora ze wzmocnionymi zabezpieczeniami (SAW), aby wdrożyć wszelkie zmiany w środowiskach produkcyjnych i wysokiego ryzyka. Aby uzyskać więcej informacji, zobacz Zabezpieczanie punktów końcowych z zerowym zaufaniem.
Przeprowadzanie skanowania i testowania zabezpieczeń
Niezależnie od tego, czy wdrażasz kod aplikacji, czy infrastrukturę jako kod, implementujesz najlepsze rozwiązania i kontrolki DevSecOps w potokach. Zintegruj zabezpieczenia na wczesnym etapie podróży ciągłej integracji/ciągłego wdrażania, aby zapobiec kosztownym naruszeniom zabezpieczeń później. Utwórz strategię implementowania statycznej analizy kodu, testowania jednostkowego, skanowania wpisów tajnych i skanowania pakietów/zależności w potokach.
Narzędzia zabezpieczeń przedsiębiorstwa, takie jak Microsoft Defender dla Chmury, mogą integrować się z narzędziami DevOps. Na przykład Defender dla Chmury mogą identyfikować wrażliwe obrazy kontenerów w przepływach pracy ciągłej integracji/ciągłego wdrażania. W przypadku funkcji GitHub Actions i repozytoriów użyj usługi GitHub Advanced Security na potrzeby skanowania kodu i wpisów tajnych oraz przeglądu zależności.
Okresowo przeglądaj zdarzenia inspekcji, aby monitorować i reagować na nieoczekiwane wzorce użycia przez administratorów i innych użytkowników. Możesz uzyskiwać dostęp do dzienników inspekcji, filtrować i eksportować je dla organizacji usługi Azure DevOps. W przypadku długoterminowego przechowywania i szczegółowego wykonywania zapytań dotyczących dzienników utwórz strumień inspekcji w obszarze roboczym usługi Azure Monitor Log Analytics lub w systemie zarządzania informacjami i zdarzeniami zabezpieczeń (SIEM), takimi jak Microsoft Sentinel.