Implementowanie alertów i aktualizacji zabezpieczeń usługi GitHub Dependabot

Ukończone

Narzędzie GitHub Dependabot zapewnia automatyczne zarządzanie zależnościami zintegrowane bezpośrednio z repozytoriami GitHub. Dependabot monitoruje zależności pod kątem luk w zabezpieczeniach i nieaktualnych wersji, ostrzegając osoby odpowiedzialne za repozytorium i automatycznie tworząc żądania ściągnięcia w celu zaktualizowania luk w zabezpieczeniach lub nieaktualnych zależności. Ta integracja sprawia, że zabezpieczenia zależności są dostępne dla wszystkich użytkowników usługi GitHub bez konieczności używania oddzielnych narzędzi.

Informacje o narzędziu GitHub Dependabot

GitHub Dependabot składa się z trzech głównych funkcji, które współpracują ze sobą w celu zabezpieczenia zależności:

Alerty dependabot

Alerty dependabot powiadamiają osoby odpowiedzialne za repozytorium po wykryciu zależności podatnych na zagrożenia. Usługa GitHub stale monitoruje bazę danych porad w usłudze GitHub i inne źródła luk w zabezpieczeniach, porównując je z zależnościami używanymi w repozytoriach.

Wyzwalacze alertów:

  • Nowe ujawnienia luk w zabezpieczeniach: Alerty są tworzone po dodaniu nowych luk w zabezpieczeniach do bazy danych porad usługi GitHub.
  • Aktualizacje porad: Istniejące alerty są aktualizowane po zmianie informacji o lukach w zabezpieczeniach (ważność, wersje, poprawki).
  • Zmiany grafu zależności: Nowe alerty są generowane, gdy zmiany kodu wprowadzają zależności podatne na zagrożenia.
  • Dane o lukach w zabezpieczeniach Mend: Dodatkowa analiza luk w zabezpieczeniach od Mend (dawniej WhiteSource) uzupełnia bazę danych doradczych usługi GitHub.

Informacje o alertach obejmują:

  • Opis luki w zabezpieczeniach: Szczegółowe wyjaśnienie problemu z zabezpieczeniami.
  • Poziom ważności: Ocena CVSS i klasyfikacja ważności (krytyczne, wysokie, umiarkowane, niskie).
  • Wersje, których dotyczy problem: Które wersje zależności zawierają lukę w zabezpieczeniach.
  • Wersje poprawkowe: Które wersje naprawiają lukę w zabezpieczeniach.
  • IDENTYFIKATOR CVE: Identyfikator typowych luk w zabezpieczeniach i ekspozycji (CVE), gdy jest dostępny.
  • Klasyfikacja CWE: Powszechna Enumeracja Słabości (CWE) typ kategoryzujący lukę w zabezpieczeniach.
  • Link do biuletynu zabezpieczeń usługi GitHub: Link do pełnego poradnika z dodatkowymi szczegółami.

Aktualizacje zabezpieczeń dependabota

Aktualizacje bezpieczeństwa Dependabot automatycznie tworzą żądania ściągnięcia w celu zaktualizowania zależności podatnych na zagrożenia do bezpiecznych wersji. Gdy alerty Dependabot wykrywają luki w zabezpieczeniach z dostępnymi poprawkami, aktualizacje zabezpieczeń mogą automatycznie generować żądania ściągnięcia, które naprawiają luki w zabezpieczeniach.

Automatyczne tworzenie pull request:

  • Wywoływane przez luki w zabezpieczeniach: Aktualizacje zabezpieczeń tworzą wnioski o ściągnięcie tylko wtedy, gdy zostaną wykryte luki w zabezpieczeniach, a nie dla każdej aktualizacji zależności.
  • Minimalne zwiększenia wersji: Pule próśb aktualizują zależności do minimalnej wersji, która usuwa lukę w zabezpieczeniach przy zachowaniu zgodności.
  • Wyniki zgodności: Usługa GitHub oblicza wyniki zgodności, przewidując, czy aktualizacje spowodują przerwanie istniejących funkcji.
  • Informacje o wydaniu: Pull requesty obejmują informacje o wersji i dziennikach zmian ze zaktualizowanych zależności.

