Cyber Security Academy · Lekcja

Podpisywanie zależności i artefaktów

Weryfikowanie pochodzenia za pomocą SLSA i Sigstore

Lekcja 3 z 413 kroki

Podpisywanie zależności i artefaktów to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 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 Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Dlaczego proweniencja ma znaczenie

SBOM informuje co znajduje się w artefakcie. Proweniencja informuje skąd pochodzi i jak został zbudowany. Podpis wiąże artefakt z możliwym do zweryfikowania źródłem, dzięki czemu odbiorcy mogą odrzucić wszystko, co nie zostało wytworzone przez zaufany potok.

Bez proweniencji atakujący, który podmieni archiwum tar w rejestrze, jest nie do odróżnienia od autora legalnego wydania.

Digesty zamiast tagów

Podstawą integralności jest adresowanie treścią. Skrót kryptograficzny (digest) artefaktu jednoznacznie identyfikuje dokładny zestaw bajtów. Mutowalne tagi, takie jak latest, można przekierować; digestu nie można.

# pull by immutable digest, not a tag
docker pull my-app@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

# compute a file digest
sha256sum release-1.4.0.tar.gz

Podstawy podpisów cyfrowych

Podpis cyfrowy używa klucza prywatnego do podpisania skrótu artefaktu; każdy, kto ma odpowiadający mu klucz publiczny, może go zweryfikować. Zapewnia to dwie gwarancje:

  • Integralność — artefakt nie został zmodyfikowany po podpisaniu
  • Autentyczność — został podpisany przez posiadacza klucza prywatnego

Trudność nie leży w matematyce, lecz w zarządzaniu kluczami i dystrybucji zaufania: skąd weryfikator wie, któremu kluczowi publicznemu zaufać?

Podpisywanie bez klucza za pomocą Sigstore

Tradycyjne podpisywanie zmusza zespoły do ochrony długoterminowych kluczy prywatnych, które mogą wyciec. Sigstore oferuje podpisywanie bez klucza: wydaje krótkotrwały certyfikat powiązany z tożsamością OIDC, na przykład obciążeniem CI lub adresem e-mail dewelopera, podpisuje artefakt i rejestruje zdarzenie w publicznym logu transparentności o nazwie Rekor.

Nie ma długoterminowego klucza do kradzieży, a każdy podpis podlega publicznemu audytowi.

Podpisywanie za pomocą Cosign

Cosign to narzędzie Sigstore służące do podpisywania obrazów kontenerów i innych artefaktów. W trybie bez klucza korzysta z tokenu OIDC potoku, więc żaden plik klucza nie jest przechowywany na dysku.

# keyless sign in CI (uses ambient OIDC identity)
COSIGN_EXPERIMENTAL=1 cosign sign my-registry/my-app@sha256:1d5283...

# verify, asserting the expected signer identity
cosign verify my-registry/my-app@sha256:1d5283... \
  --certificate-identity-regexp '.*@my-org\.com' \
  --certificate-oidc-issuer https://accounts.google.com

Log transparentności

Sigstore rejestruje każde zdarzenie podpisania w Rekor, odpornym na manipulacje, publicznym logu, do którego można wyłącznie dopisywać wpisy. To skuteczny mechanizm detekcyjny:

  • Można udowodnić, kiedy coś zostało podpisane
  • Atakujący, który ukradnie tożsamość, nie może podpisywać potajemnie — zdarzenie jest publicznie rejestrowane
  • Anomalie w podpisach, takie jak nieoczekiwana tożsamość lub nietypowe godziny, stają się wykrywalne

Przejrzystość zamienia ciche przejęcie w możliwe do zaobserwowania dowody.

SLSA: poziomy integralności procesu budowania

SLSA (Supply-chain Levels for Software Artifacts) to framework oceniający wiarygodność procesu budowania. Wyższe poziomy wymagają silniejszych gwarancji ochrony przed manipulacją.

  • L1 — proweniencja istnieje i jest udokumentowana
  • L2 — podpisana proweniencja z hostowanej usługi budowania
  • L3 — wzmocnione, izolowane kompilacje; proweniencji nie można sfałszować nawet przez osobę mającą uprzywilejowany dostęp do potoku

SLSA to plan działania: należy wybrać docelowy poziom i uzupełnić braki.

