Skip to content

docs(#1528): document the MySQL DB identity model + edgeuser retirement (D10) - #660

Merged
divyasinghds merged 1 commit into
developfrom
docs/1528-security-db-identity-model
Aug 11, 2026
Merged

docs(#1528): document the MySQL DB identity model + edgeuser retirement (D10)#660
divyasinghds merged 1 commit into
developfrom
docs/1528-security-db-identity-model

Conversation

@divyasinghds

@divyasinghds divyasinghds commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

What

Document the in-cluster MySQL database identity model in docs/SECURITY.md — the S0/S1 groundwork for backend#1528 (RFC-0003 D10 close-out: retire the root-equivalent edgeuser, mint tb_meta + tb_ingest). The doc described the training-pod credential model (G1) but never the DB identity model, and mentioned edgeuser only obliquely.

Changes (docs only)

  • §4.1.1 MySQL database identity model — the two databases (metadata, training_test_datasets), the least-privilege identities (per-experiment users, tb_credmgr, tb_meta, tb_ingest) and edgeuser's legacy root-equivalence, as a per-identity scope / consumer / status table, plus the staged S1 → S2 → S3 retirement.
  • §8.10 residual riskedgeuser root-equivalence as a tracked gap with the staged, per-fleet, reversible-until-S3 rollout (mirrors the §8.2 egress-lockdown style).
  • §10 — code-path rows for the minting (client-runtime:sql_utils.ensure_*_account) and the serviceDbAccounts gate.
  • §11 — document-history entry.

Accuracy / current state

Reflects the fleet reality today, not the end state:

  • edgeuser is still root-equivalent and still the default authentication identity for jobs-manager, requests-proxy, and ingestion pods.
  • S1 is merged and minting-capable but serviceDbAccounts defaults off, so tb_meta/tb_ingest aren't minted anywhere yet and nothing consumes them until S2.
  • tb_credmgr + per-experiment users are the already-shipped perExperimentDbCreds mechanism (backend#1181).

Review ask

This is customer-facing security wording — please sanity-check the identity/scope/consumer table in §4.1.1 and the §8.10 rollout against your intent for the D10 close-out.

Refs: backend#1528 (D10 close-out); client-runtime#290 / client#643 (S1).

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only changes to customer-facing security wording; no runtime or credential behavior changes.

Overview
docs/SECURITY.md now documents the in-cluster MySQL least-privilege identity model and the planned retirement of root-equivalent edgeuser, as part of RFC-0003 D10 / backend#1528.

Under §4.1.1, it adds a table for metadata vs training_test_datasets, identities (per-experiment users, tb_credmgr, tb_meta, tb_ingest, legacy edgeuser), who uses each, and current status—including that serviceDbAccounts (default off) mints tb_meta/tb_ingest at jobs-manager startup without consumers yet. It also describes the S1 → S2 → S3 rollout (mint → switch consumers → drop edgeuser).

§8.10 tracks edgeuser root-equivalence as an in-progress G1 residual risk with the same staged, fleet-by-fleet rollout. §10 links minting to client-runtime:sql_utils.ensure_*_account and the serviceDbAccounts gate in chart templates. §11 adds a 2026-08 history entry.

Reviewed by Cursor Bugbot for commit 5254ac1. Bugbot is set up for automated code reviews on this repo. Configure here.

@divyasinghds
divyasinghds requested a review from saadqbal as a code owner August 11, 2026 06:03
@divyasinghds divyasinghds self-assigned this Aug 11, 2026
@divyasinghds
divyasinghds requested review from aptracebloc and removed request for saadqbal August 11, 2026 07:36
LukasWodka added a commit that referenced this pull request Aug 11, 2026
… PR trigger (backend#1681) (#665)

`Source-of-truth drift` is a REQUIRED status check on develop and on main, but
`drift-checks.yaml` only fires on PRs touching scripts/, client/ or itself. A PR
outside those paths therefore never produces the check, GitHub leaves it at
"Expected - waiting for status to be reported", and the PR is unmergeable with no
failing check to point at.

Measured on 2026-08-11 this was blocking three open PRs at once - client#651
(org-standards sync), #657 (Makefile) and #660 (docs) - none of which touch the
filtered paths. Two of the three had already been approved.

`pull_request` loses its paths filter so the required check always reports. The
job is ~10s (measured across its last three runs), which is nothing next to a
permanently stuck PR. `push` keeps its filter: pushes are not gated by required
checks, so path-scoping there is free and correct.

The repo already documents this hazard in standard-checks.yml's header; this is
the same rule applied to the workflow that broke it.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…nt (D10)

SECURITY.md described the training-pod credential model (G1) but never the
MySQL database identity model, and mentioned edgeuser only obliquely. The
RFC-0003 D10 close-out (backend#1528) makes that model a first-class security
property, so document it:

- §4.1.1 — the two databases, the least-privilege identities (per-experiment
  users, tb_credmgr, tb_meta, tb_ingest) and edgeuser's legacy
  root-equivalence, with per-identity scope/consumer/status, and the staged
  S1→S2→S3 retirement.
- §8.10 — edgeuser root-equivalence as a tracked residual risk with the
  staged, per-fleet rollout (mirrors the §8.2 egress-lockdown style).
- §10 — code paths for the minting (sql_utils.ensure_*_account) and the
  serviceDbAccounts gate.
- §11 — history entry.

Docs only; reflects current state accurately (S1 merged/minting-capable but
default-off, consumers still on edgeuser until S2). Part of the backend#1528
S0/S1 groundwork ("document the identity model — it never mentions edgeuser
today").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@divyasinghds
divyasinghds force-pushed the docs/1528-security-db-identity-model branch from b8991e5 to 5254ac1 Compare August 11, 2026 09:57
@divyasinghds
divyasinghds merged commit 43dcbd2 into develop Aug 11, 2026
13 checks passed
@divyasinghds
divyasinghds deleted the docs/1528-security-db-identity-model branch August 11, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants