fix(config): require explicit Config Server repository authority - #189
fix(config): require explicit Config Server repository authority#189seonghobae wants to merge 4 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 |
Security Scan evidence correction — aggregate green is incomplete, not merge evidenceFresh pre-write refetch confirms this PR is still Draft/mergeable on unchanged source The PR body currently describes Security Scan
Therefore the aggregate green conclusion is not accepted as complete vulnerability evidence. No source change is needed in #189 for this RCA. The Config Server repository-authority behavior remains locally valid. Keep the PR Draft until an unchanged source receives accepted literal-source execution/security evidence, a complete same-revision dependency/vulnerability path with no #196 incompleteness, non-vacuous owned-production coverage, zero valid unresolved findings, and applicable qualifying independent approval. Do not suppress the Trivy warning, copy central scanner controls into this feature branch, or reinterpret aggregate green as acceptance. |
Purpose
Advance #179 with a path-disjoint fail-closed slice from protected
develop@622e5e6c3d534f230c390f10e3832efadfc01825. The Config Server module historically defaultedCONFIG_REPO_URItohttps://github.com/your-repo/config-repo.git, so a missing deployment decision silently became a fake external Git destination.This PR does not promote Config Server to a supported default topology, modify
.replit(owned by #169), modify the canonical documentation spine (owned by #149), add credentials, or change Config Server authentication. It establishes one narrower invariant that is valid whether Config Server remains reference-only or is later promoted: repository authority must be explicit and missing authority must fail closed before remote Git access.Exact current identity
develop@622e5e6c3d534f230c390f10e3832efadfc01825;fix/config-server-explicit-repo-622e5e6;d0f2931580fa7db00355d9209a50ba9bac768b0e;67a94f3919af0fdc65d1ca04fd2e1e9d5e7b5016;680fb76b3120c7ecece90d51f631f7f1b39f5cd9;74d684637f85af734e17a5a1f16dad44ada7dd64;94d1d3477972cfa817429ed125fbdde497f741b0;Every check/review from a predecessor head is historical after source movement.
RCA
spring.cloud.config.server.git.urihad a syntactically valid demo network fallback.CONFIG_REPO_URIwas missing.TDD evidence
RED 1 — repository authority behavior (
d0f2931...)The fail-first commit added only
ConfigServerRepositoryConfigurationTest. It requires exacturi: ${CONFIG_REPO_URI}, rejectsyour-repo/config-repo.git, and rejects an embedded HTTPS default in the placeholder.CI run
31346298755, macOS job93328760966, checked out GitHub synthetic mergeefa8af07795540e85424b03698f5d2e73c233218(Merge d0f2931... into 622e5e6...). ETL and CDC production/test compilation completed successfully, then Config Server production compiled and its new test ran. Exactly that test failed with zero test errors/skips because protectedapplication.ymldid not contain the explicit-only repository URI. The first failing boundary was therefore the intended deployable Config Server configuration contract, not setup/import/fixture/dependency failure.GREEN 1 — explicit deployment-owned repository (
67a94f3...)The production correction changes exactly one configuration line:
No repository URI, credential, fallback, timeout, security mode, runtime topology, or support claim is invented. Spring placeholder resolution must now receive deployment-owned repository authority instead of silently selecting a demo remote.
RED 2 — missing source-backed authority doctoring (
680fb76...)After behavior became green, the test was extended first to require
docs/doctoring/config-server-repository-authority.mdand source-backed treatment of Spring Cloud Config 5.0.4,spring.cloud.config.server.git.uri,CONFIG_REPO_URI,cloneOnStart,skipSslValidation, security, and APA 7 primary references.CI run
31346618762, macOS job93329614615, reached the Config Server test boundary with the behavior contract already green and failed only because the required doctoring artifact did not yet exist. That is valid documentation RED rather than an implementation regression.GREEN 2 — current exact source head
74d684637f85af734e17a5a1f16dad44ada7dd64The doctoring now records:
cloneOnStartas a separately evaluated fail-early availability decision rather than an accidental behavior change here;skipSslValidationas an unsafe convenience default that this design does not enable;All currently exposed workflow aggregates associated with exact source head
74d684637f85af734e17a5a1f16dad44ada7dd64completed successfully:31346717059: success on macOS, Ubuntu and Windows;31346717080: success;31346717095: success;31346717072: success;31346717067: success.CI macOS job
93329887826proves the current protected workflow checked out synthetic merge94d1d3477972cfa817429ed125fbdde497f741b0(Merge 74d6846... into 622e5e6...) rather than literal source head. On that merged treeConfigServerRepositoryConfigurationTestpassed 2/2 and the full reactor completedBUILD SUCCESS.The same current CI log independently reproduces the inherited protected quality-control defect: JaCoCo report and check each say
Analyzed bundle 'etl-service' with 0 classes, then report success. Therefore this aggregate green is not valid non-vacuous 100% owned-production coverage evidence. #162/#164 remains the separate root-cause remediation.Accordingly, current aggregate checks are strong merged-tree compatibility/security evidence, but they do not satisfy the repository's literal-source and non-vacuous coverage acceptance contracts.
Primary references
Spring Cloud Config. (2026). Git backend (Spring Cloud Config 5.0.4). https://docs.spring.io/spring-cloud-config/reference/server/environment-repository/git-backend.html
Spring Cloud Config. (2026). Security (Spring Cloud Config 5.0.4). https://docs.spring.io/spring-cloud-config/reference/server/security.html
Spring Cloud Config. (2026). Config Server (Spring Cloud Config 5.0.4). https://docs.spring.io/spring-cloud-config/reference/server.html
Canonical PRD/TRD/Architecture/UML/security/traceability should reconcile #179/#189 only when #149's writer lane is stable; the branch-local doctoring here does not compete with that canonical spine.
Merge boundary
Keep Draft. Do not merge until the unchanged exact source head has accepted literal-source execution/security evidence under the integrated controls, non-vacuous owned-production coverage under #162/#164 or an equivalent accepted repair, zero valid unresolved review findings, and qualifying independent non-author approval where governance requires it. No predecessor-head or synthetic-merge evidence transfers after a head/base change.