0Pricing
DevOps Bootcamp · Lekcja

Najlepsze praktyki bezpieczeństwa w CI/CD

Poznają Państwo typowe luki w zabezpieczeniach potoków oraz najlepsze praktyki ograniczania ryzyka w całym cyklu tworzenia oprogramowania.

Najlepsze praktyki bezpieczeństwa w CI/CD to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Dlaczego bezpieczeństwo CI/CD ma znaczenie

We współczesnym tworzeniu oprogramowania potoki CI/CD odgrywają kluczową rolę. Automatyzują kompilowanie, testowanie i wdrażanie kodu.

Jednak wielka moc wiąże się z wielką odpowiedzialnością! Zabezpieczenie tych potoków ma kluczowe znaczenie dla ochrony kodu, danych i infrastruktury przed złośliwymi atakami lub przypadkowo wprowadzonymi lukami w zabezpieczeniach.

Identyfikowanie podatności potoku CI/CD

Zanim zaczniemy zabezpieczać potok, musimy zrozumieć, przed czym go chronimy. Potoki CI/CD mogą być podatne na kilka rodzajów ataków:

  • Przejęte dane uwierzytelniające: Skradzione klucze API lub tokeny.
  • Złośliwe zależności: Korzystanie z bibliotek zawierających znane luki w zabezpieczeniach.
  • Niebezpieczne konfiguracje: Nieprawidłowo skonfigurowane mechanizmy kontroli dostępu lub kroki kompilacji.
  • Ataki na łańcuch dostaw: Manipulowanie samym procesem kompilacji.

Stosowanie zasady najmniejszych uprawnień

Zasada najmniejszych uprawnień (PoLP) oznacza przyznawanie użytkownikom i procesom automatycznym (takim jak zadania CI/CD) wyłącznie minimalnego zakresu uprawnień potrzebnego do wykonania danego zadania — i żadnych dodatkowych.

Ogranicza to potencjalne szkody w przypadku przejęcia danych uwierzytelniających lub zadania. W GitHub Actions należy zdefiniować konkretne uprawnienia dla każdego zadania.

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read # Only read access to repo code
      packages: write # Only write to package registry
      id-token: write # Needed for OIDC authentication
    steps:
      - uses: actions/checkout@v4
      - run: echo "Build logic here"

Zabezpieczanie kodu i zależności

Kod źródłowy stanowi serce aplikacji. Należy zadbać o jego bezpieczeństwo już od początku.

  • Przeglądy kodu: Wzajemne przeglądy pomagają wykrywać potencjalne luki w zabezpieczeniach.
  • Analiza statyczna: Należy używać narzędzi do skanowania kodu w poszukiwaniu podatności (choć dedykowane narzędzia SAST zostaną omówione w późniejszej lekcji).
  • Skanowanie zależności: Należy regularnie sprawdzać biblioteki innych firm pod kątem znanych podatności.

Zarządzanie zależnościami zewnętrznymi

Większość projektów korzysta z bibliotek open source. Choć są one bardzo przydatne, mogą wprowadzać podatności, jeśli nie są starannie zarządzane.

  • Używanie skanera zależności: Należy zintegrować narzędzia takie jak Dependabot, aby automatycznie sprawdzać znane podatności.
  • Przypinanie zależności: Należy określać dokładne wersje zależności, aby uniknąć nieoczekiwanych zmian.
  • Regularne aktualizacje: Należy aktualizować zależności, aby korzystać z poprawek bezpieczeństwa.

Utwardzanie środowiska kompilacji

Środowisko, w którym kod jest kompilowany i testowany, powinno być możliwie najlepiej zabezpieczone. Można traktować je jak czyste pomieszczenie dla oprogramowania.

  • Runnery efemeryczne: Należy używać świeżych, odizolowanych środowisk dla każdego zadania. Runnery hostowane przez GitHub są domyślnie efemeryczne.
  • Minimalny zestaw narzędzi: Należy instalować wyłącznie niezbędne narzędzia, aby ograniczyć powierzchnię ataku.
  • Bezpieczne obrazy bazowe: W przypadku używania kontenerów należy korzystać z zaufanych, utwardzonych obrazów bazowych.

