This article provides prerequisites and onboarding steps for Azure Cloud (direct).

Wizard vs. Manual Onboarding

We’ve made onboarding easier! You can use our Azure Wizard, which uses Azure templates, to programmatically connect your Azure instance. 

You can easily deploy RBAC subscription roles in Azure, allowing you to decide whether Expel should monitor 1 or more subscriptions. Expel can also connect to existing log storage accounts, or create new ones on your behalf.


Creating and maintaining additional storage logs can result in additional fees from Microsoft Azure. If you enable storage logging, it's applied to all storage accounts deployed in your subscription. 

Expel uses API integrations to connect directly to the Microsoft Azure platform. We support authentication through an Azure Active Directory app. To collect data, Workbench communicates directly with APIs, including the Microsoft Security Graph API to poll alerts from Microsoft Sentinel. Workbench also queries Azure Log Analytics to enrich Sentinel alerts with the Azure Log Analytics context that originally generated that alert.

  1. Have an Azure Active Directory (AD) admin on hand to grant permissions.

  2. Install Microsoft 365 to monitor AD activity logs.

    Microsoft allows using the Microsoft 365 Management Activity API to retrieve information about various user, admin, system, and policy actions and events from Microsoft 365 AND Azure Active Directory activity logs. For example, this is how Expel pulls Azure sign-in logs. If you want us to monitor this type of data for your environment, enable audit logging and onboard Microsoft 365 into Workbench.

  3. Enabling Azure Defender is strongly recommended by Expel to monitor Azure infrastructure. Azure Defender can be enabled on a per resource basis or for resource groups. The following Azure Defender services are currently monitored by Expel:

    • Azure Storage

    • Azure KeyVault

    • Azure Resource Manager

    • Azure App Service

    • Azure SQL Service

    • Azure Cosmos DB Service