Funkcje pull requestu:

  • Testowanie automatyczne: Żądania pull wyzwalają istniejące potoki CI/CD, aby sprawdzać, czy aktualizacje nie przerywają funkcjonalności.
  • Rozwiązanie luk w zabezpieczeniach: Opisy żądań ściągnięcia wyjaśniają, które luki w zabezpieczeniach są rozwiązywane przez aktualizację.
  • Aktualizuj polecenia: Komentarze specjalne umożliwiają osobom utrzymującym kontrolowanie chronometrażu scalania, ponownego tworzenia bazy żądań ściągnięcia lub ignorowanie określonych aktualizacji.
  • Pogrupowane aktualizacje: W razie potrzeby można zaktualizować wiele zależności podatnych na zagrożenia w jednym żądaniu ściągnięcia.

Aktualizacje wersji programu Dependabot

Aktualizacje wersji dependabot aktualizują zależności nawet wtedy, gdy nie ma żadnych luk w zabezpieczeniach. W przeciwieństwie do aktualizacji zabezpieczeń, które aktualizują tylko zależności podatne na zagrożenia, aktualizacje wersji aktywnie aktualizują zależności do najnowszych wersji na podstawie skonfigurowanych harmonogramów.

Zaplanowane aktualizacje:

  • Częstotliwość konfigurowania: Aktualizacje mogą być zaplanowane codziennie, co tydzień lub co miesiąc.
  • Strategie aktualizacji: Określ, czy mają być aktualizowane wszystkie zależności, tylko bezpośrednie zależności, czy określone grupy zależności.
  • Ograniczenia wersji: Przestrzegaj ograniczeń przechowywania wersji semantycznych zdefiniowanych w plikach manifestu.
  • Limity pull requestów: Zarządzaj liczbą otwartych pull requestów tworzonych przez Dependabot, aby nie przytłaczać zespołu utrzymującego.

Włączanie alertów Dependabot

Alerty dependabot są domyślnie włączone dla repozytoriów publicznych, ale muszą być ręcznie włączone dla repozytoriów prywatnych.

Włączanie alertów dla repozytorium

Nawigacja:

  1. Przejdź do repozytorium w witrynie GitHub.
  2. Kliknij pozycję Ustawienia w menu repozytorium.
  3. Kliknij pozycję Zabezpieczenia i analiza na lewym pasku bocznym.
  4. Znajdź sekcję Alerty Dependabot.
  5. Kliknij przycisk Włącz , aby aktywować alerty Dependabot.

Wymaganie grafu zależności: Alerty dependabot wymagają włączenia grafu zależności. Wykres zależności jest automatycznie włączony dla repozytoriów publicznych, ale może wymagać ręcznej aktywacji dla repozytoriów prywatnych.

Włącz graf zależności:

  1. W obszarze Ustawienia → Zabezpieczenia i analiza znajdź graf zależności.
  2. Kliknij przycisk Włącz , jeśli wykres zależności nie jest jeszcze aktywny.
  3. Usługa GitHub rozpocznie analizowanie zależności repozytorium w celu utworzenia grafu zależności.

Włączanie całej organizacji

Administratorzy organizacji mogą włączyć alerty Dependabot we wszystkich repozytoriach:

Ustawienia organizacji:

  1. Przejdź do ustawień organizacji.
  2. Kliknij pozycję Zabezpieczenia i analiza na lewym pasku bocznym.
  3. Kliknij Włącz wszystko obok pozycji Alerty Dependabot, aby włączyć alerty dla wszystkich bieżących i przyszłych repozytoriów.
  4. Opcjonalnie wybierz pozycję Automatycznie włącz dla nowych repozytoriów , aby włączyć alerty dla nowo utworzonych repozytoriów.

