# creds-matrix.tsv -- D-137 expected-state credential register (ADOPTED 2026-07-26). # # THE SINGLE SOURCE. creds-manifests/*.manifest are DERIVED from this file # (D-137 ruling 2: `scripts/creds-matrix.py --render`); do not hand-edit a manifest. # # WHY A FORWARD REGISTER. creds-audit is DECLARATION-based, so an undeclared secret is # structurally invisible -- and no discovery sweep can ever detect a credential that was # never minted at all. Absence is invisible to discovery. This file states what SHOULD # exist so absence becomes a detectable FAIL. # # LOGICAL KEYS ONLY (SEC-004 -- this repo is currently PUBLIC). No values, no hostnames, # no IPs, no grants, no paths. `host-role` is a role token, never a VM name. # # FORMAT. Whitespace-separated positional records in the manifests' idiom (the same shape # creds-audit.sh:49 reads). `#` comments and blank lines ignored. NO FIELD MAY CONTAIN # WHITESPACE. `-` means not-applicable. # # A ROW IS ONE (credential, location) PAIR -- not one credential (12-column amendment, # 2026-07-26). Copies of one credential share an `id`, one row per place it lives. `id` is # therefore the IDENTITY, which is what makes ruling 5 checkable: if the rows sharing an id # carry more than one `principal`, that identity serves two principal types -> FAIL. # # columns: # id logical identity (rows sharing an id are copies/forms of one identity) # cardinality singleton | per-site | per-DC | per-node | per-tenant # site-key region-qualified (vr1-dc0), bare `dc0` REJECTED; `-` = not site-scoped # host-role jumphost|headend|rack|edge|netbox|cloud|unit|client (NEVER a VM name) # filename basename at that location; `-` = no host artifact (skips existence checks) # access-type gui|api|ssh|cli-profile|console|none # principal human|service|- (ruling 5 keys off this) # custody consolidated|source-of-record|off-manifest-known|not-consolidated-ruled # mint-stage stage2..stage6 | vr0-phaseNN | tenant-onboard | adhoc | - # mint-ref script:<path>:<line> | runbook:<path>:<line> | operator-terminal | - # sec-ref SEC-NNN | - # notes-ref key into creds-matrix-notes.md | - # # EXPECTED RED. This register is deliberately not satisfiable by today's tree; the # failures are the defects D-137 exists to surface (see the notes file, and the # "EXPECTED RED BY DESIGN" section of docs/D-137-implementation-plan.md). # # id cardinality site-key host-role filename access-type principal custody mint-stage mint-ref sec-ref notes-ref # ---------------------------------------------------------------- vr1-office1 (headend region + jumphost) maas-region-admin singleton vr1-office1 headend admin.pass gui human source-of-record stage2 script:scripts/site-headend-install.sh:452 SEC-020 n-maas-region-admin maas-region-admin singleton vr1-office1 jumphost maas-admin-password gui human consolidated stage2 script:scripts/site-headend-install.sh:452 SEC-020 n-maas-region-admin maas-region-admin singleton vr1-office1 headend admin.apikey api service not-consolidated-ruled stage2 script:scripts/site-headend-install.sh:453 SEC-020 n-maas-admin-apikey maas-region-admin singleton vr1-office1 headend maas-cli-profile cli-profile service off-manifest-known stage2 script:scripts/site-headend-install.sh:455 SEC-020 n-maas-cli-profile maas-region-operator singleton vr1-office1 jumphost maas-operator-password gui human consolidated adhoc operator-terminal SEC-020 n-maas-region-operator maas-region-db singleton vr1-office1 headend db.pass none service not-consolidated-ruled stage2 script:scripts/site-headend-install.sh:430 SEC-020 n-region-infra-carveout maas-region-lxd-trust singleton vr1-office1 headend lxd-trust.pass none service not-consolidated-ruled stage2 script:scripts/site-headend-install.sh:485 SEC-020 n-region-infra-carveout maas-rack-enroll-secret singleton vr1-office1 headend maas-enroll-secret none service off-manifest-known stage2 script:scripts/site-headend-install.sh:445 - n-rack-enroll office1-svc-key per-site vr1-office1 jumphost office1_svc_ed25519 ssh service consolidated stage2 operator-terminal SEC-007 n-no-mint-command office1-svc-key per-site vr1-office1 jumphost office1_svc_ed25519.pub none service consolidated stage2 operator-terminal SEC-007 n-no-mint-command office1-edge-api per-site vr1-office1 jumphost opnsense-api.txt api service consolidated stage2 script:scripts/opnsense-bootstrap-apikey.sh:89 - n-edge-api office1-edge-root per-site vr1-office1 jumphost opnsense-root-password gui human consolidated stage2 operator-terminal SEC-007 n-no-mint-command office1-edge-root per-site vr1-office1 jumphost opnsense-root-hash none human consolidated stage2 operator-terminal SEC-007 n-no-mint-command office1-tailscale-authkey singleton vr1-office1 jumphost tailscale-authkey.txt api service consolidated stage2 operator-terminal SEC-008 n-third-party netbox-upstream-token singleton vr1-office1 jumphost vr1-netbox.env api service consolidated stage2 operator-terminal SEC-006 n-netbox-upstream netbox-sandbox-token singleton vr1-office1 netbox api.token api service source-of-record stage2 runbook:runbooks/dc-dc-phase1-office1-standup.md:643 SEC-009 n-netbox-sandbox netbox-sandbox-token singleton vr1-office1 jumphost vr1-netbox-sandbox.env api service consolidated stage2 runbook:runbooks/dc-dc-phase1-office1-standup.md:643 SEC-009 n-netbox-sandbox netbox-secret-key singleton vr1-office1 netbox netbox-secret-key none service off-manifest-known stage2 operator-terminal - n-netbox-vm-secrets netbox-admin singleton vr1-office1 netbox netbox-admin-password gui human off-manifest-known stage2 operator-terminal - n-netbox-vm-secrets office1-tofu-maas-apikey singleton vr1-office1 jumphost vr1-stage1.env api service consolidated stage2 runbook:runbooks/dc-dc-phase1-office1-standup.md:464 SEC-009 n-tofu-apikey office1-tofu-maas-apikey singleton vr1-office1 jumphost terraform.tfstate api service off-manifest-known stage2 runbook:runbooks/dc-dc-phase1-office1-standup.md:464 SEC-009 n-tfstate-plaintext office1-env singleton vr1-office1 jumphost vr1-office1.env none service consolidated stage2 operator-terminal SEC-009 n-office1-env creds-folder-readme per-site vr1-office1 jumphost README none - consolidated - - - n-readme # ---------------------------------------------------------------- vr1-dc0 dc0-svc-key per-DC vr1-dc0 jumphost vr1-dc0_svc_ed25519 ssh service consolidated stage3 operator-terminal - n-no-mint-command dc0-svc-key per-DC vr1-dc0 jumphost vr1-dc0_svc_ed25519.pub none service consolidated stage3 operator-terminal - n-no-mint-command dc0-svc-key per-DC vr1-dc0 headend vr1-dc0_svc_ed25519 ssh service off-manifest-known stage3 operator-terminal SEC-022 n-headend-shadow-store dc0-svc-key per-DC vr1-dc0 headend vr1-dc0_svc_ed25519.pub none service off-manifest-known stage3 operator-terminal SEC-022 n-headend-shadow-store dc0-edge-key per-DC vr1-dc0 jumphost vr1-dc0-edge_ed25519 ssh service consolidated stage3 operator-terminal - n-edge-key dc0-edge-key per-DC vr1-dc0 jumphost vr1-dc0-edge_ed25519.pub none service consolidated stage3 operator-terminal - n-edge-key dc0-edge-api per-DC vr1-dc0 jumphost opnsense-api.txt api service consolidated stage3 script:scripts/opnsense-bootstrap-apikey.sh:89 SEC-021 n-dc0-edge-api-absent dc0-maas-power-key per-DC vr1-dc0 jumphost vr1-dc0-maas-power_ed25519 ssh service consolidated stage3 operator-terminal SEC-021 n-dc0-power-key-divergence dc0-maas-power-key per-DC vr1-dc0 jumphost vr1-dc0-maas-power_ed25519.pub none service consolidated stage3 operator-terminal SEC-021 n-dc0-power-key-divergence dc0-maas-power-key per-DC vr1-dc0 headend maas-virsh_ed25519 ssh service off-manifest-known stage3 operator-terminal SEC-021 n-dc0-power-key-divergence dc0-maas-power-key per-DC vr1-dc0 headend maas-snap-power-key ssh service off-manifest-known stage3 runbook:runbooks/dc-dc-phase2-tofu-dc-substrate.md:770 SEC-012 n-snap-key-fragility dc0-maas-apikey per-DC vr1-dc0 jumphost maas-api-key.txt api service consolidated stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:136 SEC-018 n-dc-maas-apikey dc0-maas-apikey per-DC vr1-dc0 headend juju-credentials api service off-manifest-known stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:141 SEC-018 n-juju-cred-store dc0-juju-maas-user per-DC vr1-dc0 - - api service off-manifest-known stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:128 SEC-020 n-juju-user-nopassword # ---------------------------------------------------------------- vr1-dc1 dc1-svc-key per-DC vr1-dc1 jumphost vr1-dc1_svc_ed25519 ssh service consolidated stage3 operator-terminal - n-no-mint-command dc1-svc-key per-DC vr1-dc1 jumphost vr1-dc1_svc_ed25519.pub none service consolidated stage3 operator-terminal - n-no-mint-command dc1-svc-key per-DC vr1-dc1 headend vr1-dc1_svc_ed25519 ssh service off-manifest-known stage3 operator-terminal SEC-022 n-headend-shadow-store dc1-svc-key per-DC vr1-dc1 headend vr1-dc1_svc_ed25519.pub none service off-manifest-known stage3 operator-terminal SEC-022 n-headend-shadow-store dc1-edge-key per-DC vr1-dc1 jumphost vr1-dc1-edge_ed25519 ssh service consolidated stage3 operator-terminal SEC-015 n-edge-key dc1-edge-key per-DC vr1-dc1 jumphost vr1-dc1-edge_ed25519.pub none service consolidated stage3 operator-terminal - n-edge-key dc1-edge-api per-DC vr1-dc1 jumphost opnsense-api.txt api service consolidated stage3 script:scripts/opnsense-bootstrap-apikey.sh:89 - n-edge-api dc1-maas-power-key per-DC vr1-dc1 jumphost vr1-dc1-maas-power_ed25519 ssh service consolidated stage3 operator-terminal SEC-016 n-dc1-power-key dc1-maas-power-key per-DC vr1-dc1 jumphost vr1-dc1-maas-power_ed25519.pub none service consolidated stage3 operator-terminal SEC-016 n-dc1-power-key dc1-maas-power-key per-DC vr1-dc1 headend maas-snap-power-key ssh service off-manifest-known stage3 runbook:runbooks/dc-dc-phase2-tofu-dc-substrate.md:770 SEC-016 n-snap-key-fragility dc1-maas-apikey per-DC vr1-dc1 jumphost maas-api-key.txt api service consolidated stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:136 SEC-019 n-dc-maas-apikey dc1-maas-apikey per-DC vr1-dc1 headend juju-credentials api service off-manifest-known stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:141 SEC-019 n-juju-cred-store dc1-juju-maas-user per-DC vr1-dc1 - - api service off-manifest-known stage5 runbook:runbooks/dc-dc-phase4-juju-bundle-per-dc.md:128 SEC-020 n-juju-user-nopassword # ---------------------------------------------------------------- outside the SEC-009 *-creds/ convention (research FINDING 2) vault-unseal-shares singleton - jumphost vault-init none service off-manifest-known vr0-phase02 runbook:runbooks/phase-02-vault-bringup.md:71 SEC-023 n-outside-convention vault-root-token singleton - jumphost vault-init none service off-manifest-known vr0-phase02 runbook:runbooks/phase-02-vault-bringup.md:71 SEC-023 n-outside-convention octavia-issuing-ca-passphrase singleton - jumphost octavia-issuing-ca-passphrase none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:299 SEC-023 n-outside-convention octavia-issuing-ca-key singleton - jumphost octavia-issuing-ca-key none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:302 SEC-023 n-outside-convention octavia-issuing-ca-cert singleton - jumphost octavia-issuing-ca-cert none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:305 SEC-023 n-outside-convention octavia-controller-ca-pass singleton - jumphost octavia-controller-ca-passphrase none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:321 SEC-023 n-outside-convention octavia-controller-ca-key singleton - jumphost octavia-controller-ca-key none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:324 SEC-023 n-outside-convention octavia-controller-ca-cert singleton - jumphost octavia-controller-ca-cert none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:327 SEC-023 n-outside-convention octavia-controller-key singleton - jumphost octavia-controller-key none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:343 SEC-023 n-outside-convention octavia-controller-bundle singleton - jumphost octavia-controller-bundle none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:375 SEC-023 n-outside-convention octavia-pki-overlay singleton - jumphost octavia-pki.yaml none service off-manifest-known vr0-phase01 runbook:runbooks/phase-01-bundle-deploy.md:391 SEC-004 n-overlay-in-clone tenant-domain-admin per-tenant - jumphost domain-admin-cred.txt gui human off-manifest-known tenant-onboard script:scripts/tenant-onboard.sh:64 SEC-023 n-tenant-dir tenant-cluster-user per-tenant - jumphost cluster-cred.txt api human off-manifest-known tenant-onboard script:scripts/tenant-onboard.sh:90 SEC-023 n-tenant-dir tenant-svc-user per-tenant - jumphost svc-cred.txt api service off-manifest-known tenant-onboard script:scripts/tenant-onboard.sh:90 SEC-023 n-tenant-dir tenant-svc-appcred per-tenant - jumphost svc-appcred.txt api service off-manifest-known tenant-onboard script:scripts/tenant-onboard.sh:141 SEC-023 n-tenant-dir tenant-nova-key per-tenant - jumphost tenant-key.pem ssh service off-manifest-known tenant-onboard script:scripts/tenant-onboard.sh:167 SEC-023 n-tenant-dir # ---------------------------------------------------------------- in scope by the materialization ruling (charm/platform-minted, then materialized) keystone-admin singleton - cloud - api service off-manifest-known vr0-phase01 - - n-charm-minted keystone-admin singleton - jumphost admin-openrc none service off-manifest-known vr0-phase03 script:scripts/phase-03-admin-openrc.sh:52 SEC-023 n-predicted-openrc magnum-domain-admin singleton - cloud - api service off-manifest-known vr0-phase07 script:scripts/phase-07-conductor-graft.sh:90 - n-cloud-only capi-mgmt-kubeconfig singleton - cloud kube-config none service off-manifest-known vr0-phase06 script:scripts/phase-06-capi-stack.sh:91 - n-cloud-only rbd-mirror-peer-token per-DC - unit rbd-mirror-bootstrap-token none service off-manifest-known stage6 script:scripts/dc-dc-rbd-mirror.sh:88 - n-ephemeral-unit rgw-multisite-system-key singleton - unit - api service off-manifest-known stage6 script:scripts/dc-dc-radosgw-multisite.sh:172 - n-cloud-only