Permission Models
Subscription-Level (Default)
Simplest approach. The Service Principal has roles at the subscription level. Required for initial cluster provisioning.
Resource-Group-Scoped
After initial deployment, scope permissions down to specific resource groups for tighter security.
Option 1: Subscription-Level Permissions (Default)
This is the default and simplest approach. During initial cluster setup, the Service Principal is assigned the following roles at the subscription level:| Role | Purpose |
|---|---|
| Contributor | Create and manage all Azure resources (AKS, VMs, VNets, Load Balancers, Storage, etc.) |
| User Access Administrator | Assign roles to managed identities created by AKS |
Subscription-level permissions are required for the initial cluster provisioning. You can scope them down to resource groups after the first successful deployment.
Option 2: Resource-Group-Scoped Permissions
After the initial cluster deployment completes successfully, you can restrict the Service Principal permissions to only the specific resource groups that Qovery manages. This follows the principle of least privilege.Steps to Scope Permissions
Complete Initial Deployment
Deploy your cluster with subscription-level permissions (Option 1). Wait for the cluster to reach Running status in the Qovery console.
Identify the Resource Groups
Qovery creates two resource groups during deployment:Main resource group:You can find the cluster short ID in the Qovery console on the cluster settings page.Node resource group (managed by AKS):Qovery automatically sets this deterministic name during cluster creation.
Pre-Register Required Resource Providers
Before removing subscription-level permissions, you must pre-register the required Azure resource providers. See the Resource Provider Registration section below.
Remove Subscription-Level Role Assignments
In the Azure Portal:
- Go to Subscriptions > select your subscription
- Click Access control (IAM)
- Click Role assignments
- Find the Qovery Service Principal entries
- Remove both the Contributor and User Access Administrator role assignments at subscription level
Add Resource-Group-Scoped Roles
For each of the two resource groups (main and node), add the following roles:
- Go to the resource group in Azure Portal
- Click Access control (IAM)
- Click Add > Add role assignment
- Assign Contributor role to the Qovery Service Principal
- Repeat to assign User Access Administrator role
Using Azure CLI
You can also scope permissions using the Azure CLI:Pre-Register Required Azure Resource Providers
When using resource-group-scoped permissions, the Service Principal cannot register resource providers at the subscription level. You must pre-register them as a one-time admin operation before scoping down permissions.Required Resource Providers
| Resource Provider | Purpose |
|---|---|
Microsoft.ContainerService | AKS cluster management |
Microsoft.Network | Virtual networks, load balancers, NAT gateways |
Microsoft.Compute | Virtual machine scale sets for node pools |
Microsoft.Storage | Managed disks and storage accounts |
Microsoft.ManagedIdentity | Managed identities used by AKS |
Microsoft.Authorization | Role assignments for managed identities |
Microsoft.OperationsManagement | Container Insights and monitoring solutions |
Microsoft.OperationalInsights | Log Analytics workspaces |
Registration Commands
Run these commands in Azure Cloud Shell (Bash) or any terminal with the Azure CLI installed:Verify Registration Status
Check that all providers are registered:Registered. Registration can take a few minutes to complete.
Entra ID Requirements
Qovery requires the Cloud Application Administrator role in Microsoft Entra ID (formerly Azure Active Directory) to create and manage application registrations.What Qovery Uses Entra ID For
| Action | Description |
|---|---|
| Application Registration | Creates an App Registration for authentication with your Azure subscription |
| Short-Lived Credentials | Generates credentials with a 4-hour expiration for each deployment |
| No Stored Secrets | No long-lived secrets are stored; credentials are regenerated on demand |
The 4-hour credential expiration provides strong security by limiting the window of exposure. Credentials are automatically regenerated for each deployment operation.
Node Resource Group Naming
Qovery automatically sets the AKS node resource group name to a deterministic value:The node resource group name is set automatically by Qovery and cannot be customized. This ensures a consistent and predictable naming convention across all Qovery-managed AKS clusters.
Troubleshooting
Deployment fails after scoping permissions
Deployment fails after scoping permissions
Symptoms: Cluster update or application deployment fails with authorization errors.Solutions:
- Verify that both Contributor and User Access Administrator roles are assigned on both resource groups
- Check that all required resource providers are registered (see Pre-Register Required Azure Resource Providers)
- Ensure the Service Principal object ID matches the one used by Qovery
- Wait a few minutes after assigning roles — Azure role assignments can take up to 5 minutes to propagate
Resource provider registration errors
Resource provider registration errors
Symptoms: Errors mentioning resource provider not registered.Solutions:
- Re-register the missing resource provider using the commands above
- Resource provider registration requires subscription-level access — use a subscription admin to run the registration
- Verify registration status with
az provider show --namespace <provider> --query "registrationState"
Cannot identify the node resource group
Cannot identify the node resource group
Symptoms: You cannot find the AKS node resource group in the Azure Portal.Solutions:
- In the Azure Portal, go to your AKS cluster resource
- Under Properties, look for the Node resource group field
- Alternatively, run:
az aks show --resource-group qovery-<cluster-short-id> --name <cluster-name> --query "nodeResourceGroup" -o tsv
Entra ID permission errors
Entra ID permission errors
Symptoms: Errors related to application registration or credential creation.Solutions:
- Verify the service principal has Cloud Application Administrator role in Entra ID
- Check that the Entra ID tenant matches the one configured in Qovery
- Contact your Azure AD administrator to grant the required Entra ID role