Obsługiwane ekosystemy pakietów

Alerty Dependabot obsługują wiele ekosystemów pakietów, w tym:

Obsługiwane ekosystemy:

  • JavaScript: npm (package.json, package-lock.json), Yarn (yarn.lock).
  • Python: (requirements.txt, Pipfile, Pipfile.lock), Poetry (poetry.lock).
  • Ruby: Bundler (Gemfile, Gemfile.lock).
  • Java: Maven (pom.xml), Gradle (build.gradle, build.gradle.kts).
  • .NET: NuGet (*.csproj, packages.config, paket.dependencies).
  • Go: Go modules (go.mod, go.sum).
  • PHP: Composer (composer.json, composer.lock).
  • Rust: Cargo (Cargo.toml, Cargo.lock).
  • Eliksir: Mix (mix.exs, mix.lock).
  • Dart/Flutter: pub (pubspec.yaml, pubspec.lock).
  • Doker: Dockerfiles (odwołania do obrazu podstawowego).
  • GitHub Actions: Pliki przepływu pracy (wersje akcji).
  • Terraform: Konfiguracja narzędzia Terraform (wersje modułów).

Konfigurowanie aktualizacji zabezpieczeń dependabot

Aktualizacje zabezpieczeń Dependabot wymagają jawnego włączenia, nawet jeśli alerty są aktywne.

Włączanie aktualizacji zabezpieczeń

Konfiguracja repozytorium:

  1. Przejdź do pozycji Ustawienia → Zabezpieczenia i analiza.
  2. Znajdź aktualizacje zabezpieczeń Dependabot.
  3. Kliknij przycisk Włącz , aby aktywować automatyczne żądania ściągnięcia aktualizacji zabezpieczeń.
  4. Dependabot rozpocznie monitorowanie zależności podatnych na zagrożenia i tworzy żądania ściągnięcia, gdy są dostępne poprawki.

Konfiguracja dla całej organizacji:

  1. Przejdź do obszaru Ustawienia organizacji → Zabezpieczenia i analiza.
  2. Kliknij Włącz wszystko obok Aktualizacji zabezpieczeń Dependabot.
  3. Wybierz pozycję Automatycznie włącz dla nowych repozytoriów , aby umożliwić korzystanie z przyszłych repozytoriów.

Zachowanie aktualizacji zabezpieczeń

Automatyczne tworzenie pull request:

  • Wykrywanie luk w zabezpieczeniach: Gdy alerty Dependabot wykrywają zależność podatną na zagrożenia z dostępną poprawką, aktualizacje zabezpieczeń tworzą żądanie ściągnięcia.
  • Minimalne aktualizacje: Żądania ściągnięcia aktualizują tylko do minimalnej wersji, która rozwiązuje tę lukę w zabezpieczeniach.
  • Semantyczne przechowywanie wersji: Aktualizacje przestrzegają semantycznego przechowywania wersji, preferując aktualizacje poprawek w przypadku aktualizacji pomocniczych lub głównych, jeśli jest to możliwe.
  • Testowanie integracji: Żądania zmian inicjują istniejące procesy CI/CD, które weryfikują aktualizacje.

Wyniki zgodności: Usługa GitHub oblicza wyniki zgodności wskazujące prawdopodobieństwo przerwania istniejących funkcji przez aktualizacje:

  • Wysoka zgodność: Aktualizacja jest prawdopodobnie bezpieczna na podstawie analizy podobnych repozytoriów.
  • Średnia zgodność: Aktualizacja może wprowadzić zmiany łamiące zgodność, które wymagają przeglądu.
  • Niska zgodność: Aktualizacja prawdopodobnie obejmuje zmiany wprowadzające niezgodności w kodzie wymagające modyfikacji.
  • Nieznana zgodność: Niewystarczająca ilość danych do oceny zgodności.

