10 KiB
title, source_type, status, confidence, url, archive_url, tags, related_projects, related_branches, created, last_reviewed
| title | source_type | status | confidence | url | archive_url | tags | related_projects | related_branches | created | last_reviewed | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cosign Keyless Identity Verification Policy | official-doc | raw | high | https://docs.sigstore.dev/cosign/verifying/verify/ |
|
|
|
2026-05-22 | 2026-05-27 |
Cosign Keyless Identity Verification Policy
Layer:
raw/official-docs/— Sigstore Cosign 공식 docs (docs.sigstore.dev) 의 keyless verify 명령 + identity 매칭 flag verbatim 발췌. ca-tmpl 의 "Cosign keyless signing 의무" 결정 누락분 (identity 매칭 정책) 의 보강 근거.
Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-build-release-supply-chain-contract | "Cosign keyless signing 의무, signature 없이 deploy forbidden" 의 보강 — keyless 모드는 --certificate-identity + --certificate-oidc-issuer 가 필수임을 박는다. (G-E 후속 보강) |
컨텍스트 / 왜 저장했는지
ca-tmpl feature-build-release-supply-chain-contract branch 가 "Cosign keyless signing 의무, signature 없이 deploy forbidden" 까지만 결정하고 identity 매칭 정책 (--certificate-identity + --certificate-oidc-issuer) 을 누락한 것이 G-E 후속 보강 항목으로 식별됐다. Sigstore 공식 문서가 keyless 모드에서 두 flag 의 사용을 명시 제시하므로, signature 존재 검증만으로는 임의의 OIDC identity 가 만든 서명도 통과할 수 있다는 사고 시나리오를 외부 근거로 박아두기 위함.
출처 / Source
- 원본 URL: https://docs.sigstore.dev/cosign/verifying/verify/
- 보조 출처: https://github.com/sigstore/cosign/issues/3671 (cosign verify 키리스 검증 시 identity flag 강제 동작 확인 — sigstore/cosign issue tracker)
- 보조 출처: https://www.qcecuring.com/blog/sigstore-cosign-keyless-github-actions (GitHub Actions OIDC identity 포맷 — 3rd-party blog, 참고용)
- 아카이브 URL: (미수집)
- 저자 / 조직: Sigstore project (Linux Foundation)
- 발행일: docs.sigstore.dev 현행 문서 (fetch 일자 2026-05-22, 재확인 2026-05-27)
- 마지막 확인일: 2026-05-27
핵심 인용 / Key quotes (verbatim)
[§Verifying Signatures — identity-based verification command] "cosign verify
--certificate-identity=name@example.com --certificate-oidc-issuer=https://accounts.example.com"
[§OIDC Issuer Endpoints] "Google: https://accounts.google.com" + "Microsoft: https://login.microsoftonline.com" + "GitHub: https://github.com/login/oauth" + "GitLab: https://gitlab.com"
[§Identity flag 강제 — sigstore/cosign Issue #3671 (보조 출처)] "--certificate-identity or --certificate-identity-regexp is required for verification in keyless mode"
[§Keyless 모델 — Sigstore docs paraphrase] 키리스 검증은 identity-based approach (OIDC issuer 와 결합) 를 사용하며, signing service 는 long-term key 가 아닌 short-lived credential 을 통해 identity 와 signature 를 연결한다. (docs.sigstore.dev 본문 요약 — verbatim "keyless signing" 정의 문장은 본 verify 페이지에 단독 존재하지 않으며, 본 인용은 페이지가 시사하는 모델 정리.)
[§GitHub Actions OIDC subject 형식 — 3rd-party blog 보조 출처] GitHub Actions OIDC 로 서명된 image 의 expected
--certificate-identity는 워크플로 경로 + git ref 형식:https://github.com/<ORG>/<REPO>/.github/workflows/<WORKFLOW-FILE>@refs/heads/<BRANCH>(또는@refs/tags/<TAG>).
Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| CSIGN-KL-C1 | identity-based 검증의 cosign verify 명령은 --certificate-identity=<subject> 와 --certificate-oidc-issuer=<issuer URL> 두 flag 를 함께 사용 |
[§Verifying Signatures] "cosign verify |
official-vendor-doc |
Sigstore Cosign keyless 검증 | 두 flag 가 모든 cosign verify 모드에서 강제라는 뜻은 아님 — key-based 검증은 --key 사용 (별도 모드) |
| CSIGN-KL-C2 | Sigstore docs 가 제시하는 OIDC issuer 예시 URL: Google = https://accounts.google.com, Microsoft = https://login.microsoftonline.com, GitHub (사람 사용자) = https://github.com/login/oauth, GitLab = https://gitlab.com |
[§OIDC Issuer Endpoints] "Google: https://accounts.google.com" + "Microsoft: https://login.microsoftonline.com" + "GitHub: https://github.com/login/oauth" + "GitLab: https://gitlab.com" | official-vendor-doc |
사람 사용자 OIDC issuer 매칭 | GitHub Actions OIDC token issuer (https://token.actions.githubusercontent.com) 와 동일하지 않음 — CI 환경은 별도 issuer URL 사용 (docs verify 페이지에 명시 없음 — 보조 출처 / 별도 docs 확인 필요) |
| CSIGN-KL-C3 | keyless 모드에서 --certificate-identity (또는 --certificate-identity-regexp) 는 검증에 필수 |
[§sigstore/cosign Issue #3671] "--certificate-identity or --certificate-identity-regexp is required for verification in keyless mode" | needs-confirmation |
Sigstore Cosign keyless verify | 본 인용은 cosign issue tracker (보조 출처) 기반. 공식 docs 가 동일 문장으로 명시했는지는 별도 확인 필요. --certificate-oidc-issuer 가 동일하게 필수인지도 별도 확인 필요 |
| CSIGN-KL-C4 | Sigstore 키리스 모델 = identity-based verification + short-lived credentials (long-term key 미사용) | [§Keyless 모델] (docs paraphrase) 키리스 검증은 identity-based approach 를 사용하며 long-term key 가 아닌 short-lived credential 을 통해 identity 와 signature 를 연결 | needs-confirmation |
Sigstore Cosign keyless 일반 모델 이해 | 본 인용은 verify 페이지 paraphrase 이며 verbatim "keyless signing" 정의 문장 출처는 별도 페이지 (Fulcio 등). 본 자료만으로 Fulcio 의 정확한 동작을 증명하지 않음 |
Strength 근거
CSIGN-KL-C1,CSIGN-KL-C2:official-vendor-doc— Sigstore docs.sigstore.dev 공식 verify 페이지 verbatimCSIGN-KL-C3:needs-confirmation— issue tracker 기반. 공식 docs 동일 문장 확인 필요CSIGN-KL-C4:needs-confirmation— verify 페이지 paraphrase, 정의 문장 출처 별도 페이지 확인 필요
Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것:
CSIGN-KL-C1: identity-based verify 의 정확한 cosign 명령 구문 (두 flag 함께 사용)CSIGN-KL-C2: 사람 사용자 OIDC issuer URL 의 정확한 형식
- 이 자료가 증명하지 않는 것:
- 두 flag (
--certificate-identity+--certificate-oidc-issuer) 가 keyless 모드에서 모두 hard-required 라는 cosign CLI 동작 (issue tracker 기반 보조 출처. 본 docs 페이지는 권장 예시로만 제시. 1차 공식 인용 확인 필요) - GitHub Actions OIDC 의 정확한 expected
--certificate-identity포맷 (보조 출처 / GitHub OIDC docs 별도 확인 필요) - Kubernetes admission controller (Sigstore policy-controller / Kyverno) 의 정확한 verify rule 구문 (별도 admission controller docs)
- Cosign 이 사용하는 DSSE envelope signing 알고리즘 (별도 sigstore docs)
- 두 flag (
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- ca-tmpl deploy gate 가 GitHub Actions OIDC 기반인 경우, expected identity 의 정확한 워크플로 경로 + ref 매칭 규칙
- Cosign CLI 의 정확한 fail-fast 동작 (identity mismatch 시 exit code 등)
- admission controller 또는 Kyverno 정책 syntax 의 expected identity/issuer 선언 방식
메모 / Notes (내 프로젝트 해석)
본 섹션은 자료 직접 인용 아님. ca-tmpl 결정 컨텍스트 해석.
- 키리스 검증의 두 강제 flag (cosign CLI 동작 + Sigstore docs 결합 권장):
--certificate-identity=<expected subject>(또는--certificate-identity-regexp)--certificate-oidc-issuer=<expected issuer URL>(또는--certificate-oidc-issuer-regexp)
- 둘 중 하나만 검사하면 우회 가능 (사고 모델):
- issuer 만 검사 → 같은 IdP 사용자라면 누구든 통과 (예: 같은 GitHub org 의 다른 repo workflow 도 통과)
- identity 만 검사 → IdP 가 임의여도 통과 (예: 동일 subject 문자열을 발급하는 다른 OIDC IdP)
- 클러스터 단 강제: Kubernetes admission controller (Sigstore policy-controller, Kyverno
verifyImages룰) 에서 expected identity/issuer 를 정책으로 선언해 unsigned + identity-mismatch image 를 admission 단계에서 차단. - ca-tmpl 약식 표현 정정 필요 지점: 단순 "Cosign signature 누락 차단" 이 아니라 "Cosign signature + identity 매칭 차단".
- 본 파일은 docs.sigstore.dev fetch 결과 + sigstore/cosign issue tracker + 정리 블로그 교차 확인으로 작성. 인용은 Sigstore 공식 docs 1차 출처를 우선으로 표기 (CSIGN-KL-C1, C2). 보조 출처 기반 claim 은
needs-confirmation으로 표기 (C3, C4).
Related / 관련
- 같은 주제 다른 official-doc:
- raw/official-docs/supply-chain-slsa-provenance-framework (SLSA build level + provenance)
- raw/official-docs/slsa-v1-provenance-schema (in-toto Statement / DSSE envelope subject)
- 인용하는 branch:
- raw/branch-notes/feature-build-release-supply-chain-contract — Cosign keyless 의무 결정의 원천 branch-note. identity 매칭 정책 누락이 본 문서 작성 trigger
- 인용하는 project-note:
- raw/project-notes/ca-skeleton-operational-contract — Contract Registry (canonical SSOT). 본 보강은 supply chain contract 항목에 반영되어야 함
- 인용하는 wiki:
- wiki/concepts/devops-ci-supply-chain-dx — 한계/주의점 섹션 Cosign 항목과 직접 연결
- wiki/projects/ca-tmpl/devops-ci-supply-chain-dx — documented-only/planned 섹션 보강 대상