Nigdy nie należy wpisywać sekretów na stałe

Dane poufne, takie jak klucze API, dane uwierzytelniające do baz danych czy prywatne tokeny, NIGDY nie powinny być wpisywane na stałe bezpośrednio do repozytorium ani plików przepływów pracy.

Zawsze należy korzystać z bezpiecznego systemu zarządzania sekretami. Dzięki temu poufne dane nie trafiają do systemu kontroli wersji i pozostają zaszyfrowane.

Weryfikowanie danych wejściowych przepływu pracy

Jeśli przepływ pracy przyjmuje dane wejściowe z zewnątrz (np. z ręcznego wyzwalacza lub komentarza do pull requesta), dane te muszą zostać zweryfikowane i oczyszczone.

Niezaufane dane wejściowe mogą być wektorem ataków typu injection, podobnie jak w przypadku weryfikowania danych wprowadzanych przez użytkownika przez aplikacje internetowe.

on:
  workflow_dispatch:
    inputs:
      deploy_env:
        description: 'Environment to deploy to (e.g., staging, production)'
        required: true
        type: choice
        options:
          - 'staging'
          - 'production'
      version_tag:
        description: 'Git tag for the release version'
        required: true
        type: string

Rejestrowanie i monitorowanie aktywności potoku

Widoczność aktywności potoku jest ważnym elementem kontroli bezpieczeństwa. Dobre rejestrowanie zdarzeń pomaga szybko wykrywać podejrzane zachowania i reagować na nie.

  • Kompleksowe rejestrowanie: Należy rejestrować wszystkie istotne zdarzenia i działania w ramach przepływów pracy.
  • Monitorowanie anomalii: Należy zwracać uwagę na nieudane kontrole bezpieczeństwa, próby nieautoryzowanego dostępu lub nietypowy czas kompilacji.
  • Alerty: Należy skonfigurować alerty dotyczące krytycznych zdarzeń związanych z bezpieczeństwem.

Sprawdzenie wiedzy

Sprawdźmy znajomość najlepszych praktyk dotyczących bezpieczeństwa CI/CD.

Podsumowanie lekcji i kolejne kroki

Gratulacje! Poznali Państwo najważniejsze praktyki bezpieczeństwa dotyczące potoków CI/CD.

  • Należy stosować zasadę najmniejszych uprawnień.
  • Należy zabezpieczać kod źródłowy i zarządzać zależnościami.
  • Należy utwardzać środowiska kompilacji.
  • Nigdy nie należy wpisywać sekretów na stałe.
  • Należy weryfikować wszystkie dane wejściowe przepływów pracy.
  • Należy wdrażać solidne rejestrowanie zdarzeń i monitorowanie.

Praktyki te stanowią solidną podstawę bezpiecznego cyklu życia DevOps. W nadchodzących lekcjach przyjrzymy się bliżej konkretnym narzędziom i technikom, takim jak GitHub Secrets i SAST.

Często zadawane pytania

Czy lekcja „Najlepsze praktyki bezpieczeństwa w CI/CD” jest bezpłatna?

Tak — pełny tekst „Najlepsze praktyki bezpieczeństwa w CI/CD” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Najlepsze praktyki bezpieczeństwa w CI/CD”?

Poznają Państwo typowe luki w zabezpieczeniach potoków oraz najlepsze praktyki ograniczania ryzyka w całym cyklu tworzenia oprogramowania. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Najlepsze praktyki bezpieczeństwa w CI/CD”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Najlepsze praktyki bezpieczeństwa w CI/CD
  2. Zarządzanie sekretami za pomocą GitHub
  3. Statyczne testowanie bezpieczeństwa aplikacji (SAST)
  4. Bezpieczeństwo zależności i łańcucha dostaw (SCA)
← Powrót do DevOps Bootcamp