Zarządzanie żądaniami pull request:

  • Automatyczne ponowne łączenie: Dependabot automatycznie ponownie scala pull requests po zmianie gałęzi bazowej.
  • Rozwiązywanie konfliktów: Żądania ściągnięcia są zamykane, jeśli konflikty uniemożliwiają automatyczne ponowne bazowanie.
  • Zastępowanie aktualizacji: Nowe żądania pull request zastępują starsze żądania pull request, gdy wydawane są nowsze wersje.
  • Zaplanowane aktualizacje: Pull requests są tworzone zgodnie ze skonfigurowanymi harmonogramami, aby uniknąć przytłoczenia utrzymujących.

Konfigurowanie aktualizacji wersji programu Dependabot

Aktualizacje wersji wymagają pliku konfiguracji definiującego harmonogramy i zachowanie aktualizacji.

Tworzenie konfiguracji dependabot.yml

Aktualizacje wersji są konfigurowane przy użyciu .github/dependabot.yml pliku w repozytorium:

Podstawowa konfiguracja:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10

Opcje konfiguracji:

  • Wersja: Wersja schematu pliku konfiguracji (zawsze 2).
  • Aktualizacje: Tablica konfiguracji aktualizacji dla różnych ekosystemów pakietów.
  • ekosystem pakietów: Menedżer pakietów służący do monitorowania (npm, pip, bundler, maven, nuget itp.).
  • katalog: Lokalizacja plików manifestu pakietu (/ dla ścieżki katalogu głównego lub podkatalogu).
  • schedule.interval: Częstotliwość aktualizacji (codziennie, co tydzień, co miesiąc).
  • open-pull-requests-limit: Maksymalna liczba otwartych żądań ściągnięcia tworzonych przez Dependabot (wartość domyślna: 5).

Przykład konfiguracji zaawansowanej:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
      time: "08:00"
      timezone: "America/New_York"
    open-pull-requests-limit: 10
    reviewers:
      - "team/frontend-developers"
    assignees:
      - "dependency-manager"
    labels:
      - "dependencies"
      - "npm"
    commit-message:
      prefix: "npm"
      include: "scope"
    ignore:
      - dependency-name: "lodash"
        versions: ["4.x"]
    allow:
      - dependency-type: "production"

Opcje zaawansowane:

  • schedule.day: Dzień tygodnia dla tygodniowych aktualizacji (od poniedziałku do niedzieli).
  • schedule.time: Godzina dnia aktualizacji (format 24-godzinny).
  • schedule.timezone: Strefa czasowa dla harmonogramu (identyfikator strefy czasowej IANA).
  • Wszyscy oceniający: Użytkownicy lub zespoły usługi GitHub automatycznie żądają przeglądów żądań ściągnięcia.
  • Osoby przypisane: Użytkownicy usługi GitHub automatycznie przypisani do żądań zmiany.
  • Etykiety: Etykiety automatycznie stosowane do próśb o ściągnięcie.
  • commit-message.prefix: Prefiks komunikatów zatwierdzeń (pomocny w przypadku konwencjonalnych zatwierdzeń).
  • ignorowane: Zależności do pominięcia, z opcjonalnym określeniem zakresów wersji.
  • pozwól: Zaktualizować typy zależności (produkcyjne, rozwojowe, wszystkie).

Wiele ekosystemów pakietów

Repozytoria korzystające z wielu ekosystemów językowych wymagają oddzielnych konfiguracji aktualizacji:

Konfiguracja wielu ekosystemów:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/frontend"
    schedule:
      interval: "weekly"

  - package-ecosystem: "pip"
    directory: "/backend"
    schedule:
      interval: "weekly"

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "monthly"

Ta konfiguracja monitoruje zależności npm w /frontend, zależności języka Python w /backend, obrazy podstawowe Docker w całym repozytorium oraz wersje GitHub Actions w przepływach pracy.

