Files
llm-wiki/raw/official-docs/cosign-keyless-identity-verification-policy.md

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/
ca-supply-chain
cosign
sigstore
keyless
identity-verification
ca-skeleton-operational-contract
feature-build-release-supply-chain-contract
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

핵심 인용 / 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 --certificate-identity=name@example.com --certificate-oidc-issuer=https://accounts.example.com" 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 페이지 verbatim
  • CSIGN-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)
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • 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).