0Pricing
Cyber Security Academy · 강의

의존성 및 아티팩트 서명

SLSA와 Sigstore로 출처를 검증합니다.

의존성 및 아티팩트 서명은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

출처 정보가 중요한 이유

SBOM은 아티팩트 안에 무엇이 들어 있는지 알려 줍니다. 출처 정보는 아티팩트가 어디에서 왔고 어떻게 빌드되었는지 알려 줍니다. 서명은 아티팩트를 검증 가능한 출처에 연결하므로, 사용자는 신뢰하는 파이프라인에서 생성되지 않은 아티팩트를 거부할 수 있습니다.

출처 정보가 없으면 공격자가 레지스트리의 tar 아카이브를 바꿔치기해도 정상 릴리스와 구별할 수 없습니다.

태그가 아닌 다이제스트

무결성의 기반은 콘텐츠 주소 지정입니다. 아티팩트의 암호학적 해시(다이제스트)는 해당 바이트열을 고유하게 식별합니다. latest와 같은 변경 가능한 태그는 가리키는 대상을 바꿀 수 있지만 다이제스트는 그렇지 않습니다.

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

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

디지털 서명 기초

디지털 서명은 개인 키로 아티팩트의 해시에 서명하며, 일치하는 공개 키를 가진 사람은 누구나 이를 검증할 수 있습니다. 이를 통해 두 가지를 보장합니다:

  • 무결성 — 서명 후 아티팩트가 수정되지 않았습니다
  • 진정성 — 개인 키 보유자가 서명했습니다

어려운 부분은 수학이 아니라 키 관리와 신뢰 배포입니다. 검증자는 어떤 공개 키를 신뢰해야 하는지 어떻게 알 수 있을까요?

Sigstore를 사용한 키 없는 서명

기존 서명 방식에서는 팀이 유출될 수 있는 장기간 유효한 개인 키를 보호해야 합니다. Sigstore는 키 없는 서명을 제공합니다. Sigstore는 OIDC ID(지속적 통합 작업이나 개발자 이메일 등)에 연결된 단기간 유효한 인증서를 발급하고, 서명한 뒤, 해당 이벤트를 Rekor라는 공개 투명성 로그에 기록합니다.

훔칠 수 있는 장기간 유효한 키가 없으며 모든 서명을 공개적으로 감사할 수 있습니다.

Cosign으로 서명하기

Cosign은 컨테이너 이미지와 기타 아티팩트에 서명하는 Sigstore 도구입니다. 키 없는 모드에서는 파이프라인의 OIDC 토큰을 사용하므로 디스크에 키 파일이 저장되지 않습니다.

# 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

투명성 로그

Sigstore는 각 서명 이벤트를 변조가 드러나고 추가만 가능한 공개 로그인 Rekor에 기록합니다. 이는 강력한 탐지 통제 수단입니다:

  • 무언가가 언제 서명되었는지 증명할 수 있습니다
  • ID를 훔친 공격자도 몰래 서명할 수 없습니다 — 이벤트가 공개적으로 기록됩니다
  • 비정상적인 서명(예상하지 못한 신원, 업무 시간 외)을 탐지할 수 있습니다

투명성 덕분에 조용한 침해가 관찰 가능한 증거로 바뀝니다.

SLSA: 빌드 무결성 수준

SLSA(소프트웨어 아티팩트를 위한 공급망 수준)는 빌드 프로세스가 얼마나 신뢰할 수 있는지 평가하는 프레임워크입니다. 수준이 높을수록 변조에 대한 더 강력한 보장을 요구합니다.

  • L1 — 출처 정보가 존재하며 문서화되어 있습니다
  • L2 — 호스팅된 빌드 서비스에서 서명된 출처 정보가 제공됩니다
  • L3 — 강화되고 격리된 빌드가 수행되며, 파이프라인 내부자라도 출처 정보를 위조할 수 없습니다