Atestacje proweniencji procesu budowania

Atestacja proweniencji to podpisane oświadczenie opisujące, jak zbudowano artefakt: commit źródłowy, tożsamość narzędzia budującego, parametry budowania i dane wejściowe. Format in-toto standaryzuje takie oświadczenia.

# generate and attach SLSA provenance for an image
cosign attest --type slsaprovenance \
  --predicate provenance.json \
  my-registry/my-app@sha256:1d5283...

# verify provenance matches expected source repo
cosign verify-attestation --type slsaprovenance my-registry/my-app@sha256:1d5283...

Wymuszanie podpisów podczas admission

Podpisywanie jest użyteczne tylko wtedy, gdy coś odrzuca artefakty bez podpisu. W Kubernetes kontroler admission może zablokować każdy obraz, któremu brakuje prawidłowego podpisu i proweniencji powiązanej z zaufaną tożsamością.

  • Kontrolery polityk weryfikują podpisy cosign przed uruchomieniem poda
  • Odrzucają obrazy podpisane przez nieoczekiwane tożsamości
  • Wymagają proweniencji wskazującej zatwierdzone repozytorium źródłowe

To domyka cykl: niezaufane artefakty nigdy nie zostają uruchomione.

Podpisywanie zależności po stronie dostawców

Proweniencja jest najcenniejsza, gdy obejmuje również to, co jest używane, a nie tylko to, co jest dostarczane. Ekosystemy dodają natywne mechanizmy podpisywania i proweniencji:

  • npm provenance łączy opublikowany pakiet z jego commitem źródłowym i uruchomieniem CI
  • Bazowe obrazy kontenerów coraz częściej są dostarczane z podpisami cosign
  • Rejestry pakietów poszczególnych języków testują weryfikację opartą na Sigstore

Należy preferować zależności publikujące możliwą do zweryfikowania proweniencję oraz weryfikować ją podczas instalacji, jeśli jest to obsługiwane.

Priorytet dla weryfikacji

Praktyczna strategia podpisywania jest warstwowa i podlega weryfikacji od początku do końca:

  • Przypinanie danych wejściowych za pomocą digestów
  • Podpisywanie artefaktów bez użycia klucza oraz dołączanie SBOM i atestacji proweniencji
  • Rejestrowanie wszystkiego w logu transparentności
  • Wymuszanie weryfikacji podczas wdrażania za pomocą polityki admission

Łańcuch jest tak bezpieczny, jak jego najsłabsze, niezweryfikowane ogniwo, dlatego należy weryfikować go w każdym miejscu użycia.

Szybki test: podpisywanie bez klucza

Proszę przeanalizować, dlaczego podpisywanie bez klucza zwiększa bezpieczeństwo łańcucha dostaw oprogramowania.

Podsumowanie: podpisywanie zależności i artefaktów

Poznali Państwo sposoby potwierdzania proweniencji i jej wymuszania.

  • Przypinanie za pomocą digestu, a nie mutowalnych tagów
  • Podpisy cyfrowe zapewniają integralność i autentyczność; wyzwaniem jest zarządzanie kluczami
  • Sigstore + cosign umożliwiają podpisywanie bez klucza za pomocą publicznego logu transparentności Rekor
  • SLSA ocenia integralność procesu budowania; atestate proweniencji rejestrują sposób budowania artefaktów
  • Polityki admission odrzucają podczas wdrażania wszystko, co jest niepodpisane lub niezaufane

Następnie: wzmacnianie potoku CI/CD tworzącego te artefakty.

Bezpłatny start

Ucz się Cyber Security Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Podpisywanie zależności i artefaktów” jest bezpłatna?

Tak — pełny tekst „Podpisywanie zależności i artefaktów” 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 Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podpisywanie zależności i artefaktów”?

Weryfikowanie pochodzenia za pomocą SLSA i Sigstore Ćwiczysz Cyber Security Academy 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ąć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy 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 3 z 4.

Ile czasu zajmuje lekcja „Podpisywanie zależności i artefaktów”?

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 Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy 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. Zagrożenia łańcucha dostaw
  2. Software Bill of Materials (SBOM)
  3. Podpisywanie zależności i artefaktów
  4. Zabezpieczanie potoków CI/CD
← Powrót do Cyber Security Academy