Skip to content

Nova Policies

Introduction

This document presents the permissions available for reader and member roles on the Nova service (compute management) of Infomaniak Public Cloud, based on OpenStack default policies.

Context

Application Credentials must be created with the appropriate role according to functional needs. This matrix helps you choose the right role.

Legend

Symbol Meaning
✅ Allowed - The policy explicitly permits this action
❌ Forbidden - The policy explicitly denies this action
🔍 Conditional - Allowed based on ownership or project membership

Server Management

Operation Endpoint Policy Reader Member Conditions
List servers GET /servers os_compute_api:servers:index ✅ ✅ Project only
List servers (detailed) GET /servers/detail os_compute_api:servers:detail ✅ ✅ Project only
Show server GET /servers/{id} os_compute_api:servers:show ✅ ✅ Project only
Create server POST /servers os_compute_api:servers:create ❌ ✅ Project member
Update server PUT /servers/{id} os_compute_api:servers:update ❌ ✅ Project member
Delete server DELETE /servers/{id} os_compute_api:servers:delete ❌ ✅ Project member

Server Actions

Operation Endpoint Policy Reader Member Conditions
Start server POST /servers/{id}/action (os-start) os_compute_api:servers:start ❌ ✅ Project member
Stop server POST /servers/{id}/action (os-stop) os_compute_api:servers:stop ❌ ✅ Project member
Reboot server POST /servers/{id}/action (reboot) os_compute_api:servers:reboot ❌ ✅ Project member
Pause server POST /servers/{id}/action (pause) os_compute_api:os-pause-server:pause ❌ ✅ Project member
Unpause server POST /servers/{id}/action (unpause) os_compute_api:os-pause-server:unpause ❌ ✅ Project member
Suspend server POST /servers/{id}/action (suspend) os_compute_api:os-suspend-server:suspend ❌ ✅ Project member
Resume server POST /servers/{id}/action (resume) os_compute_api:os-suspend-server:resume ❌ ✅ Project member
Lock server POST /servers/{id}/action (lock) os_compute_api:os-lock-server:lock ❌ ✅ Project member
Unlock server POST /servers/{id}/action (unlock) os_compute_api:os-lock-server:unlock ❌ ✅ Project member

Server Lifecycle

Operation Endpoint Policy Reader Member Conditions
Resize server POST /servers/{id}/action (resize) os_compute_api:servers:resize ❌ ✅ Project member
Confirm resize POST /servers/{id}/action (confirmResize) os_compute_api:servers:confirm_resize ❌ ✅ Project member
Revert resize POST /servers/{id}/action (revertResize) os_compute_api:servers:revert_resize ❌ ✅ Project member
Rebuild server POST /servers/{id}/action (rebuild) os_compute_api:servers:rebuild ❌ ✅ Project member
Rescue server POST /servers/{id}/action (rescue) os_compute_api:os-rescue ❌ ✅ Project member
Unrescue server POST /servers/{id}/action (unrescue) os_compute_api:os-unrescue ❌ ✅ Project member
Shelve server POST /servers/{id}/action (shelve) os_compute_api:os-shelve:shelve ❌ ✅ Project member
Unshelve server POST /servers/{id}/action (unshelve) os_compute_api:os-shelve:unshelve ❌ ✅ Project member
Migrate server POST /servers/{id}/action (migrate) os_compute_api:os-migrate-server:migrate ❌ ✅ Project member

Server Images & Backups

Operation Endpoint Policy Reader Member Conditions
Create image POST /servers/{id}/action (createImage) os_compute_api:servers:create_image ❌ ✅ Project member
Create backup POST /servers/{id}/action (createBackup) os_compute_api:os-create-backup ❌ ✅ Project member

Server Information

Operation Endpoint Policy Reader Member Conditions
List actions GET /servers/{id}/os-instance-actions os_compute_api:os-instance-actions:list ✅ ✅ Project only
Show action GET /servers/{id}/os-instance-actions/{req_id} os_compute_api:os-instance-actions:show ✅ ✅ Project only
Get console output POST /servers/{id}/action (os-getConsoleOutput) os_compute_api:os-console-output ❌ ✅ Project member
Get remote console POST /servers/{id}/remote-consoles os_compute_api:os-remote-consoles ❌ ✅ Project member
Show topology GET /servers/{id}/topology compute:server:topology:index ✅ ✅ Project only

