Repository navigation
v0.4.4
Roles replace key scopes. This is everything since v0.3.2: v0.4.0 through v0.4.3 were iteration tags with no separate notes.
Breaking
- Key and session scopes are gone. A member key or session now carries its member's role labels, and nothing narrows it below that. To give a machine less access, give it a service account with a smaller role. Restricted (scoped) keys and sessions are revoked on upgrade.
- Roles come from a deployment roles file.
ROLES_FILEon identity points to a YAML file that maps role slugs to labels, withcreator_role,default_roleand an optionalservice_account_default_role. Roles are on or off for the whole deployment: ifROLES_FILEis unset, every member holds every label (["*"]). An invalid file or unknown keys refuse boot. See docs/roles.md and the starter file compose/roles.yml. - Routes declare
required_labels, notrequired_scopes. The permissions field on the wire islabels. It is always a list and never null. - Org writes in the identity catalog are labeled:
org:write,org:delete,org:members:writeandorg:service-accounts:write. A member whose role lacks the label gets 403, with any of its keys or sessions. added_byandcreated_byare removed from identity requests and responses.- Identity migrations are folded into one schema. No scopes compatibility is left.
- Compose requires
PLAT5_VERSIONfrom the env file. The pin lives only in.env.template.
Added
roleon member, invite and service-account writes. A slug that isn't in the file returns 422.GET /organizations/{organization_id}/roleslists the deployment's roles. It's published at the edge asGET /org/rolesso a console can show a role picker.- A write can't take an org's last
creator_roleholder to zero (422).
Fixed
- gateway: a CORS preflight returns 204 and completes (#15).
- identity: the request log records the status the client actually received (#14).
- route-registry: restore validates like apply, lookalike paths conflict, and paths are canonical (#16).
- route-registry: specific 422s for credentials in a url and for an out-of-range port. The missing-url message no longer mentions
plat5.yml(#19). - docs: a route-config url must be exactly
http://host:port(#17).
Images
ghcr.io/plat5dev/gateway:v0.4.4, ghcr.io/plat5dev/route-registry:v0.4.4, ghcr.io/plat5dev/identity:v0.4.4
Full changelog: v0.3.2...v0.4.4