SLSA는 추진 경로입니다. 목표 수준을 정하고 부족한 부분을 해결하십시오.

빌드 출처 정보 증명

출처 정보 증명서는 아티팩트가 어떻게 빌드되었는지 설명하는 서명된 진술입니다. 여기에는 소스 커밋, 빌더의 신원, 빌드 매개변수 및 입력이 포함됩니다. in-toto 형식은 이를 표준화합니다.

# 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...

승인 단계에서 서명 강제

무언가가 서명되지 않은 아티팩트를 거부해야만 서명이 유용합니다. Kubernetes에서는 승인 컨트롤러가 신뢰하는 신원에서 발급된 유효한 서명과 출처 정보가 없는 이미지를 차단할 수 있습니다.

  • 정책 컨트롤러는 파드가 시작되기 전에 cosign 서명을 검증합니다
  • 예상하지 못한 신원이 서명한 이미지를 거부합니다
  • 승인된 소스 저장소를 가리키는 출처 정보를 요구합니다

이렇게 순환이 완성됩니다. 신뢰할 수 없는 아티팩트는 실행되지 않습니다.

상위 단계의 의존성에 서명하기

출처 정보는 배포하는 것뿐 아니라 사용하는 대상까지 확장될 때 가장 큰 가치를 발휘합니다. 생태계에서는 네이티브 서명과 출처 정보 지원을 추가하고 있습니다:

  • npm 출처 정보는 게시된 패키지를 소스 커밋 및 지속적 통합 실행에 연결합니다
  • 컨테이너 기본 이미지에도 점점 더 많이 cosign 서명이 포함되고 있습니다
  • 프로그래밍 언어 저장소에서는 Sigstore 기반 검증을 시범 운영하고 있습니다

검증 가능한 출처 정보를 게시하는 의존성을 우선 사용하고, 지원되는 경우 설치 중에 이를 검증하십시오.

검증을 우선하기

실용적인 서명 전략은 계층화되어 있으며 처음부터 끝까지 검증됩니다:

  • 입력을 다이제스트로 고정합니다
  • 아티팩트에 키 없이 서명하고 SBOM 및 출처 정보 증명서를 첨부합니다
  • 모든 것을 투명성 로그에 기록합니다
  • 승인 정책으로 배포 시 검증을 강제합니다

검증되지 않은 연결 고리 중 가장 약한 고리만큼만 전체 연결망이 강하므로, 사용하는 모든 지점에서 검증하십시오.

빠른 확인: 키 없는 서명

키 없는 서명이 소프트웨어 공급망 보안을 향상시키는 이유를 생각해 보십시오.

복습: 의존성과 아티팩트 서명

출처 정보를 입증하고 이를 강제하는 방법을 배웠습니다.

  • 변경 가능한 태그가 아닌 다이제스트로 고정합니다
  • 디지털 서명은 무결성과 진정성을 보장하며, 과제는 키 관리입니다
  • Sigstore + cosign은 공개 Rekor 투명성 로그와 함께 키 없는 서명을 가능하게 합니다
  • SLSA는 빌드 무결성을 평가하고, 출처 정보 증명서는 아티팩트가 어떻게 빌드되었는지 기록합니다
  • 승인 정책은 배포 시 서명되지 않았거나 신뢰할 수 없는 모든 것을 거부합니다

다음: 이러한 아티팩트를 생성하는 지속적 통합/지속적 배포 파이프라인 강화

자주 묻는 질문

“의존성 및 아티팩트 서명” 강의는 무료인가요?

네 — “의존성 및 아티팩트 서명” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“의존성 및 아티팩트 서명”에서 뭘 배우나요?

SLSA와 Sigstore로 출처를 검증합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“의존성 및 아티팩트 서명” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 공급망 위협
  2. 소프트웨어 구성 목록 (SBOM)
  3. 의존성 및 아티팩트 서명
  4. CI/CD 파이프라인 보호
← Cyber Security Academy(으)로 돌아가기