Prerequisites
- An Azure subscription, and its subscription ID.
- Permission to register an application in your Entra ID tenant (Application Developer or higher).
- Permission to assign RBAC roles on the subscription (Owner or User Access Administrator).
Step 1: Register an application in Entra ID
Create the app registration in the Azure portal
Create the app registration in the Azure portal
- Open the Entra ID app registrations blade and click New registration.
- Enter a name (for example
nofireai-readonly), leave Supported account types on Accounts in this organizational directory only, and leave the redirect URI empty. NOFire AI signs in with client credentials, not a browser redirect. - Click Register.
- On the app’s Overview page, copy the Application (client) ID and the Directory (tenant) ID. You need both in Step 3.
- Go to Certificates & secrets → Client secrets → New client secret. Add a description, choose an expiry, and click Add.
- Copy the secret Value immediately. Azure shows it only once, and this is the client secret you enter in Step 3.
Alternative: create the service principal with the Azure CLI
Alternative: create the service principal with the Azure CLI
This single command registers the application, creates a secret, and assigns the Reader role at subscription scope:The output carries three of the four values you need in Step 3:Then add the cost role from Step 2:
Alternative: create the service principal with Terraform
Alternative: create the service principal with Terraform
If you manage Azure with Terraform, the configuration below creates the application, a client secret, and both role assignments. It requires the Apply, then read the values for Step 3:
azuread and azurerm providers.Step 2: Assign read-only roles
Assign these built-in roles to the service principal at subscription scope. If you used the CLI or Terraform path above, they are already assigned.Assign the roles in the Azure portal
Assign the roles in the Azure portal
- Open Subscriptions and select the subscription you are connecting.
- Go to Access control (IAM) → Add → Add role assignment.
- Select the Reader role, click Next, choose User, group, or service principal, and select your
nofireai-readonlyapplication. - Click Review + assign.
- Repeat for Cost Management Reader.
Azure RBAC reader roles grant access by scope (subscription, resource group, or resource), not by data category, so a role granted at subscription scope can read every resource beneath it. To narrow what NOFire AI sees, assign the roles at resource-group scope instead and connect one subscription per environment.
Step 3: Add the Azure connection to NOFire AI
What NOFire AI discovers
Discovered resources join the same context graph as your Kubernetes state from NOFire Edge and any other connected cloud or observability source, so an investigation can follow a failing workload through to the Azure resources behind it.
What NOFire AI queries during investigations
Troubleshooting
Connection test fails with an authentication error
Connection test fails with an authentication error
Confirm the tenant ID, client ID, and client secret all belong to the same app registration, and that the secret has not expired. Re-copy the secret Value, not the secret ID. The portal displays both, and only the value works.
Connection saves but discovers nothing
Connection saves but discovers nothing
The service principal is authenticating but has no Reader assignment on that subscription. Check Access control (IAM) → Role assignments on the subscription and confirm the assignment is at subscription scope, not on a single resource group that holds no supported resources.
Cost queries fail while inventory works
Cost queries fail while inventory works
Cost Management Reader is missing. Cost and forecast queries need it in addition to Reader.

