Support per-target bearers in pi-provider #36
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
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/nexus#36
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?
Teach
pi-providerto give a single target its own bearer for a provider, so an operator can adopt the per-target credentials thatallod/secretsissue #16 makes expressible without hand-editing a registry or an Age ciphertext.Primary goals:
Current state
retargetis the only command that changes which machines reach a provider, and it is whole-credential by construction:scripts/pi-provider:119documents--targetas a replacement list, the retarget branch plans an encrypted token for every token of the credential, andprompt_and_encryptat:1185takes one hidden prompt per planned token before writing anything.collect_recipientsat:1086then reads one recipient set for the credential and asserts every token shares it, which is exactly right while a credential has one bearer for all its targets and has no meaning once each target has its own.So there is currently no way to say "add this machine, with this bearer, leave the others alone". Extending the target list re-encrypts the one shared ciphertext to a wider recipient set, which is the behaviour the linked contract issue exists to make optional.
Ordering
This cannot be designed before
allod/secretsissue #16 settles the registry shape, because the command surface follows from it: whether a target carries a credential reference, and whether a provider's credentials are addressed by target, determines whether this is a new flag on an existing command or a new command. Filed now so the tool half is tracked rather than discovered late; do not start it while the contract shape is open.Scope
In scope: the command surface for per-target bearers, the recipient assertions that keep each ciphertext narrow, the migration path for an existing shared credential, and the dry-run output that shows an operator exactly which machines gain and lose access before anything is written.
Out of scope: the contract change itself, tracked in
allod/secretsissue #16. Also out of scope: any change to how a shared credential behaves for deployments that keep using one.