Server Metadata

Operation Endpoint Policy Reader Member Conditions
List metadata GET /servers/{id}/metadata os_compute_api:server-metadata:index ✅ ✅ Project only
Show metadata GET /servers/{id}/metadata/{key} os_compute_api:server-metadata:show ✅ ✅ Project only
Create metadata POST /servers/{id}/metadata os_compute_api:server-metadata:create ❌ ✅ Project member
Update metadata PUT /servers/{id}/metadata/{key} os_compute_api:server-metadata:update ❌ ✅ Project member
Replace metadata PUT /servers/{id}/metadata os_compute_api:server-metadata:update_all ❌ ✅ Project member
Delete metadata DELETE /servers/{id}/metadata/{key} os_compute_api:server-metadata:delete ❌ ✅ Project member

Server Tags

Operation Endpoint Policy Reader Member Conditions
List tags GET /servers/{id}/tags os_compute_api:os-server-tags:index ✅ ✅ Project only
Show tag GET /servers/{id}/tags/{tag} os_compute_api:os-server-tags:show ✅ ✅ Project only
Add tag PUT /servers/{id}/tags/{tag} os_compute_api:os-server-tags:update ❌ ✅ Project member
Replace tags PUT /servers/{id}/tags os_compute_api:os-server-tags:update_all ❌ ✅ Project member
Delete tag DELETE /servers/{id}/tags/{tag} os_compute_api:os-server-tags:delete ❌ ✅ Project member
Delete all tags DELETE /servers/{id}/tags os_compute_api:os-server-tags:delete_all ❌ ✅ Project member

Networking

Operation Endpoint Policy Reader Member Conditions
List interfaces GET /servers/{id}/os-interface os_compute_api:os-attach-interfaces:list ✅ ✅ Project only
Show interface GET /servers/{id}/os-interface/{port_id} os_compute_api:os-attach-interfaces:show ✅ ✅ Project only
Attach interface POST /servers/{id}/os-interface os_compute_api:os-attach-interfaces:create ❌ ✅ Project member
Detach interface DELETE /servers/{id}/os-interface/{port_id} os_compute_api:os-attach-interfaces:delete ❌ ✅ Project member
List server IPs GET /servers/{id}/ips os_compute_api:ips:index ✅ ✅ Project only
Show network IPs GET /servers/{id}/ips/{network} os_compute_api:ips:show ✅ ✅ Project only

Volume Attachments

Operation Endpoint Policy Reader Member Conditions
List attachments GET /servers/{id}/os-volume_attachments os_compute_api:os-volumes-attachments:index ✅ ✅ Project only
Show attachment GET /servers/{id}/os-volume_attachments/{vol_id} os_compute_api:os-volumes-attachments:show ✅ ✅ Project only
Attach volume POST /servers/{id}/os-volume_attachments os_compute_api:os-volumes-attachments:create ❌ ✅ Project member
Update attachment PUT /servers/{id}/os-volume_attachments/{vol_id} os_compute_api:os-volumes-attachments:update ❌ ✅ Project member
Detach volume DELETE /servers/{id}/os-volume_attachments/{vol_id} os_compute_api:os-volumes-attachments:delete ❌ ✅ Project member

SSH Key Management

Operation Endpoint Policy Reader Member Conditions
List keypairs GET /os-keypairs os_compute_api:os-keypairs:index 🔍 🔍 Own keypairs
Show keypair GET /os-keypairs/{name} os_compute_api:os-keypairs:show 🔍 🔍 Own keypairs
Create keypair POST /os-keypairs os_compute_api:os-keypairs:create 🔍 🔍 Own keypairs
Delete keypair DELETE /os-keypairs/{name} os_compute_api:os-keypairs:delete 🔍 🔍 Own keypairs

