123 lines
11 KiB
Markdown
123 lines
11 KiB
Markdown
---
|
|
title: Cosign keyless signing — Sigstore Fulcio / Rekor
|
|
source_type: official-doc
|
|
url: https://docs.sigstore.dev/cosign/signing/overview/
|
|
archive_url:
|
|
status: raw
|
|
confidence: high
|
|
tags: [supply-chain, cosign, sigstore, signing, ca-skeleton, official-doc, branch:feature-build-release-supply-chain-contract]
|
|
related_projects: [ca-skeleton-operational-contract]
|
|
related_branches: [feature-build-release-supply-chain-contract, feature-ci-quality-gates-contract, feature-container-runtime-contract]
|
|
created: 2026-05-22
|
|
last_reviewed: 2026-05-27
|
|
---
|
|
|
|
# Cosign keyless signing — Sigstore Fulcio / Rekor
|
|
|
|
> Layer: `raw/official-docs/` — Sigstore 공식 문서 (Cosign + Fulcio + Rekor) 발췌. ca-tmpl 의 "Cosign keyless 의무 + Rekor 검증" 결정의 1차 근거.
|
|
|
|
## Parent / 활용 branch (필수)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-build-release-supply-chain-contract]] | "Cosign keyless signing (sigstore Fulcio) 의무화. release artifact 에 signature 누락 시 deploy block" 결정의 1차 근거. GPG 의 long-lived key 부담 회피 + Rekor transparency log 의 검증 가능성 |
|
|
| [[raw/branch-notes/feature-ci-quality-gates-contract]] | signed artifact (Cosign) verification 을 CI quality gate 로 포함 — Fulcio cert + Rekor log entry 가 검증 측에서 확인 가능한 공식 메커니즘 |
|
|
| [[raw/branch-notes/feature-container-runtime-contract]] | container image digest 식별 + `cosign verify` 가 같은 image identity (digest) 를 공유 — runtime 에서 검증된 image 만 실행하는 결정의 근거 |
|
|
|
|
또한 다음 project hub 에서도 인용:
|
|
|
|
- [[raw/project-notes/ca-skeleton-operational-contract]] — supply chain canonical section
|
|
|
|
## 컨텍스트 / 왜 저장했는지
|
|
|
|
`feature-build-release-supply-chain-contract` 결정 "Cosign keyless signing (sigstore Fulcio) 의무화. release artifact에 signature 누락 시 deploy block." 의 근거. 왜 GPG signing 대신 keyless인지, transparency log가 검증 측에서 무엇을 보장하는지 raw로 확보.
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL:
|
|
- Sigstore Cosign 문서 — https://docs.sigstore.dev/cosign/signing/overview/
|
|
- Sigstore Fulcio — https://docs.sigstore.dev/certificate_authority/overview/
|
|
- Sigstore Rekor (transparency log) — https://docs.sigstore.dev/logging/overview/
|
|
- GitHub: sigstore/cosign — https://github.com/sigstore/cosign
|
|
- 아카이브 URL: (미수집)
|
|
- 저자/조직: Sigstore project (OpenSSF, CNCF graduated)
|
|
- 발행일: 공식 문서 (지속 갱신)
|
|
- 마지막 확인일: 2026-05-27
|
|
|
|
## 핵심 인용 / Key quotes (verbatim)
|
|
|
|
### A. Cosign keyless signing (docs.sigstore.dev/cosign/signing/overview/)
|
|
|
|
> [§Overview] "Keyless signing associates identities, rather than keys, with an artifact signature."
|
|
|
|
> [§Verifying identity and signing the artifact] "Sigstore's certificate authority verifies the identity token of the user signing the artifact and issues a certificate attesting to their identity."
|
|
|
|
> [§Recording signing event] "The Rekor transparency log 'witnesses' the signing event by entering a timestamped entry into the records that attests that the secure signing process has occurred."
|
|
|
|
### B. Fulcio (docs.sigstore.dev/certificate_authority/overview/)
|
|
|
|
> [§Fulcio] "Fulcio is a free code signing Certificate Authority, built to make short-lived certificates available to anyone. Based on an OpenID Connect email address, Fulcio signs X.509 certificates valid for 10 minutes."
|
|
|
|
### C. Rekor (docs.sigstore.dev/logging/overview/)
|
|
|
|
> [§Rekor — goals] "Rekor aims to provide an immutable, tamper-resistant ledger of metadata generated within a software project's supply chain."
|
|
|
|
> [§Rekor — usage] "It enables software maintainers and build systems to record signed metadata to an immutable record. Other parties can then query this metadata, enabling them to make informed decisions on trust and non-repudiation of an object's lifecycle."
|
|
|
|
### D. 본 정독에서 verbatim 확보 못함 (`needs-confirmation`)
|
|
|
|
이전 raw 노트에 있던 다음 인용은 2026-05-27 정독에서 동일 단어 그대로 확보 못함 → strength downgrade:
|
|
|
|
> "GPG signing requires long-lived private keys that must be securely stored and rotated, creating significant operational burden. Keyless signing eliminates this by binding signatures to short-lived OIDC identities recorded in a transparency log."
|
|
|
|
→ Sigstore docs 의 정확한 같은 문장이 현재 페이지에서 확보 안 됨. "Sigstore project rationale (compiled from docs)" 로 출처가 모호하게 표기되어 있어 `needs-confirmation` 처리. ca-tmpl 의 GPG 대비 정당화는 별도 keyless 의 short-lived cert 사실 (`COSIGN-C2`) 과 Rekor 의 transparency 사실 (`COSIGN-C4`) 의 조합으로 충분히 도출 가능.
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| COSIGN-C1 | Cosign 의 keyless signing 은 "키 대신 identity 를 artifact signature 에 결합" 하는 방식 — 즉 long-lived key 대신 OIDC identity 가 1차 신원 | [§Cosign Overview] "Keyless signing associates identities, rather than keys, with an artifact signature." | `official-vendor-doc` | Cosign keyless mode 일반 | "keyless = 키가 전혀 존재하지 않음" 의 뜻은 아님 (ephemeral keypair 사용. `COSIGN-C2` 참조) |
|
|
| COSIGN-C2 | Sigstore CA (Fulcio) 는 signer 의 OIDC identity token 을 검증한 후 그 identity 를 증명하는 X.509 certificate 를 발급한다 | [§Cosign — Verifying identity] "Sigstore's certificate authority verifies the identity token of the user signing the artifact and issues a certificate attesting to their identity." | `official-vendor-doc` | Fulcio + Cosign 결합 signing flow | OIDC IdP 가 GitHub Actions 만 가능하다는 뜻은 아님 — Microsoft/Google/GitHub 등 복수 (별도 페이지) |
|
|
| COSIGN-C3 | Fulcio 는 OIDC email 기반으로 **10 분 valid** 의 short-lived X.509 certificate 를 발급하는 free code signing CA | [§Fulcio] "Fulcio is a free code signing Certificate Authority, built to make short-lived certificates available to anyone. Based on an OpenID Connect email address, Fulcio signs X.509 certificates valid for 10 minutes." | `official-vendor-doc` | Fulcio 가 발급한 cert 의 유효기간 | "사인된 artifact 도 10분 후에 무효된다" 는 뜻은 아님 — signature 자체는 영구, Rekor log 가 timestamp 보장 (`COSIGN-C4`) |
|
|
| COSIGN-C4 | Rekor transparency log 는 signing event 를 timestamped entry 로 immutable record 에 기록하여 "secure signing process 가 발생했음" 을 증인한다 | [§Cosign — Recording] "The Rekor transparency log 'witnesses' the signing event by entering a timestamped entry into the records that attests that the secure signing process has occurred." | `official-vendor-doc` | signature timestamp + 검증 | Rekor 가 artifact 의 content 자체를 저장한다는 뜻은 아님 — signed metadata 만 |
|
|
| COSIGN-C5 | Rekor 의 목표는 "software supply chain 내에서 생성된 metadata 의 immutable, tamper-resistant ledger 를 제공" 하는 것 | [§Rekor — goals] "Rekor aims to provide an immutable, tamper-resistant ledger of metadata generated within a software project's supply chain." | `official-vendor-doc` | supply chain transparency 일반 | "Rekor 가 모든 supply chain attack 을 차단한다" 는 뜻은 아님 — detection 기반 도구 |
|
|
| COSIGN-C6 | Rekor 는 maintainer / build system 이 signed metadata 를 immutable record 에 기록하고, 외부 third party 가 그것을 query 하여 trust 및 non-repudiation 결정을 내릴 수 있게 한다 | [§Rekor — usage] "It enables software maintainers and build systems to record signed metadata to an immutable record. Other parties can then query this metadata, enabling them to make informed decisions on trust and non-repudiation of an object's lifecycle." | `official-vendor-doc` | 검증 측 (deploy gate, downstream consumer) | 정확한 query API endpoint / 응답 schema 는 본 인용 범위 밖 |
|
|
| COSIGN-C7 | (`needs-confirmation`) "GPG 의 long-lived private key 부담을 keyless 가 제거" 라는 공식 진술 | (verbatim 미확보) | `needs-confirmation` | GPG vs keyless 비교 정당화 | 이전 정독의 동일 문장이 2026-05-27 페이지에서 확인되지 않음. ca-tmpl 의 결정 정당화는 `COSIGN-C1`+`C3`+`C4` 의 조합으로 충분 |
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- **이 자료가 직접 증명하는 것**:
|
|
- `COSIGN-C1`/`C2`: keyless signing 의 정확한 의미 (identity ↔ signature 결합) + Fulcio 의 OIDC 검증 후 cert 발급 flow
|
|
- `COSIGN-C3`: Fulcio cert 의 **10 분 유효** 사실
|
|
- `COSIGN-C4`/`C5`/`C6`: Rekor 의 immutable ledger + timestamped entry + third-party query 가능성
|
|
- **이 자료가 증명하지 않는 것**:
|
|
- `cosign verify --certificate-identity=... --certificate-oidc-issuer=...` 의 정확한 CLI 사용법 (별도 cosign reference)
|
|
- GitHub Actions OIDC token + Fulcio + Rekor 의 end-to-end 실측 latency / 가용성 SLA
|
|
- Notary v1 (Docker Content Trust) 와의 정확한 비교 우위 / 열위 (별도 비교 문서)
|
|
- "signature 누락 시 deploy block" 의 구체적인 admission controller 구현 (Kyverno / OPA Gatekeeper / sigstore-policy-controller 별도)
|
|
- `COSIGN-C7` 의 "GPG 대비 운영 부담 감소" 주장의 공식 단언 (verbatim 미확보)
|
|
- **내 프로젝트에 적용하려면 추가 확인이 필요한 것**:
|
|
- ca-tmpl 의 "signature 누락 시 deploy block" 외에 **identity 매칭 정책** (certificate-identity + oidc-issuer pinning) 의 명문화 — 현재 branch note 누락
|
|
- Rekor public instance (rekor.sigstore.dev) 의 가용성 SLA 와 ca-tmpl deploy gate 의 timeout 정책
|
|
- OIDC IdP 장애 시 release pipeline 의 graceful degradation 전략
|
|
|
|
## 메모 / Notes (내 프로젝트 해석)
|
|
|
|
> 본 섹션은 자료 직접 인용 아님. ca-tmpl 결정 컨텍스트 해석.
|
|
|
|
- Keyless ≠ "키가 없다". short-lived cert + OIDC identity로 long-lived private key 보관 부담을 제거한다는 의미.
|
|
- GitHub Actions OIDC token → Fulcio cert → image sign → Rekor log entry 체인이 GitHub Actions backend와 정확히 맞물림 (CI gate branch의 backend 선택과 일관).
|
|
- 검증 측은 `cosign verify --certificate-identity=... --certificate-oidc-issuer=https://token.actions.githubusercontent.com` 형태로 issuer + identity를 강제. ca-tmpl이 "signature 누락 시 deploy block" 외에 **identity 매칭 정책**도 명시해야 안전. 현재 branch note에 없음 → 추후 보완 후보.
|
|
- Notary v1 (Docker Content Trust) 대비 장점: 키 관리 부재, transparency log 공개 검증. 단점: OIDC IdP 가용성 의존.
|
|
|
|
## Related / 관련
|
|
|
|
- 같은 주제 다른 official-doc / company-tech-blog:
|
|
- (추후 추가) sigstore-policy-controller / Kyverno admission controller 문서
|
|
- 적용 branch-note:
|
|
- [[raw/branch-notes/feature-build-release-supply-chain-contract]] — Cosign keyless 의무 + signature 누락 시 deploy block
|
|
- [[raw/branch-notes/feature-ci-quality-gates-contract]] — signed artifact (Cosign) verification gate
|
|
- [[raw/branch-notes/feature-container-runtime-contract]] — image digest 식별 + Cosign verify 가 같은 image identity 공유
|
|
- canonical contract:
|
|
- [[raw/project-notes/ca-skeleton-operational-contract]] — supply chain canonical section
|