Zarządzanie wnioskami pull Dependabot

Żądania ściągnięcia Dependabot obsługują specjalne polecenia do zarządzania aktualizacjami.

Polecenia żądania ściągnięcia

Polecenia komentarza:

  • @dependabot rebase: Zrebazuj zgłoszenie pull request względem bieżącej gałęzi podstawowej.
  • @dependabot recreate: Utwórz ponownie pull request, zastępując wszelkie ręczne zmiany.
  • @dependabot merge: Scal pull request, gdy zakończą się testy CI.
  • @dependabot squash and merge: Zesquashuj zatwierdzenia i scalaj po zakończeniu sprawdzania.
  • @dependabot cancel merge: Anuluj wcześniej żądane scalanie.
  • @dependabot reopen: Otwórz ponownie zamknięty pull request.
  • @dependabot close: Zamknij pull request i zapobiec ponownemu utworzeniu go przez Dependabota.
  • @dependabot ignore this major version: Zamknij pull request i zignoruj przyszłe aktualizacje tej wersji głównej.
  • @dependabot ignore this minor version: Zamknij żądanie ściągnięcia i zignoruj przyszłe aktualizacje tej wersji pomniejszej.
  • @dependabot ignore this dependency: Zamknij pull request i zignoruj wszystkie przyszłe aktualizacje tej zależności.

Przeglądanie i scalanie aktualizacji

Proces przeglądu:

  1. Sprawdź opis żądania ściągnięcia: Dowiedz się, która luka w zabezpieczeniach została usunięta lub która wersja jest aktualizowana.
  2. Przejrzyj ocenę zgodności: Oszacuj prawdopodobieństwo wystąpienia zmian przełamujących kompatybilność.
  3. Sprawdź wyniki CI/CD: Zweryfikuj, czy testy automatyczne zakończyły się pomyślnie.
  4. Przejrzyj informacje o wersji: Omówienie zmian uwzględnionych w aktualizacji zależności.
  5. W razie potrzeby przetestuj lokalnie: W przypadku głównych aktualizacji, testuj funkcjonalność lokalnie przed scaleniem.
  6. Połącz żądanie zmiany: Zatwierdź i połącz żądanie zmiany, aby zaktualizować zależność.

Automatyczne scalanie: W przypadku aktualizacji o niskim ryzyku i wysokiej zgodności, które przechodzą testy, warto rozważyć konfigurację automatycznego scalania:

Automatyczne scalanie funkcji GitHub Actions:

name: Auto-merge Dependabot PRs
on: pull_request

