Repository navigation
fix(security): fail closed on tenant-scoped job ID lookup - #361
seonghobae wants to merge 5 commits into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
* test(security): require tenant-scoped service lookup * fix(security): add fail-closed scoped service lookup * fix(security): delegate scoped service lookup to tenant repository
|
Superseded by clean current-stack reconstruction #451. #451 is based on exact current identifier-reservation parent #443 head |
Objective
Close the remaining tenant-scoped identifier lookup blind spot directly after #342 without moving its verified exact head. The repository contract currently implements
findByTenantAndId(...)as a globalfindById(...)followed by an in-process ownership filter, which is unsafe as the default contract for future durable adapters and undermines storage-boundary tenant isolation.Test-first state
This Draft starts intentionally RED at exact test-only head
a28d936195b40b1442d7ebeae5f4c86657c01bcd. The focused regression requires the interface default to fail closed without invoking globalfindById, and requires the process-local adapter to resolve tenant ownership directly from its scoped storage boundary while rejecting missing tenant/job authority and concealing foreign jobs.Stack and scope
This PR is deliberately stacked on #342 exact head
4eeba73d70db172e44062891c01273efc4109d93because both slices ownConversionJobRepositoryandInMemoryConversionJobRepository. It does not move #342, edit AdminController, overlap the active Jules admin PR, change content-hash demo compatibility, implement durable persistence, or claim issue #326/#312/#263 completion.Acceptance
Observe exact-head RED -> smallest fail-closed contract and in-memory override -> exact-head Maven verification with repository coverage/Javadoc gates -> applicable CI/security/fuzz evidence -> current review/thread/base refetch. Keep Draft while #342 remains open; after #342 integrates, reconcile this unique delta onto the new protected main and regenerate base-sensitive evidence before final merge. Independent write-authorized approval remains a separate protected-merge gate.