Permissions
The actions that govern container instances, the roles that hold them, and what else a task needs.
Actions
| Action | Allows |
|---|---|
containerinstance/read |
See instances, their components, pods, endpoints, revisions, snapshots and schedule |
containerinstance/write |
Create and change instances and their endpoints, start, stop, restart, re-deploy, roll back, schedule snapshots; includes containerinstance/delete |
containerinstance/delete |
Delete instances |
containerinstance/scale |
Set every component's replica count through the scale route (stsh ci scale) |
containerinstance/createSnapshot |
Take a snapshot |
containerinstance/restoreSnapshot |
Restore a snapshot in place |
containerinstance/deleteSnapshot |
Delete a snapshot |
containerinstance/readLogs |
Read the containers' logs |
containerinstance/exec |
Open a terminal in a pod |
containerinstance/readFiles |
List and download files on persistent volumes |
containerinstance/writeFiles |
Upload, rename, move and delete files on persistent volumes |
containerinstance/access |
Get through the sign-in of an endpoint with Require sign-in |
The last five are data actions: a role grants them only when it lists them as data actions. A terminal and the file actions reach inside the pod, where everything the workload can read is readable, vault secrets included; that is why no reader role has them.
Roles
| Role | See | Change, delete | Snapshots | Logs | Terminal | Files | Signed-in access |
|---|---|---|---|---|---|---|---|
| Reader | Yes | No | No | Yes | No | No | No |
| Apps Reader | Yes | No | No | No | No | No | No |
| Apps Operator | Yes | Yes, and scale | No | No | No | No | No |
| Blueprint Reader | Yes | No | No | Yes | No | No | No |
| Blueprints Operator | Yes | Yes | No | Yes | Yes | Read and write | No |
| Contributor | Yes | Yes, and scale | Take | Yes | Yes | Read and write | Yes |
| Owner | Yes | Yes, and scale | Take, restore, delete | Yes | Yes | Read and write | Yes |
Platform Owner and Platform Contributor hold every action in every boundary; Platform Reader can see instances but has none of the data actions.
Caution
The table shows what the platform allows. Apps Operator also holds Kubernetes
pods/execand read access to pods in the resource group's namespace, where container instances run next to apps, so it needs no terminal permission to get a shell: anyone in the role with direct cluster access cankubectl execinto an instance's containers and read what the workload can, the vault secrets in/secrets/env.jsonincluded. Such a session bypasses the portal's terminal and its checks.
Signed-in access is what gets a person through an endpoint with Require sign-in. Reader,
Blueprint Reader and Blueprints Operator list containerinstance/access among their data actions,
but the sign-in check reads only a role's ordinary actions, so it refuses them — see
Require sign-in.
Assign roles on the boundary or the resource group — see Role assignments.
Important
Two tasks need more than the table shows:
- Changing an instance that uses vault secrets. Every save of such an instance — on the Components or Endpoints tab, through the CLI or the API, and a rollback — grants its identity Secrets Reader on each vault it references again, with your permissions. That grant needs the Owner role, so Contributor, Apps Operator and Blueprints Operator cannot save changes to it. Start, stop, restart, re-deploy and
stsh ci scaledo not make the grant.- Logs and terminal. They need the role assigned on the boundary; see View logs and open a terminal.
What else a task needs
| Task | Also needs |
|---|---|
| Create or change an instance that pulls from a private registry | kernel/deployments/read on the boundary |
| Create or change an instance whose variables reference vault secrets | The Owner role on each referenced vault, its resource group or the boundary — assigned to you directly or activated through just-in-time access; Owner held through a group does not count — so that the instance's identity can be given Secrets Reader |
| Read the live log stream | kernel/crates/readLogs on the boundary |
| Open a terminal | kernel/crates/exec on the boundary |
| Delete an instance deployed from a blueprint | secretvault/delete on its vault |