jobs:
  auto-merge:
    runs-on: ubuntu-latest
    if: github.actor == 'dependabot[bot]'
    steps:
      - name: Enable auto-merge
        run: gh pr merge --auto --squash "$PR_URL"
        env:
          PR_URL: ${{ github.event.pull_request.html_url }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Ten workflow automatycznie włącza automatyczne scalanie dla pull requestów Dependabot, które przechodzą wszystkie wymagane sprawdzenia.

Alerty i powiadomienia Dependabot

Funkcja Dependabot udostępnia wiele mechanizmów powiadomień dla alertów dotyczących luk w zabezpieczeniach.

Kanały powiadomień

Powiadomienia internetowe:

  • Powiadomienia usługi GitHub: Alerty są wyświetlane w skrzynce odbiorczej powiadomień usługi GitHub.
  • Karta zabezpieczeń: Alerty są widoczne na karcie zabezpieczeń repository w obszarze alertów Dependabot.
  • Szczegółowe informacje o repozytorium: Wykres zależności na karcie Szczegółowe informacje zawiera zależności podatne na zagrożenia.

Powiadomienia e-mail:

  • Podsumowanie wiadomości e-mail: Cotygodniowe wiadomości e-mail z listą nowych alertów.
  • Wiadomości e-mail w czasie rzeczywistym: Natychmiastowe wiadomości e-mail dotyczące krytycznych luk w zabezpieczeniach.
  • Powiadomienia organizacji: Administratorzy organizacji otrzymują powiadomienia dotyczące wszystkich repozytoriów.

Powiadomienia niestandardowe:

  • Elementy webhook: Skonfiguruj elementy webhook w celu odbierania powiadomień o alertach w systemach zewnętrznych.
  • Interfejs API GitHub: Wykonaj zapytanie do interfejsu API alertów Dependabot, aby programowo pobrać informacje o alertach.
  • Integracje zabezpieczeń: Platformy zabezpieczeń innych firm mogą integrować się z alertami Dependabot za pośrednictwem interfejsu API.

Konfigurowanie preferencji powiadomień

Ustawienia powiadomień użytkownika:

  1. Przejdź do pozycji Ustawienia usługi GitHub → Powiadomienia.
  2. Znajdź sekcję Alerty zabezpieczeń .
  3. Konfigurowanie preferencji powiadomień:
    • Uczestnictwo: Otrzymywanie powiadomień o repozytoriach, które obserwujesz lub w których uczestniczysz.
    • Oglądanie: Otrzymuj powiadomienia dla wszystkich obserwowanych repozytoriów.
    • E-mail: Włącz powiadomienia e-mail dotyczące alertów zabezpieczeń.
    • Sieć: Włącz powiadomienia internetowe w interfejsie użytkownika usługi GitHub.

Ustawienia powiadomień organizacji:

  1. Przejdź do obszaru Ustawienia organizacji → Zabezpieczenia i analiza.
  2. Skonfiguruj, kto odbiera powiadomienia o alertach zabezpieczeń:
    • Właściciele organizacji: Automatycznie odbieraj wszystkie alerty zabezpieczeń.
    • Menedżerowie zabezpieczeń: Wyznaczony zespół ds. zabezpieczeń otrzymuje alerty.
    • Administratorzy repozytorium: Każdy administrator repozytorium otrzymuje alerty dotyczące swoich repozytoriów.

Przeglądanie alertów Dependabot

Karta Zabezpieczenia zapewnia kompleksowe zarządzanie alertami.

Szczegóły alertu

Przejdź do alertów:

  1. Otwórz repozytorium w witrynie GitHub.
  2. Kliknij kartę Zabezpieczenia.
  3. Kliknij opcję Alerty Dependabot na lewym pasku bocznym.
  4. Przejrzyj listę aktywnych alertów.

Informacje o alercie:

  • Dotkliwość: Klasyfikacja krytycznej, wysokiej, umiarkowanej lub niskiej ważności.
  • Pakiet: Nazwa i wersja zależności, których dotyczy problem.
  • Luka w zabezpieczeniach: Identyfikator i opis CVE.
  • Wersje poprawkowe: Wersje, które usuwają lukę w zabezpieczeniach.
  • Ścieżki kodu podatnego na zagrożenia: Czy kod podatny na zagrożenia jest rzeczywiście używany (jeśli jest dostępna analiza dostępności).
  • Dostępna jest automatyczna poprawka: Czy Dependabot może automatycznie utworzyć pull request w celu naprawienia luki w zabezpieczeniach.

Zarządzanie alertami

Akcje alertu:

  • Sprawdź prośbę o połączenie: Jeśli istnieje automatyczna aktualizacja zabezpieczeń, sprawdź i scal prośbę o połączenie.
  • Odrzuć alert: Odrzucanie wyników fałszywie dodatnich lub akceptowanie ryzyka z przyczyną odrzucenia.
  • Snooze alert: Tymczasowo odrzucaj alerty, których nie można natychmiast rozwiązać.
  • Alert ponownego otwarcia: Otwórz ponownie wcześniej odrzucone alerty, jeśli okoliczności się zmienią.

Przyczyny odrzucenia:

  • Rozpoczęto poprawkę: Zespół aktywnie pracuje nad korygowaniem.
  • Brak przepustowości: Problem jest potwierdzony, ale nie można go obecnie rozwiązać.
  • Ryzyko tolerowane: Luka w zabezpieczeniach nie stanowi znaczącego ryzyka w tym kontekście.
  • Niepoprawne: Alert jest fałszywie dodatni.

Integracja z zabezpieczeniami zaawansowanymi w usłudze GitHub

GitHub Dependabot to podstawowy składnik usługi GitHub Advanced Security, kompleksowej platformy zabezpieczeń usługi GitHub, która zapewnia funkcje zabezpieczeń klasy korporacyjnej na potrzeby ochrony łańcucha dostaw oprogramowania.

Funkcje zabezpieczeń zaawansowanych

Zintegrowane możliwości zabezpieczeń:

  • Skanowanie zależności: Funkcja Dependabot automatycznie skanuje zależności pod kątem znanych luk w zabezpieczeniach przy użyciu bazy danych doradczych usługi GitHub i baz danych luk w zabezpieczeniach branżowych.
  • Skanowanie sekretów: Wykrywa przypadkowo zatwierdzone sekrety, tokeny i poświadczenia w kodzie i historii repozytorium.
  • Skanowanie kodu: Używa języka CodeQL i innych aparatów analizy do znajdowania luk w zabezpieczeniach i błędów kodowania w kodzie źródłowym.
  • Omówienie zabezpieczeń: Zapewnia wgląd w alerty zabezpieczeń, luki w zabezpieczeniach i stan korygowania w całej organizacji.
  • Bezpieczeństwo łańcucha dostaw: Wykres zależności, przegląd zależności i generowanie SBOM w celu uzyskania kompleksowej widoczności łańcucha dostaw.

Licencjonowanie i dostępność

Dostęp do zabezpieczeń zaawansowanych:

  • Repozytoria publiczne: Wszystkie funkcje usługi GitHub Advanced Security są dostępne bezpłatnie w repozytoriach publicznych.
  • Repozytoria prywatne: Wymaga licencji usługi GitHub Advanced Security (dołączonej do usług GitHub Enterprise Cloud i GitHub Enterprise Server).
  • GitHub Free/Team: Dostępne są alerty Dependabot i aktualizacje zabezpieczeń, ale skanowanie kodu i skanowanie wpisów tajnych wymaga licencji na Advanced Security.

Pulpit przeglądu zabezpieczeń

Omówienie zabezpieczeń zapewnia widoczność na poziomie organizacji:

Metryki zabezpieczeń organizacji:

  • Trendy alertów bezpieczeństwa: Wyświetl trendy alertów bezpieczeństwa we wszystkich repozytoriach w miarę upływu czasu.
  • Ocena ryzyka: Zidentyfikuj repozytoria o najwyższym ryzyku bezpieczeństwa na podstawie alertów krytycznych i o wysokiej ważności.
  • Pokrycie zespołu: Monitoruj, które zespoły mają włączone funkcje zabezpieczeń i śledzą postęp korygowania.
  • Raportowanie zgodności: Generowanie raportów dotyczących zgodności zabezpieczeń i wymagań dotyczących inspekcji.

Omówienie zabezpieczeń dostępu:

  1. Przejdź do swojej organizacji w witrynie GitHub.
  2. Kliknij kartę Zabezpieczenia.
  3. Przejrzyj metryki zabezpieczeń całej organizacji, liczby alertów i trendy.
  4. Wejdź w szczegóły związane z określonymi repozytoriami lub typami alertów, aby je dogłębnie zbadać.

Włączanie zabezpieczeń zaawansowanych

Dla właścicieli organizacji:

  1. Przejdź do ustawień organizacji.
  2. Kliknij pozycję Zabezpieczenia i analiza kodu.
  3. Włącz usługę GitHub Advanced Security dla repozytoriów prywatnych.
  4. Skonfiguruj ustawienia domyślne dla:
    • Graf zależności (automatycznie włączony).
    • Alerty Dependabot.
    • Aktualizacje zabezpieczeń dependabota.
    • Skanowanie tajnych danych.
    • Skanowanie kodu (wymaga konfiguracji przepływu pracy).

Włączanie na poziomie repozytorium:

Poszczególne repozytoria mogą włączać lub wyłączać funkcje zabezpieczeń zaawansowanych:

  1. Przejdź do Ustawienia repozytorium.
  2. Kliknij pozycję Zabezpieczenia i analiza kodu.
  3. Włącz żądane funkcje zabezpieczeń:
    • Wykres zależności: Wymagane dla funkcji Dependabot.
    • Alerty Dependabot: Powiadomienia o lukach w zabezpieczeniach.
    • Aktualizacje zabezpieczeń Dependabot: Automatyczne pull requesty naprawiające luki w zabezpieczeniach.
    • Skanowanie tajnych informacji: Wykrywanie przecieków poświadczeń.
    • Skanowanie kodu: Statyczne testowanie zabezpieczeń aplikacji (SAST).

Integracja z przepływami pracy deweloperskimi

Usługa GitHub Advanced Security bezproblemowo integruje się z procesami programowania:

Integracja żądania ściągnięcia:

  • Przegląd zależności: Automatycznie przegląda zmiany zależności w żądaniach ściągnięcia, podkreślając nowe luki w zabezpieczeniach wprowadzone przez aktualizacje zależności.
  • Testy zabezpieczeń: Skanowanie kodu i skanowanie sekretów są uruchamiane automatycznie na żądaniach pull, blokując scalanie w przypadku znalezienia krytycznych problemów.
  • Wymagane przeglądy: Skonfiguruj reguły ochrony gałęzi, aby wymagać zatwierdzenia przez zespół zabezpieczeń dla żądań ściągnięcia z alertami zabezpieczeń.

Zasady zabezpieczeń:

  • SECURITY.md: Zdefiniuj zasady ujawniania luk w zabezpieczeniach i informacje kontaktowe dotyczące zabezpieczeń.
  • Właściciele kodu: Przypisz członków zespołu ds. zabezpieczeń jako właścicieli kodu dla plików zależności (package.json, requirements.txt, pom.xml).
  • Ochrona gałęzi: Wymagaj sprawdzania stanu skanowania zabezpieczeń przed zezwoleniem na scalanie.

Inspekcja i zgodność:

  • Dziennik inspekcji: Śledzenie wszystkich akcji związanych z zabezpieczeniami, w tym odrzucania alertów, włączania funkcji i zmian dostępu.
  • Zasady zabezpieczeń: Wymuszanie standardów zabezpieczeń dla całej organizacji we wszystkich repozytoriach.
  • Integracja zgodności: Eksportuj dane zabezpieczeń dla SOC 2, ISO 27001 i innych struktur zgodności.

Usługa GitHub Advanced Security zapewnia ochronę klasy korporacyjnej dla łańcucha dostaw oprogramowania, a narzędzie Dependabot pełni rolę podstaw zarządzania zabezpieczeniami zależności. Zintegrowane podejście platformy zapewnia kompleksowe wykrywanie luk w zabezpieczeniach, automatyczne korygowanie i widoczność zabezpieczeń dla całej organizacji.

GitHub Dependabot zapewnia kompleksowe, zautomatyzowane zarządzanie zabezpieczeniami zależności zintegrowane bezpośrednio z przepływami pracy usługi GitHub. Włączając alerty, aktualizacje zabezpieczeń i aktualizacje wersji, zespoły programistyczne mogą aktywnie adresować luki w zabezpieczeniach i utrzymywać aktualne zależności przy minimalnym wysiłku ręcznym. W następnej jednostce omówiono, jak zintegrować kontrole analizy składu oprogramowania z potokami CI/CD wykraczając poza wbudowane możliwości GitHub.