Roles and permissions#
This page is the reference for authorisation in Astraeus: organisation roles, workspace roles, and what each allows. For how to give people roles, see Members, roles and SSO.
Two layers#
| Layer | Who | Roles | Applies to |
|---|---|---|---|
| Organisation | People in an organisation | owner, admin, member |
The organisation: members, workspaces, clusters and machines, SSO, alerts, prices |
| Workspace | People in a workspace | admin, editor, viewer, auditor |
What is inside the workspace on each cluster |
When you act in a workspace — from the console, astra or the API — Astraeus
authorises the request as your workspace role, inside that workspace
only: paths must name objects in it, bodies may name and reference only
objects in it, and listings and watches show only it.
Organisation owners and admins act with the workspace role admin in every
workspace of the organisation.
Organisation roles#
| Capability | owner | admin | member |
|---|---|---|---|
| Read the organisation, its members, its clusters and their prices | ✓ | ✓ | ✓ |
| Usage of the workspaces they belong to | ✓ | ✓ | ✓ |
| Usage of every workspace, and of work outside workspaces | ✓ | ✓ | |
| Rename the organisation | ✓ | ✓ | |
Invite (admin, member), list and revoke invitations |
✓ | ✓ | |
Change roles between admin and member; remove non-owners |
✓ | ✓ | |
Grant or revoke owner; remove owners |
✓ | ||
| Create and delete workspaces; give them access to clusters and set their terms | ✓ | ✓ | |
| Use Astraeus Cloud; enrollment tokens (add machines); cordon, label, upgrade and remove machines; data locations; reservations; clear GPU faults | ✓ | ✓ | |
| Set cluster prices | ✓ | ✓ | |
| Single sign-on, audit log, alerts, event streams, organisation guardrails and marketplace settings | ✓ | ✓ | |
| Delete the organisation (only without clusters) | ✓ |
Refusals: 403 ORG_ADMIN_REQUIRED, 403 ORG_OWNER_REQUIRED; outsiders get
404 ORG_NOT_FOUND.
Workspace roles in the console#
Besides the permissions inside a workspace on a cluster (below), these workspace actions are checked by the console:
| Action | viewer | editor | admin | auditor |
|---|---|---|---|---|
| See the workspace, its people, its clusters and their terms | ✓ | ✓ | ✓ | ✓ |
| See the workspace's events and run list | ✓ | ✓ | ✓ | ✓ |
| Use run templates | ✓ | ✓ | ✓ | ✓ |
| Save and delete run templates | ✓ | ✓ | ||
| Add, change and remove people; rename the workspace; event retention; hosted inference gateway | ✓ | |||
| Remove themselves from the workspace | ✓ | ✓ | ✓ | ✓ |
Refusals: 403 WORKSPACE_ADMIN_REQUIRED, 403 WORKSPACE_EDITOR_REQUIRED;
someone outside the workspace gets 404 WORKSPACE_NOT_FOUND.
How a request maps to a verb and a resource#
Astraeus names every request with a verb and a resource, as
Kubernetes does. Paths are relative to a workspace's cluster path
(…/clusters/{cluster}/api; see REST API).
| Request | Verb |
|---|---|
GET (or HEAD) on a collection, /jobs |
list |
GET on a collection with ?watch=true (or watch=1) |
watch |
GET on an object, /jobs/train |
get |
POST |
create |
PUT, PATCH |
update |
DELETE |
delete |
Anything under /<collection>/<name>/proxy/… |
proxy |
| Path | Resource |
|---|---|
/<collection> and /<collection>/<name> |
<collection> |
/<collection>/<name>/<sub>… |
<collection>/<sub>, for example tasks/logs, cronjobs/trigger |
/metrics/<kind>… |
metrics/<kind> |
The resources' product names are aliases of their API names, and
authorization always sees the API name: runs is jobs, workers is
tasks, machines is nodes, drives is datavolumes, mounts is
datavolume-claims, data-sources is connectors, credentials is
external-secrets, schedules is cronjobs, replica-groups is
scaling-groups, reservations is node-reservations.
A rule names verbs and resources:
- A resource
jobscovers the collection and its objects, not its subresources.jobs/*covers every subresource.*covers everything. - The verbs are
get,list,watch,create,update,delete,proxyand*. Read verbs never includeproxy.
Permissions inside a workspace#
A request in a workspace passes two checks: first, whether the path is
available inside a namespace at all; then, whether the role allows the verb
on the resource. A refusal names which: 403 NAMESPACE_FORBIDDEN or
403 RBAC_FORBIDDEN (for example
role viewer may not create jobs in ws-3f9a1c07b2e4).
Astraeus resources#
✓ allowed · — refused. "Read" is get, list and watch.
| Resource | Product | viewer | editor | admin | auditor |
|---|---|---|---|---|---|
jobs |
Runs | read | ✓ | ✓ | — |
jobs/external-accesses |
A run's external access | get |
✓ | ✓ | — |
tasks |
Workers | read | ✓ | ✓ | — |
tasks/logs, tasks/trace, tasks/activity |
A worker's log, tool-call trace, outbound activity | get |
✓ | ✓ | — |
tasks/stop, tasks/requeue |
Stop or requeue a worker | — | ✓ | ✓ | — |
tasks/proxy |
Reach a worker's port through Astraeus | — | ✓ | ✓ | — |
cronjobs, cronjobs/pause, cronjobs/resume, cronjobs/trigger |
Schedules | read (not the actions) | ✓ | ✓ | — |
scaling-groups, …/pause, …/resume, …/activate |
Replica groups | read (not the actions) | ✓ | ✓ | — |
endpoints |
Endpoints | read | ✓ | ✓ | — |
endpoints/proxy |
Reach an endpoint through Astraeus | — | ✓ | ✓ | — |
datavolumes |
Drives | read | ✓ | ✓ | — |
datavolume-claims |
Mounts | read | read | read | — |
connectors |
Data sources | read | ✓ | ✓ | — |
connectors/index, /files, /partitions, /profile, /diff |
A data source's catalog | get |
✓ | ✓ | — |
connectors/reindex, connectors/scan |
Re-index or scan a data source | — | ✓ | ✓ | — |
external-secrets |
Credentials (references only; values never reach Astralyx) | read | ✓ | ✓ | — |
external-secrets/resync |
Fetch a credential again | — | ✓ | ✓ | — |
nodes, nodes/tasks |
Machines in the workspace's pools, and what holds their GPUs | read | read | read | — |
gpus |
The GPUs of those machines | list |
list |
list |
— |
metrics/… |
Machine series, and the workspace's run and worker series | read | read | read | — |
usage |
The workspace's hourly usage | list |
list |
list |
list |
namespaces (its own) |
The workspace's namespace and terms | get |
get |
get |
get |
interactive (interactive/<worker>/proxy) |
An interactive run's server | — | ✓ | ✓ | — |
Always refused inside a workspace, whatever the role: writes to machines, mounts and namespaces; reservations; enrollment tokens; another workspace's objects. Organisation admins manage machines, reservations and enrollment through the console's organisation pages and cluster endpoints. On machines, other workspaces' work is shown only as taken capacity — its GPUs and size, never its name or owner.
Other products#
The same roles cover Eos, Anemoi and Hesperus resources in the workspace. In short: viewers read; editors write, except that agent guardrails, agent budgets and retention policies are written by admins only (editors read them); auditors read the agents' governance record (agents and their versions, runs, costs, receipts, traffic and quality; approvals, guardrails, budgets and costs; flows and executions; eval runs; retention policies; usage) and create, download and delete evidence packs, which only admins and auditors may touch.
Machines#
Machines are not people and have no role. A machine's credential lets it act only for itself: receive the work placed on it, report on itself and its own workers, and answer requests addressed to it. It cannot read or change anything in a workspace. See Security model.