Keypair Access

Keypair operations are restricted to the user who owns them (user_id:%(user_id)s), regardless of role.


Server Groups

Operation Endpoint Policy Reader Member Conditions
List server groups GET /os-server-groups os_compute_api:os-server-groups:index ✅ ✅ Project only
Show server group GET /os-server-groups/{id} os_compute_api:os-server-groups:show ✅ ✅ Project only
Create server group POST /os-server-groups os_compute_api:os-server-groups:create ❌ ✅ Project member
Delete server group DELETE /os-server-groups/{id} os_compute_api:os-server-groups:delete ❌ ✅ Project member

Flavors

Operation Endpoint Policy Reader Member Conditions
Show extra spec GET /flavors/{id}/os-extra_specs/{key} os_compute_api:os-flavor-extra-specs:show ✅ ✅ Project only
List extra specs GET /flavors/{id}/os-extra_specs/ os_compute_api:os-flavor-extra-specs:index ✅ ✅ Project only

System Information

Operation Endpoint Policy Reader Member Conditions
Show limits GET /limits os_compute_api:limits ✅ ✅ All users
Show quotas GET /os-quota-sets/{tenant_id} os_compute_api:os-quota-sets:show ✅ ✅ Project only
Show quota details GET /os-quota-sets/{tenant_id}/detail os_compute_api:os-quota-sets:detail ✅ ✅ Project only
Show default quotas GET /os-quota-sets/{tenant_id}/defaults os_compute_api:os-quota-sets:defaults ✅ ✅ All users
List extensions GET /extensions os_compute_api:extensions ✅ ✅ All users
Show extension GET /extensions/{alias} os_compute_api:extensions ✅ ✅ All users
List availability zones GET /os-availability-zone os_compute_api:os-availability-zone:list ✅ ✅ All users

Capabilities Summary by Role

Granted permissions:

  • ✅ View all project servers and details
  • ✅ Access server metadata, tags, and configuration
  • ✅ View network interfaces and IP addresses
  • ✅ Access server actions history and topology
  • ✅ View volume attachments and server groups
  • ✅ View quotas, limits, and system information
  • ✅ Manage own SSH keypairs

Limitations:

  • ❌ No server creation, modification, or deletion
  • ❌ No server actions (start, stop, reboot, etc.)
  • ❌ No metadata, tags, or attachment management
  • ❌ Limited to read-only operations

Granted permissions:

  • ✅ All Reader capabilities
  • ✅ Create, update, and delete servers
  • ✅ Perform all server actions and lifecycle operations
  • ✅ Manage server metadata and tags
  • ✅ Create and manage server images and backups
  • ✅ Attach/detach volumes and network interfaces
  • ✅ Manage server groups
  • ✅ Access console and remote console

Limitations:

  • ❌ No administrative functions
  • ❌ Limited to project-scoped operations
  • ❌ Cannot access other projects' resources

Usage Examples

Server Monitoring Application

Use case: Monitoring dashboard, alerting system

Recommended role: reader

# Application Credential
role: reader

# Possible actions
- openstack server list
- openstack server show <server-id>
- openstack server action list <server-id>
- openstack quota show

Server Management Application

Use case: CI/CD, infrastructure automation, deployment tools

Recommended role: member

# Application Credential
role: member

# Possible actions
- openstack server create --flavor m1.small --image ubuntu my-server
- openstack server start <server-id>
- openstack server set --property environment=production <server-id>
- openstack server image create <server-id> my-backup
- openstack volume attach <volume-id> <server-id>

Context Variables

Policies use the following variables to determine authorizations:

Variable Description
%(project_id)s Current user's project ID
%(user_id)s Current user ID (for keypairs)
%(server_id)s Target server ID

Important Notes

Best Practices

  1. Principle of least privilege: Use the reader role for monitoring and read-only operations
  2. Project isolation: Members can only manage servers within their project
  3. Keypair management: SSH keypairs are user-scoped, not project-scoped
  4. Application Credentials: Create specific credentials per use case and rotate regularly