security(oidc): bind reusable workflow to immutable source SHA - #426
Merged
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (26)
📝 WalkthroughWalkthrough
Changes워크플로 소스 바인딩
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant runtime-entrypoint
participant src/index.ts
participant OIDC discovery/JWKS
Client->>runtime-entrypoint: /exchange 요청과 Bearer 토큰
runtime-entrypoint->>runtime-entrypoint: workflow ref 및 source SHA 사전 검증
runtime-entrypoint->>src/index.ts: 통과한 OIDC 교환 요청 전달
src/index.ts->>OIDC discovery/JWKS: discovery 및 JWKS 조회
OIDC discovery/JWKS-->>src/index.ts: 검증 키와 OIDC 응답
src/index.ts-->>Client: 성공 응답 또는 ERR_WORKFLOW_NOT_ALLOWED
Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
seonghobae
marked this pull request as ready for review
August 19, 2026 03:02
This was referenced Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Binds Noema's configured GitHub Actions workflow trust to an immutable source commit in addition to the exact reusable-workflow ref. The public runtime edge remains a denial-only prefilter; the authoritative credential-exchange verifier independently checks cryptographically verified workflow identity/source claims before GitHub App credential minting.
Current exact identity
e30d40e86b7418c5c44b0855629a91600eb6e5eb.bcef225f1cf1a640a78a7c5b55b662cc5deb8ef4..githubsource commit:f16280a0aa215563d29200c5d0bab75c48af614a.noema-review.ymlblob:59b25e343444d0b97fc1c7ba33cb15543dd70102.Repair lineage
The branch adds real RS256
/exchangeregressions for reusable and fallback workflow identity/source pairs and makes both the denial-only runtime prefilter and authoritative verifier fail closed when immutable workflow-source identity is missing or mismatched. Runtime readiness also requires the configured immutable source SHA to be canonical lowercase 40-hex.Exact application CI on predecessor head
eef2690f199beacf205250cafc844eacc57e53a7exposed two concrete failures intest/runtime-workflow-prefilter-coverage.test.ts: both no-credential delegation cases expected the authoritative401 ERR_AUTH_MISSINGresponse but received503 ERR_RATE_LIMITbecause the new runtime-prefilter fixture omittedNOEMA_RATE_LIMITER. The fixture repair supplies an allowing Durable Object rate-limiter namespace so the requests can traverse the prefilter and distributed limiter to the authoritative missing-auth boundary.A later central
.githubmove was handled without mutating that read-only dependency: the trustednoema-review.ymlblob was reverified unchanged at59b25e..., and Noema's configuredALLOWED_WORKFLOW_SHAwas deliberately rolled to central protected commitf16280a.... The current branch head already contains that roll-forward.CHANGELOG.mdremains untouched because separate Draft #425 owns that mutable documentation surface; this lane does not race it.Current exact-head evidence
Fresh runs for unchanged head
e30d40e86b7418c5c44b0855629a91600eb6e5ebremain non-passing until terminal:32207167682: queued;32207167823: queued;32207167774: queued.Current formal reviews: none. Current unresolved review threads: none. No predecessor result substitutes for this head.
Authority boundary
This PR writes only Noema. It does not mutate central
.github, naruon, contextual-orchestrator, live GitHub App installations, rulesets, or deployed Cloudflare settings. Repository source can enforce a configured immutable source SHA; it cannot fabricate deployed-configuration evidence.Merge boundary
Keep Draft until the unchanged exact head has terminal-success application CI, reviewer-ci, eligible central Security Scan, current review/thread evidence, and fresh live-base/governance revalidation. If central
.githubadvances again, compare the exact trusted workflow artifact and deliberately roll the configured immutable SHA only when the intended trusted source is unchanged or a separately reviewed source change is accepted; then reacquire exact-head evidence.Summary by CodeRabbit
새로운 기능
버그 수정
문서