Skip to main content

Azure

Adding an Azure subscription lets Cloud Defense read its resources into Inventory and run posture monitoring checks against them. Cloud Defense signs in to the subscription as a user-assigned managed identity you create, through a federated credential. No client secret is created or stored anywhere.

Azure accounts are Read Only. Cloud Defense doesn't apply remediation actions in Azure, and the provisioning command grants the identity a read-only role.

Before you start

PrerequisiteWhy it's neededWhere to check
The subscription ID (a GUID)It identifies the subscription in Cloud DefenseAzure portal: Subscriptions
Permission to create a subscription-scoped deployment, including a custom role definition and a role assignment (Owner, or User Access Administrator plus Contributor)The provisioning command creates a resource group, an identity, a custom role, and assigns itSubscriptions > your subscription > Access control (IAM)
Azure CLI, or Azure Cloud Shell, signed in to the tenantThe command uses az stack sub createCloud Shell has the CLI preinstalled

Set up an Azure account

  1. In Cloud Defense, go to Settings > Cloud Accounts and click Add Cloud Account.
  2. Cloud Provider: Azure. Enter the Azure Subscription ID, a name, a project, and the Account Environment. Cloud Defense Access is Read Only; it's the only level offered for Azure.
  3. Save. You land on the Provision page. Copy the Azure CLI command shown there and run it in Cloud Shell or a terminal signed in to your tenant. It downloads two Bicep files and creates a deployment stack named FireMonCloudDefenseStack in the subscription. The --location westus2 in the command is where the FireMonCloudDefense resource group and identity are created; change it if you prefer another region.
  4. The command prints a Tenant ID and a Client ID. Back on the Provision page, enter both and save. You see This account has been successfully updated. and the first discovery starts on its own. The page also offers a View your Findings link to Posture Monitoring; findings appear there once the first checks have run.

What the command creates

ResourcePurpose
Resource group FireMonCloudDefenseHolds the identity
User-assigned managed identity FireMonCloudDefenseIdentity, with a federated credential named CloudDefenseThe identity Cloud Defense signs in as. Its federated credential trusts Cloud Defense's identity provider for your client only
A custom role, FireMon Cloud Defense Reader followed by a per-subscription suffixThe built-in Reader role's */read plus Microsoft.Web/sites/config/list/action
A role assignment of that role to the identity, scoped to the subscriptionLets Cloud Defense read the subscription

Verify it landed

What to checkWhere to look
Cloud Defense can sign inThe Provision page shows This account has been provisioned. and no Resource Errors
The account has no discovery errorsSettings > Cloud Accounts: no red warning icon on the account's row
The resources themselvesInventory, filtered by the account. Supported resources lists what discovery covers
FindingsPosture Monitoring, after the first checks run
What was created in AzurePortal: resource group FireMonCloudDefense containing the identity, and under Subscriptions > Access control (IAM) > Role assignments, the FireMon Cloud Defense Reader role assigned to it

Add every subscription in a tenant at once

When one identity can read many subscriptions, you don't have to add them one at a time.

  1. Run the provisioning command above in one subscription, so the identity and its role exist.
  2. Give that identity read access to each other subscription you want monitored: assign it the built-in Reader role on the subscription, or on a management group that contains the subscriptions. The FireMon Cloud Defense Reader role adds one read action on top of Reader, for web app configuration.
  3. In Cloud Defense, go to Settings > Cloud Accounts and choose Add Multiple Azure Accounts from the menu next to Add Cloud Account. Enter the Azure Tenant ID and the identity's Managed Identity Client ID.
  4. Either list the subscriptions yourself, as a table or as CSV lines of Subscription Name,Subscription ID, or leave the list empty and Cloud Defense adds every subscription the identity can access. Rows without a subscription ID are ignored, and a row without a name uses the ID as its name.
  5. Save. Cloud Defense creates a Read Only account for each subscription, already provisioned with the shared identity, and updates any account that already existed for one of them.

After that, the same page shows the tenant's subscriptions: how many are onboarded, how many are on the deny list, and one row per subscription with its account name, project, and status. Tick Deny for a subscription you don't want monitored and save; its account is removed and not recreated. Both lists can be downloaded as CSV. Deleting the Azure setup from this page stops the daily check but leaves the individual accounts in place.

Cloud Defense re-lists the tenant's subscriptions once a day. A new subscription the identity can access gets an account automatically. A subscription that stops appearing is flagged in the Status column, and its account is removed after it has been missing from three daily checks in a row.

Azure documentation

Supported resources

Discovery covers the Azure resource types below. The ID column is the type each resource is listed under in Inventory.

Show all 40 resource types
NameID
Activity Log AlertMicrosoft.Insights.ActivityLogAlerts
AFD WAF PolicyMicrosoft.Network.frontdoorWebApplicationFirewallPolicies
Application GatewayMicrosoft.Network.applicationGateways
Application InsightsMicrosoft.Insights.Components
Bastion HostMicrosoft.Network.Bastion
CosmosDB AccountMicrosoft.DocumentDB.databaseAccounts.accounts
DiskMicrosoft.Compute.Disks
DNS ZoneMicrosoft.Network.dnszones
DNS Zone Record SetMicrosoft.Network.dnszones.recordsets
Front Door CDN ProfileMicrosoft.Cdn.profiles
Key VaultMicrosoft.KeyVault.vaults
Key Vault KeyMicrosoft.KeyVault.vaults.keys
Key Vault SecretMicrosoft.KeyVault.vaults.secrets
Load BalancerMicrosoft.Network.loadBalancers
Managed IdentityMicrosoft.ManagedIdentity.userAssignedIdentities
MySql Flexible ServerMicrosoft.DBforMySQL.flexibleservers.databases
MySQL ServerMicrosoft.DBforMySQL.servers.databases
Network InterfaceMicrosoft.Network.networkInterfaces
Network Security GroupMicrosoft.Network.networkSecurityGroups
Network WatcherMicrosoft.Network.NetworkWatcher
PostgreSQL ServerMicrosoft.DBforPostgreSQL.servers.databases
Public IP AddressMicrosoft.Network.publicIPAddresses
Redis CacheMicrosoft.Cache.Redis
RoleMicrosoft.Authorization.roleDefinitions
SQL DatabaseMicrosoft.Sql.servers.databases
SQL ServerMicrosoft.Sql.servers
Storage AccountMicrosoft.Storage.storageAccounts
SubscriptionCustom::Microsoft::Subscription
Synapse WorkspaceMicrosoft.Synapse.workspaces
Virtual HubMicrosoft.Network.virtualHubs
Virtual Hub Virtual Network ConnectionMicrosoft.Network.virtualHubs.hubVirtualNetworkConnections
Virtual MachineMicrosoft.Compute.VirtualMachine
Virtual NetworkMicrosoft.Network.virtualNetworks
Virtual Network GatewayMicrosoft.Network.virtualNetworkGateways
Virtual WANMicrosoft.Network.virtualWans
VPN Server ConfigurationMicrosoft.Network.vpnServerConfigurations
VPN SiteMicrosoft.Network.vpnSites
Web AppMicrosoft.Web.sites
Web App Firewall PolicyMicrosoft.Network.applicationGatewayWebApplicationFirewallPolicies
Web App SlotMicrosoft.Web.sites.slots