Podpisywanie zależności i artefaktów
Weryfikowanie pochodzenia za pomocą SLSA i Sigstore
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.gzPodstawy 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.comLog 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.
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
- Zagrożenia łańcucha dostaw
- Software Bill of Materials (SBOM)
- Podpisywanie zależności i artefaktów
- Zabezpieczanie potoków CI/CD