Profile data can replace a hypervisor identity; the hypervisorIdentities fallback is silent; a fixture names the template hypervisor #121
Labels
No labels
blocked
bug
decision
duplicate
enhancement
help wanted
invalid
landed?
question
ready-to-merge
stale
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/archetypes#121
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three findings from a cold review of the landed range
b6753d6..master, after allod/archetypes#89 merged. Evidence, verified against the source.Profile data can replace a hypervisor's identity and so its authorized keys.
flake.nix:290mergesprofileDataand the machine'sprofilesettings over{ inherit name identity definition; }, andproductionFactContractpinssecrets,platform,hardwareand the guest key list but notidentity.nix/builders/hypervisor.nix:31,59derive the hypervisor's authorized keys from that identity, now includingoperatorPublicKeys. Trigger:profiles.lib.profileData.<hypervisor>.identityormachines.<hypervisor>.profile.identitycarryingoperatorPublicKeys = [ "<key>" ]. The reviewer evaluated the merge and saw both the secrets-owned and the injected keys. Identity belongs tosecrets(architecture principle 5); the guest half of this change pinned its key list for exactly this reason.The
hypervisorIdentitiesfallback is silent.flake.nix:72builds the set fromnexusIdentitywhensecrets.lib.hypervisorIdentitiesis absent. It exists so the change could land against a secrets revision without the export; that revision has now landed, and this repository's lock still pins the older one (flake.lock, secretse0ed37f), so the ordinary composition exercises the fallback rather than the contract. Once the lock moves, the fallback is a silent default (principle 11).The host passthrough fixture uses the template hypervisor's own name.
checks/vm-facts-negative.nix:35testshost = "nexus"only, so a regression that canonicalises every declared host to"nexus"passes it.Also two comments to trim:
nix/builders/hypervisor.nix:57("nobody remote" is wrong, the hypervisor's own keys are always authorized) andnix/identities.nix:1-2(narrates the file).Refs allod/archetypes#89
Findings 1 and 3 and both comments are fixed on master: identity is pinned after profile data in nix/builder-arguments.nix with checks/machine-identity-pin.nix, and the vmFacts fixture names a synthetic hypervisor. Finding 2, the fallback, is its own issue: allod/archetypes#122.