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 CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CI/CD with GitHub Actions & DevOps Pipelines 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: stringRejestrowanie 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 CI/CD with GitHub Actions & DevOps Pipelines, przejdź na CoddyKit PRO. Kurs CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines 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ąć CI/CD with GitHub Actions & DevOps Pipelines?
Nie wymagamy żadnego doświadczenia. CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines?
Tak. Każda lekcja CI/CD with GitHub Actions & DevOps Pipelines 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
- Najlepsze praktyki bezpieczeństwa w CI/CD
- Zarządzanie sekretami za pomocą GitHub
- Statyczne testowanie bezpieczeństwa aplikacji (SAST)
- Bezpieczeństwo zależności i łańcucha dostaw (SCA)