AuditBadger's Azure integration automatically collects compliance evidence from your Microsoft Azure infrastructure and Microsoft Entra (formerly Azure AD) directory. Once connected, it checks your tenant and subscriptions on a monthly schedule and gathers evidence that satisfies controls for SOC 2 and ISO 27001 frameworks.
Key benefits
-
Automated evidence collection — no more manual screenshots or exports
-
Read-only access — AuditBadger never makes write API calls
-
Multi-subscription support — one service principal can grant access to many subscriptions in the same Entra tenant; rotate the secret in one place to update all of them
-
Auto-verification — every collected source is automatically checked against your compliance rules
Security model
-
Read-only RBAC roles only (Reader, Key Vault Reader)
-
Microsoft Graph application permissions are admin-consented and read-only
-
Client secret is encrypted at rest using Rails Active Record Encryption
-
Tokens are never logged; only short-lived OAuth2 access tokens are minted on demand
Evidence sources
The Azure integration collects thirteen evidence types. Every source runs monthly by default and is auto-verified.
Identity (Microsoft Entra):
-
Entra MFA Status — verifies MFA enrollment coverage across the tenant, MFA-enforcing conditional access policies, and admin MFA registration. Maps to SOC 2 CC6.1, CC6.6 and ISO 27001 A.5.15, A.5.17.
-
Entra Conditional Access Policies — inventories conditional access policies, their grant controls, and which apps and users they target. Maps to SOC 2 CC6.1, CC6.6 and ISO 27001 A.5.15, A.5.17.
-
Entra Privileged Role Assignments — inventories active assignments of Global Administrator and other directory roles. Maps to SOC 2 CC6.1 and ISO 27001 A.5.15.
Logging and monitoring:
-
Activity Log Configuration — verifies subscription-level diagnostic settings export the Activity Log to Log Analytics, Storage, or Event Hub with the required retention and event categories. Maps to SOC 2 CC7.2, CC7.3 and ISO 27001 A.8.15, A.8.16.
-
Defender for Cloud Secure Score — collects the Defender for Cloud secure score and unresolved high-severity recommendations. Maps to SOC 2 CC7.1, CC7.2 and ISO 27001 A.8.16.
-
Monitor Alert Rules — inventories Azure Monitor metric alerts and activity-log alerts. Maps to SOC 2 CC7.1, CC7.2 and ISO 27001 A.8.16.
Storage and encryption:
-
Storage Account Encryption — verifies encryption-at-rest, HTTPS-only enforcement, and minimum TLS on every Storage account. Maps to SOC 2 CC6.1, CC6.6, CC6.7 and ISO 27001 A.8.24.
-
Storage Account Public Access — audits public-blob and network-rule settings on every Storage account. Maps to SOC 2 CC6.1, CC6.6.
-
Managed Disk Encryption — verifies encryption-at-rest on every managed disk and reports the key source. Maps to SOC 2 CC6.1, CC6.7 and ISO 27001 A.8.24.
-
SQL Database Encryption (TDE) — verifies Transparent Data Encryption on every Azure SQL Database. Maps to SOC 2 CC6.1, CC6.7 and ISO 27001 A.8.24.
-
Key Vault Key Rotation — verifies key rotation policies and expiry on every key in every Key Vault. Maps to SOC 2 CC6.1, CC6.7 and ISO 27001 A.8.24.
Network:
-
SQL Server Firewall Rules — audits SQL server firewall rules for 0.0.0.0/0 ingress and over-permissive ranges. Maps to SOC 2 CC6.1, CC6.6 and ISO 27001 A.8.20.
-
Network Security Groups — audits NSG rules for 0.0.0.0/0 ingress on RDP, SSH, and database ports and over-permissive outbound rules. Maps to SOC 2 CC6.6, CC6.7 and ISO 27001 A.8.20.
Not collected yet: Backup jobs, and Privileged Identity Management eligible assignments (only active role assignments are read).
Setup
1. Register a service principal
In the Azure Portal:
-
Open Microsoft Entra ID → App registrations → New registration. Name it AuditBadger Compliance.
-
Open Certificates & secrets → New client secret. Copy the Value immediately — you'll only see it once.
You can also use the bundled az CLI script (Setup → Show script) or the Bicep / ARM JSON templates for IaC-first teams.
2. Assign subscription RBAC roles
On each subscription you want AuditBadger to monitor, grant the service principal these roles:
-
Reader
-
Key Vault Reader
You can do this in Subscription → Access control (IAM) → Add role assignment, or with the provided Bicep/ARM templates.
3. Grant Microsoft Graph permissions
In App registrations → Your app → API permissions, add these Microsoft Graph application permissions and click Grant admin consent:
-
Directory.Read.All -
Policy.Read.All -
UserAuthenticationMethod.Read.All -
AuditLog.Read.All
If your security team won't approve Directory.Read.All, you can disable Entra signal collection per integration in AuditBadger settings; you'll lose the three Entra sources (MFA Status, Conditional Access Policies, Privileged Role Assignments); subscription-level sources keep collecting.
4. Connect the subscription in AuditBadger
Go to Settings → Integrations → Microsoft Azure → Connect Azure subscription.
-
If this is your first Azure integration, register the service principal first (Tenant ID, Application (client) ID, Client secret, optional display name).
-
Pick a subscription from the dropdown (AuditBadger auto-discovers subscriptions visible to the SP) or paste the Subscription ID directly.
-
Optionally set a label.
AuditBadger validates the connection in the background and starts collecting evidence on the configured schedule (monthly by default).
Multi-subscription customers
If you have multiple subscriptions in the same Entra tenant, you can connect them all under a single service principal:
-
Register the SP once.
-
In Connect Azure subscription, choose Use existing service principal and pick a different subscription.
When you rotate the SP secret in Azure, paste the new secret on the SP detail page in AuditBadger. Every connected subscription will be re-validated automatically.
Rotating credentials
Azure client secrets have a maximum lifetime of 24 months; many security teams rotate every 3–6 months.
-
Open the service principal in Settings → Integrations → Microsoft Azure → Service principals → [your SP].
-
Generate a new secret in Azure (Certificates & secrets → New client secret).
-
Paste the new secret value in the Rotate client secret form and click Rotate.
-
AuditBadger invalidates cached tokens, re-validates every linked subscription in parallel, and shows live status for each.
Disconnecting
-
Disconnect a subscription: removes the Integration::AzurePayload row. Evidence sources tied to that subscription stop collecting. Other subscriptions under the same SP are unaffected.
-
Delete a service principal: blocked while subscriptions reference it. Disconnect all subscriptions first.
Troubleshooting
-
"Invalid client secret or tenant configuration" — check the Tenant ID and re-paste the secret. Secrets can also expire; verify it's still valid in Entra.
-
"Service principal lacks Reader on subscription X" — assign the Reader role on the subscription. Use the in-app Bicep/ARM template for one-shot fixes.
-
"Microsoft Graph permission 'UserAuthenticationMethod.Read.All' is missing" — open the app registration in Entra → API permissions → click Grant admin consent. The same message names whichever Graph permission is missing.
-
"Subscription not found in tenant" — the Subscription ID doesn't exist under the Entra tenant the SP belongs to. Re-pick from the dropdown.
-
Health check showing some services as degraded is normal if you haven't enabled Defender for Cloud or have no Key Vaults. The unhealthy services are skipped; the rest still collect evidence.