- 26 Sep 2025
- 3 Minutes to read
- Print
- DarkLight
- PDF
Permissions for Service Principal
- Updated on 26 Sep 2025
- 3 Minutes to read
- Print
- DarkLight
- PDF
Below is a list of the permissions Turbo360 requires for the App Registration used to connect to Azure.
Minimum Permissions
Azure RBAC Permission | Allows you to use below features | Notes |
---|---|---|
Reader |
|
|
Recommended Additional Permissions
The below permissions are recommended to use with Turbo360.
Azure RBAC Permission | Allows you to use below features | Notes |
---|---|---|
Reservation Reader |
|
|
Savings Plan Reader |
|
|
Optional Permissions (depending on features you will use)
The below features require additional permissions. These features can be chosen to be used as an optional feature.
Feature | Required Permission | Notes | Alternative Approach |
---|---|---|---|
Advanced Rightsizing - Apply Now |
|
|
|
Advanced Rightsizing - Schedule to Apply out of hours |
|
|
|
Scheduler |
|
|
|
Workflow - Stop VM |
|
|
|
Workflow - Storage workflows |
|
|
Least Privilege Resource Level Permissions
While some customers may choose to give the app registration Contributor permission to the resource they wish to manage we prefer a least priviledge approach. To achieve this you would do the following:
Assign the lowest RBAC permission to achieve the job
Assign the permission at resource level
These permissions would be applicable to the following features in Turbo360 you may use:
Advanced Rightsizing Recommendations (apply now or schedule action)
Workflows
Scheduler
Below are a list of the permissions used for each of the key actions.
Resource Type | Action | Required provider operation(s) | Smallest built-in role(s) |
---|---|---|---|
VM | Turn on |
| Virtual Machine Contributor |
VM | Turn off (deallocate) |
| Virtual Machine Contributor |
VM | Resize (change size) |
| Virtual Machine Contributor |
VM Scale set | Turn on (set) |
| Virtual Machine Scale Set Contributor or VM Contributor |
VM Scale set | Turn off (set) |
| VMSS Contributor or VM Contributor |
VM Scale set | Change SKU/size (model) |
| VMSS Contributor |
App Service Plan | Resize (SKU/size/instances) |
| Web Plan Contributor |
SQL Database | Resize (DTU/vCore, SLO) |
| SQL DB Contributor |
SQL Elastic Pool | Resize |
| SQL Elastic Pool Contributor |
SQL Managed Instance | Resize (vCores/storage) |
| SQL Managed Instance Contributor |
Data Factory | Disable pipeline trigger |
| Data Factory Contributor |
Data Factory | Enable pipeline trigger |
| Data Factory Contributor |
Synapse (pipelines) | “Pause” (disable triggers) | Synapse workspace RBAC: enable/disable via Synapse Contributor / Artifact Publisher | (Synapse roles, not Azure RBAC) |
Logic App (Consumption) | Enable workflow |
| Logic App Operator |
Logic App (Consumption) | Disable workflow |
| Logic App Operator |
Cosmos DB – Table API | Change table RU/s |
| DocumentDB Account Contributor |
Cosmos DB – SQL (NoSQL) container | Change container RU/s |
| DocumentDB Account Contributor |
Cosmos DB – SQL (NoSQL) database | Change database RU/s |
| DocumentDB Acc |
Custom Role
If you wanted to create a custom role for Turbo360 to be able to perform rightsizing and scheduling activities then you might consider the following example.
{
"Name": "Turbo360 Rightsizing and Scheduler",
"IsCustom": true,
"Description": "Least-privilege ops to start/stop/resize For Turbo360",
"Actions": [
// ---- Compute: Virtual Machines (Resize) ----
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
// ---- Compute: Virtual Machines (Stop / Start) ----
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/deallocate/action",
// ---- Compute: Virtual Machine Scale Sets (Stop / Start) ----
"Microsoft.Compute/virtualMachineScaleSets/start/action",
"Microsoft.Compute/virtualMachineScaleSets/deallocate/action",
// ---- Compute: Virtual Machine Scale Sets (Resize) ----
"Microsoft.Compute/virtualMachineScaleSets/write",
"Microsoft.Compute/virtualMachineScaleSets/scale/action",
// ---- App Service Plan (Resize) ----
"Microsoft.Web/serverfarms/write",
// ---- Azure SQL (Resize) ----
"Microsoft.Sql/servers/databases/write",
// ---- Azure SQL Elastic Pool (Resize) ----
"Microsoft.Sql/servers/elasticPools/write",
// ---- Azure SQL Managed Instance (Resize) ----
"Microsoft.Sql/managedInstances/write",
// ---- Data Factory (Stop / Start Triggers) ----
"Microsoft.DataFactory/factories/triggers/start/action",
"Microsoft.DataFactory/factories/triggers/stop/action",
// ---- Logic Apps Consumption (Enable / Disable) ----
"Microsoft.Logic/workflows/read",
"Microsoft.Logic/workflows/enable/action",
"Microsoft.Logic/workflows/disable/action",
// ---- Azure Cosmos DB (RU changes) ----
"Microsoft.DocumentDB/databaseAccounts/read",
"Microsoft.DocumentDB/databaseAccounts/tables/throughputSettings/read",
"Microsoft.DocumentDB/databaseAccounts/tables/throughputSettings/write",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/throughputSettings/read",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/throughputSettings/write",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/throughputSettings/read",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/throughputSettings/write"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<SUBSCRIPTION_ID>"
// Optionally: "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RG_NAME>"
]
}