Skip to content
Browse the documentation

Connect your providers

Connect Azure

Read Azure spend, Azure OpenAI included, from a Cost Management export in FOCUS, and make tags explain who spent it.

CostReveal reads Azure spend from a Cost Management export in FOCUS, the FinOps Foundation's open cost format, written to a storage container in your own subscription. Nothing is installed in your workloads, no secret of yours is exchanged, and CostReveal can read that container and nothing else.

What you need

  • A billing account or billing profile under an Enterprise Agreement or a Microsoft Customer Agreement. FOCUS exports are not offered for pay as you go subscriptions bought on their own.
  • Permission to create Cost Management exports at that scope, and a storage account to write to.
  • A Microsoft Entra administrator, to consent to CostReveal's application in your tenant.
  • An owner or admin role in CostReveal.

Connect

  1. In Cost Management, at the billing account or billing profile, create an export of Cost and usage details (FOCUS), daily for the month to date, in Parquet or CSV, with overwrite on. Its first run can take up to a day.
  2. In CostReveal, go to Connections and choose Connect Azure. It shows CostReveal's application and a consent link for your tenant. An administrator opens the link and consents; the application then exists in your tenant with no access to anything.
  3. Grant the application Storage Blob Data Reader on the export's container, with the command shown, filled in as you type the storage account and container.
  4. Optionally, let CostReveal check every month against Cost Management's own total: grant the application Cost Management Reader on a subscription, or a billing reader role on the billing account or profile, and enter that scope.
  5. Optionally, let CostReveal read Azure Advisor's cost recommendations for Insights: grant the application Cost Management Reader on each subscription they should come from. It reads them once a day, in every subscription it may, and changes nothing.
  6. Enter the tenant ID, the storage account, container, directory and export name, and choose Verify and connect. CostReveal reads the export before saving anything, and points at the field to fix if it cannot.

Cost Management runs the export once a day, and CostReveal reads it every four hours. For the first five days of a month Azure also rewrites the month before with its late charges, and CostReveal records them as corrections. CostReveal reads every month the export holds, however old: the months it has run for, from the one it was created in.

To stop, remove the application's access to the container, or remove the application from your tenant. CostReveal then keeps every figure already read and tells you new data has stopped.

How spend is explained

  • Service comes from Azure, so it is DIRECT. Each line also keeps its meter, region and resource.
  • Team, feature and customer come from tags, read with the project's tag keys, as for AWS. Tags on a resource group or subscription reach costs once you turn on tag inheritance in Cost Management.
  • Azure OpenAI. Its spend is shown by service and meter. Azure's export names models only in meter text, so Azure spend has no model in CostReveal, and usage data does not divide it.

Spend that no tag names is shown as unknown, never spread across teams.

How figures are checked

  • Every line is recorded exactly as the export states its billed cost, for the billing period it names. Credits, tax and purchases are kept as their own kinds of charge, and a correction to an earlier period is its own line.
  • Each month's newest run is read once. A run that changes a month restates exactly the lines it changed, and keeps what was said before.
  • With Cost Management Reader granted, each month is compared with Cost Management's own total for the same usage. While the month is open a difference is pending; once the invoice is issued it is flagged. Without it, CostReveal says only that every amount is attributed.

Removing the connection

Removing the connection under Connections deletes every figure it brought in from the project, and its archived reports are deleted within a day. Remove the application's access, or the application itself, in Azure too.