Skip to main content

Microsoft Azure Integration

Cloud ex Machina (CXM) connects to your Azure tenant to provide FinOps analysis, cost optimization recommendations, and infrastructure insights.

Architecture​

CXM uses a Service Principal with read-only access to collect data from three areas:

ComponentPurposeData Collected
Asset DiscoveryInfrastructure inventoryAll Azure resources across subscriptions
Billing ExportCost analysisCost Management export files (CSV/Parquet)
Activity LogsChange trackingAdministrative operations and audit trail

Key Concepts​

Service Principal​

CXM authenticates using an Azure AD Application with an associated Service Principal. This identity is granted read-only roles to access your resources.

Scope Options​

You can grant CXM access at different levels:

  • Single Subscription: Access to one specific subscription
  • Multiple Subscriptions: Access to a list of subscriptions
  • All Subscriptions: Access to all subscriptions in the tenant (with optional exclusions)
  • Management Group: Access at management group level (inherits to all child subscriptions)

Storage Accounts​

CXM reads cost and activity data from storage accounts where Azure exports this information:

  • Billing Exports: Storage account containing Cost Management exports
  • Activity Logs: Storage account receiving diagnostic settings logs

These storage accounts typically already exist in your environment. CXM only needs read access to them.

Prerequisites​

Before starting the setup, ensure you have:

Azure Permissions​

  • Azure AD: Permission to create App Registrations (or Global Administrator for Directory Reader role)
  • Subscriptions: Owner or User Access Administrator on target subscriptions
  • Storage Accounts: Reader access to billing and activity log storage accounts

Existing Resources​

Identify the following in your environment:

ResourceHow to Find
Billing Export Storage AccountAzure Portal > Cost Management > Exports
Activity Log Storage AccountAzure Portal > Monitor > Activity Log > Diagnostic Settings

If these don't exist yet, you'll need to create them as part of the setup.

Setup Methods​

Choose the method that best fits your workflow:

MethodBest ForTime
TerraformInfrastructure-as-code teams, repeatable deployments10-15 min
Azure PortalQuick setup, no Terraform experience required20-30 min

Both methods create the same resources and provide the same level of access to CXM.

Permissions Granted​

CXM requests minimal, read-only permissions:

Asset Discovery Roles​

RoleScopePurpose
ReaderSubscriptions or Management GroupRead all Azure resources
Monitoring ReaderSubscriptions or Management GroupRead metrics and diagnostics
Key Vault ReaderSubscriptions or Management GroupRead vault metadata (not secrets)

Storage Access (Custom Role)​

PermissionPurpose
Microsoft.Storage/storageAccounts/readRead storage account properties
Microsoft.Storage/storageAccounts/blobServices/containers/readList containers
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readRead export files
Microsoft.CostManagement/exports/readRead export configurations
Microsoft.Insights/diagnosticSettings/readRead diagnostic settings

Optional: Directory Reader​

If enabled, allows CXM to read Azure AD users and groups for cost attribution. Requires Azure AD admin privileges to assign.

Security Considerations​

  1. Read-Only Access: CXM cannot create, modify, or delete any resources
  2. No Data Plane Access: CXM cannot read actual data in databases, storage blobs (except export containers), or other services
  3. Scoped Access: You control exactly which subscriptions CXM can access
  4. Audit Trail: All CXM access is logged in Azure Activity Logs

Next Steps​

Choose your setup method: