serviceVMs identities: root is the only account on a service VM #41
Labels
No labels
blocked
bug
decision
duplicate
enhancement
handoff
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/secrets#41
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?
The identity template gains a
serviceVMsset, empty for now, so the framework can composetype = "service"machines whose only login is root over the hypervisor's keys. Part of allod/strategy#65 (the forge VM is the first such machine); the type's inventory rules and builder land inallod/inventoryandallod/archetypesunder their own issues.Primary goals:
identity.serviceVMs— likeprivacyVMsbut without a username: a service VM has no operator account. The template declares the set empty.lib.serviceIdentities— one identity per entry carryingusername = "root", folded intolib.vmUsernamesbesidedevIdentitiesandprivacyIdentities, so every hypervisor script that logs in as the identity's username (verify-vm,rebuild-vm,bootstrap-vm) reaches root on a service VM unchanged.machine-host-keys.json,secrets/vm-host-keys/<name>-ssh.ageandlib.vmHostKeySecretFilesexactly as privacy and dev VMs do; nothing new to learn forgetting-started.sh.secrets.nixderives recipients fromdevVMsandforgeAccess; a service VM is not in that set and the checks keep it so.serviceVMs(a service VM named like a hypervisor hostname still fails evaluation);credential-inventoryandhypervisor-recipient-coveragestay green; the README's export table gains the row.Current state and specifics
flake.nixbuildsprivacyIdentitiesfromidentity.privacyVMswithinherit (vm) username, andvmUsernamesfromdevIdentities // privacyIdentitiesplus the hypervisor identities throughmkVmUsernames, which refuses a guest name colliding with a hypervisor hostname.identity.nixdeclaresprivacyVMs.privacy-1 = { username = "privacy"; }and ansshHostsentry for it withuser = "privacy". The archetypes framework readssecrets.lib.serviceIdentities or {}so a fork that has not taken this change still evaluates, and asserts machine names and identity names match, so a service machine in inventory needs itsserviceVMsentry here.Scope
In:
identity.nix,flake.nix, the checks named, the README. Out: theforgeentry itself, its host key ciphertext and itssshHostsline, which arrive with allod/strategy#65's next slice; the dev VM's forge key pair, same slice.forgemachine's identity and host key #42Landed on master as
27c4556.