Onboard Microsoft Azure
Create an Entra app for CloudPulse, grant management-group Reader (and optional billing), then register the account in CloudPulse with federation — no client secret in production.
Prerequisites
- Entra ID permissions to create an app registration / service principal.
- Management Group Name/Id (GUID or id string — not only the display name).
- CloudPulse tenant admin or editor access at app.cloudpulse.host.
Steps
- Open Accounts → Add Azure. Enter a display name. Note the federation values shown when CloudPulse workers use managed identity (issuer / subject). Leave Billing fields blank if you will configure them later.
-
Download the setup script from the Accounts form
(
cloudpulse-azure-customer-setup.ps1). Run it in PowerShell as a user who can create the app and assign RBAC on the management group. The script is idempotent: it reuses an existing app by AppId/name when present. - Confirm RBAC. Typical grants: Reader on the management group; Cost Management Reader where needed; optional Billing Account / Billing Profile roles for invoices and Cost Management exports; Storage Blob Data Reader on export storage when you enable billing export.
-
Register in CloudPulse. Paste:
- Entra tenant ID
- App (client) ID
- Management Group ID (the Name/Id from the portal or script output)
- Optional billing. On the Billing tab, use Discover exports or paste container/path for Cost Management ActualCost exports. Billing scope is often a billing account, not the management group alone.
- Verify. Once data is available, open Azure Insights tabs (inventory, cost, security). Empty tabs usually mean sync has not finished yet or a role is missing — contact CloudPulse support rather than storing secrets.
You vs CloudPulse support
| You | CloudPulse support |
|---|---|
| Run setup script; enter Entra + MG ids; optional export discover. | Share managed-identity federation IDs; assist with reservation-order Reader loops or Graph permissions when those signals are required. |
API (automation)
Authenticated admins can download the same script:
GET /v1/accounts/azure-setup-script?...
GET /v1/accounts/{account_id}/azure-setup-script
Create/update accounts via /v1/accounts/ (see API reference). Production rejects long-lived azure_client_secret.
MG id vs display name. CloudPulse resolves subscriptions via the management group id. Using only a friendly display name causes empty subscription discovery.