Skip to main content
Connecting an Azure subscription to NOFire AI enables automatic discovery of your Azure infrastructure and lets NOFire AI query inventory, cost, and policy-compliance data during investigations. Discovery is subscription-wide: NOFire AI reads every supported resource type across all regions in the subscription, with no per-region configuration. NOFire AI authenticates with an Entra ID service principal and requests read-only Azure RBAC roles. NOFire AI never writes to or modifies Azure resources.

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

  1. Open the Entra ID app registrations blade and click New registration.
  2. 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.
  3. Click Register.
  4. On the app’s Overview page, copy the Application (client) ID and the Directory (tenant) ID. You need both in Step 3.
  5. Go to Certificates & secrets → Client secrets → New client secret. Add a description, choose an expiry, and click Add.
  6. Copy the secret Value immediately. Azure shows it only once, and this is the client secret you enter in Step 3.
Client secrets expire. Note the expiry date and update the secret on your NOFire AI connection before it lapses, or discovery and Azure queries will start failing with an authentication error.
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:
If you manage Azure with Terraform, the configuration below creates the application, a client secret, and both role assignments. It requires the azuread and azurerm providers.
Apply, then read the values for Step 3:

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.
  1. Open Subscriptions and select the subscription you are connecting.
  2. Go to Access control (IAM) → Add → Add role assignment.
  3. Select the Reader role, click Next, choose User, group, or service principal, and select your nofireai-readonly application.
  4. Click Review + assign.
  5. 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

Once the connection is saved, NOFire AI validates the service principal, discovers the subscription’s supported resources and the relationships between them, and sets the connection status to READY. You can watch the status on the Connections dashboard.

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

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.
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 Management Reader is missing. Cost and forecast queries need it in addition to Reader.

Multiple subscriptions

Add one connection per subscription. Subscriptions can share a single Entra ID app registration: assign the same service principal the Reader and Cost Management Reader roles on each subscription, then create a connection per subscription using the same tenant ID, client ID, and client secret with a different subscription ID.