box grant refuses incus-admin members, leaving them with no project #99
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#99
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?
box grantrefuses incus-admin members, leaving them with no projectThe refusal
host/grant-user.sh:69:The reasoning in the comment: "admin membership wins at the socket", so
granting the restricted tier "would not restrict anything, it would only
mislead whoever reads the group list later."
Why that is wrong
It conflates permission with provisioning. They are separate, and
box grantsupplies both:incusgroup, i.e. socket access. Anincus-adminmember does already have this, strictly stronger. The comment is right
about this part.
user-<uid>project, theboxnetnarrowing, snapshotand backup allowances, and the
box-netprofile installed into theirproject. An
incus-adminmember gets none of this.box_tier()(bin/box:30) resolves anincus-adminmember toadmin, sothey operate in the shared default project alongside root and every other
admin. They have no project of their own. Their boxes are not isolated from
other admins'.
box grant— the only command that provisions a per-userproject — refuses to run for them.
The result: a human who is an admin on the host cannot get their own boxes
without either being removed from
incus-adminfirst, or hand-runningincus-user and the project convergence themselves. This has bitten us in
practice.
Proposed change
Drop the refusal. Run the full convergence for
incus-adminmembers, andsay plainly what it does and does not change:
incus-admin) — report itas such rather than adding them to
incusrestricted.networks.access boxnet, snapshots, backups,box-netprofileThen say out loud what the grant cannot do for them: their
incus-adminmembership still wins at the socket, so the project's restrictions are a
default placement, not a confinement — they can still reach the default
project and other users' instances whenever they choose to. That is the
honest version of the warning the current refusal is gesturing at, and it
belongs in the output rather than in a hard exit.
Alternative if the refusal is considered load-bearing: keep it as the default
and add
--anyway/--provision-only. Weaker — it leaves the trap in placefor whoever hits it first, and rig's
users applywould have to know to passthe flag.
Why this is blocking
heavy-duty/rigwantsusers applyto callbox grantfor every usercarrying role
box— heavy-duty/rig#49. A user who is bothincus-admin(by hand, break-glass) and rolebox(in the fleet users file)makes that call exit 1 today. rig would have to special-case box's refusal —
or box stops refusing.