Step 1: Enable console access

  1. Sign into the Azure portal as a user who is assigned a limited administrator directory role or the Guest Inviter role.

  2. In the navigation pane, click Azure Active Directory.

  3. Under Manage, select Users.

  4. Select New guest user.

  5. On the New user page, click Invite user, fill out the email address (, and optionally include a message.

  6. Under roles, add the role Global Reader role.

  7. Click Invite to automatically send the invitation to the guest user.

  8. After you send the invitation, the user account is automatically added to the directory as a guest.

Step 2: Enable Azure Application access

To integrate the technology with Expel, we need to create secure credentials to the API. You have 2 options for enabling API access:

  • Option 1: Enable the Expel Azure Integration Enterprise Application within Azure.

  • Option 2: Create a custom Azure Active Directory (AD) Application.

Enabling the Enterprise Application is the recommended approach. However, because the Enterprise Application supports access for multiple Microsoft integrations (Microsoft Sentinel, Azure Log Analytics, and so on), it may be that the permissions granted to the Enterprise Application are more than the minimum required for the Azure integration specifically.

The second option is available if and when the absolute minimum permissions are required. In either case, the table below lists the required items to be obtained during this step:

We need this...

and it's...

Directory (tenant) ID

Unique identifier for your Azure AD instance. Expel needs this information to route our API requests to the right place. Required in all cases.

Application (client) ID (Option 2 only)

Unique identifier for the application you create that grants Expel the access it needs to your Azure instance. Required if you are manually onboarding.

Application (client) Secret (Option 2 only)

API secret that allows Expel to authenticate as the created application to your Azure instance. Required if you are manually onboarding.

Option 1: Enable Azure Enterprise Application

  1. As an Administrator, navigate to the Expel Admin Consent Page.

  2. Review and accept requested permissions.

  3. The ExpelAzure Integration app appears under Enterprise Applications. Review properties and make sure that all permissions are properly granted. These permissions are:

    This permission...

    allows this...


    Users to sign in to the app and allows the app to read the profile of signed-in users. It also allows the app to read basic company information of signed-in users.


    The app to read your organization’s security events without a signed-in user.


    The app to read and update user profiles without assigned in user.


    The app to read user profiles without a signed in user.


    This application to access Log Analytics data.

Option 2: Create custom Azure Active Directory application

  1. As an Azure administrator, log in to the Azure Portal.

  2. Navigate to Azure Active Directory > App registrations and click +New registration.

  3. Fill in the application details. You can fill these in however you want, but we recommend the following:

    • Name: Expel Cloud Service.

    • Supported account types: accounts in this organizational directory only (first option).

  4. After you fill out the fields, click Register to create the new application.

  5. The settings page for the Expel Cloud Service app you just created opens.

    If not, navigate to Azure Active Directory > App Registrations > View all applications (if you don’t see the new app) > Expel Cloud Service.

    • Make a note of the Application (client) ID and the Directory (tenant) ID for use in later steps.

  6. Open API permissions. Click + Add a permission. Add these permissions.

    In APIs my organization uses, locate this permission...

    Select this value and click + Add permissions

    type Log Analytics and select Log Analytics API > Application Permissions.


    type Microsoft Graph and select Microsoft Graph > Application Permissions.


  7. After you assign the permissions, click Grant admin consent and Yes.

  8. Navigate to Expel Cloud Service > Certificates & secrets to begin create an API key (aka client secret). To create a new key, click +New client secret.

    • Add a description for the secret (for example: ExpelAPI) and select Never for expiration. Click Add to create the secret.

    • You see a new secret (API Key) appear under Client secrets. Copy the value and save it for later. It disappears after you navigate away from this screen.

Step 3: Enable roles within Azure subscriptions

Some event sources within Azure require Role-Based Access (RBAC) roles to be granted to the Azure AD Application within each Azure subscription. One of these RBAC roles granted to our Azure AD Application should also be granted to the Expel user created in Step 1 to allow Expel to investigate further into any alerts.

This section walks through granting the Azure Log Analytics Reader role to both the Azure AD Application from Step 2 and the Expel user from Step 1.

  1. Navigate to Subscriptions in the main Azure service menu by searching Subscriptions.

  2. Select the subscription(s) Workbench will monitor. This step is a requirement or Workbench cannot poll any logs. Repeat the steps below for each subscription.

  3. Add the below roles by clicking Access Control (IAM) > +Add > Add role assignment, assigning access to Azure AD user, group or application, and selecting the ExpelAzure Integration enterprise app or Expel Cloud Service app that you created earlier.  

    • Log Analytics Reader: Required role to ingest logs.

  4. Repeat the above step and assign Log Analytic Reader role to Azure AD

Step 4: Enable Azure resource logs

The ExpelAzure Integration monitors alerts and logs across a variety of Azure resources. Some of these alerts and logs are accessible by default, but some must be enabled for Workbench to monitor that particular resource.

The following Azure resources require user configuration to be monitored. Note that not all Azure deployments use these resources and enabling logging within the resources only widens the Expel default monitoring capabilities for Azure.

Create a resource log storage account

The Expel integration collects resource logs from an Azure Storage Account. This section outlines how to create that storage account and provide access to Expel.

  1. Create a V2 Storage account.

  2. Add the below role by clicking Access Control (IAM) > +Add > Add role assignment, assigning access to Azure AD user, group or application, and selecting the ExpelAzure Integration enterprise app or Expel Cloud Service app that was created earlier.

    • Storage Blob Data Reader: Required role to ingest logs.

  3. Storage accounts can have Network Access Control Lists (ACLs) set that limit which IP addresses can access those accounts. Expel has 6 egress IP addresses that can be allowed. All requests to storage accounts come from 1 of 6 IP addresses. We’ve designed this so it can scale significantly without us having to add new IP addresses to the list.

  4. Azure also provides a way to allow for logs to be read from these types of accounts without having to enable access or change existing Network ACLs. Navigate to Networking from the menu and click Firewalls and virtual networks.

  5. If Allow access from is set to Selected networks, select the Allow read access to storage logging from any network to allow access to logs.


    The access to these logs is still managed through RBAC roles.

Enable Azure storage logs

Azure Storage logs gives Workbench context around Azure user activity to help us to determine whether that activity is malicious. If you’re unsure of whether to enable logging for storage accounts, work with your engagement manager to help determine what approach is best for you.

  1. Navigate to the Storage Account view within the Azure portal. The following steps must be done for each Storage Account.

  2. Select Diagnostic settings menu.

  3. For each storage type: Blob, File, Queue, and Table, click Add diagnostic setting.

  4. For the log category, select StorageRead, StorageWrite, StorageDelete, and archive to the storage account created in previous steps.

  5. Repeat these steps each storage account that Expel must monitor.

Enable Azure storage logs: classic

If you are using Classic deployment, use the following steps to enable Classic storage account logging.

  1. Navigate to the Storage Account view within the Azure portal. The following steps must be done for each Classic Storage Account:

  2. Select Diagnostics settings (classic) menu.

  3. Turn Status to On if not already set. Ensure each operation is selected under Logging section for each tab: Blob, File, Queue, and Table properties.

  4. Assign the Expel Enterprise Application or Custom Azure Active Directory (AD) Application to the Storage Blob Data Reader role for each Classic Storage Account that is going to be monitored. Access Control (IAM) > +Add > Add role assignment. See beginning of Step 4 for details.

    For the Storage Blob Data Reader role for each Classic Storage Account that is going to be monitored: Access Control (IAM) > +Add > Add role assignment, see beginning of Step 4 for details.

Step 5: Configure Azure in Workbench


Expel secures all login information our SOC analysts need about your devices in a MFA password product. Access to this login information is protected using our internal MFA processes. To learn more about the IP addresses all Expel traffic comes from, go here.

  1. In a new browser tab, log into

  2. Complete all fields using the credentials and information you collected in Option 1 or Option 2.

    Screen Shot 2021-03-05 at 12.38.23 PM.png

    In this field...

    put this information...


    Select Expel Cloud Service.


    The name you assign the security device.


    Microsoft Cloud.

    Directory (tenant) ID

    Azure AD Directory/Tenant ID.

    Application (client) ID

    (Option 2 only)

    The Azure Application (Client) ID that we saved in Option 2.

    Application (client) Secret

    (Option 2 only)

    The Client Secret that you saved in Option 2.

    Use storage account contributor role (Y/N)

    Leave this blank - this field is only used to support legacy onboarding.


This article was accurate at the time of writing, but changes happen. If you find the instructions are outdated, leave a description in the comment field below and let us know!