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.
Note
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.
About connecting your device
Expel uses API integrations to connect directly to the Microsoft Azure platform. We support authentication through an Microsoft Entra ID 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.
Before you start
-
Have a Microsoft Entra ID admin on hand to grant permissions.
-
Install Microsoft 365 to monitor Azure Monitor Activity Log.
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 Microsoft Entra ID 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.
-
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
-
About console permissions in your devices
As you connect your devices to Workbench, you provide Workbench access to those devices through permissions in the devices. These permissions vary from 1 device technology to another, but we typically need at least Read access to your devices to pull in any logs from those devices into Workbench.
Without minimum permissions to your devices, the SOC analysts are limited in their insight into your technology. This can mean they surface more benign alerts to your team for further investigation, resulting in increasing the workload for your team, and resulting in alert fatigue.
If you grant Read access to your devices, we can investigate the device and the logs more deeply and surface relevant alerts to you in Workbench. Allowing Expel visibility into the console of your security devices helps our SOC analysts make better decisions on whether an alert is benign or malicious. It also allows our SOC analysts to perform health checks to make sure Workbench is not missing alerts from your security devices. Depending on what your organization purchased from Expel, the SOC analysts may even be able to contain and/or remediate the issues on your behalf.
Ultimately, the more permissions you can grant Workbench, the better and faster the SOC analysts can find and investigate alerts in your environment.
Azure RBAC permissions and roles
Expel Workbench needs access to the following roles and operations in Azure.
Microsoft Azure Integration Application Permissions
This permission... |
does this... |
---|---|
SecurityEvents.Read.All |
Ingests VendorAlerts from a direct poller. |
User.Read |
Creates an application. |
These RBAC operations are needed to read Azure Monitor Activity Log:
This operation... |
does this... |
---|---|
Action - Microsoft.Insights/eventtypes/values/read |
List activity log events (management events) in a subscription. This permission applies to both programmatic and portal access to the activity log. |
These RBAC operations are needed to read Storage Logs using Microsoft Entra ID Auth:
This operation... |
does this... |
---|---|
Action - Microsoft.Storage/storageAccounts/read |
Returns the list of storage accounts or gets the properties for the specified storage account. |
Action - Microsoft.Storage/storageAccounts/blobServices/containers/read |
Returns list of containers. |
DataAction - Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Returns a blob or a list of blobs. |
These RBAC operations are needed to read Storage Logs using Shared Key Auth:
This operation... |
does this... |
---|---|
Action - Microsoft.Storage/storageAccounts/read |
Returns the list of storage accounts or gets the properties for the specified storage account. |
Action - Microsoft.Storage/storageAccounts/blobServices/containers/read |
Returns list of containers. |
Action - Microsoft.Storage/storageAccounts/listKeys/action |
Returns the access keys for the specified storage account. |
These RBAC operations are needed to query Azure Log Analytics
This operation... |
does this... |
---|---|
Action - Microsoft.OperationalInsights/workspaces/analytics/query/action |
Search using new engine. |
These roles roll up under the following built-in RBAC roles:
This role... |
does this... |
---|---|
Global Reader |
Read everything that a Global Administrator can, but not update anything. Required role to ingest logs. |
Log Analytics Reader |
View and search all monitoring data as well as view monitoring settings, including viewing the configuration of Azure diagnostics on all Azure resources. Required role to ingest logs. |
Storage Blob Data Reader or Storage Account Contributor (only if using shared key auth) |
Storage Blob Data Reader: read and list Azure Storage containers and blobs. Required role to ingest logs. Storage Account Contributor: allows management of storage accounts. Provides access to the account key, which can be used to access data via Shared Key authorization. Required role to ingest logs. |
Remediation capabilities
This permission... |
does this... |
---|---|
Disable user account |
Allows the app to enable and disable users' accounts, on behalf of the signed-in user. |
Step 1: Enable console access
-
Sign into the Azure portal as a user who is assigned a limited administrator directory role or the Guest Inviter role.
-
In the navigation pane, click Microsoft Entra ID.
-
Under Manage, select Users.
-
Select New guest user.
-
On the New user page, click Invite user, fill out the email address (expel_analyst@expel.io), and optionally include a message.
-
Under roles, add the role Global Reader role.
-
Click Invite to automatically send the invitation to the guest user.
-
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 Microsoft Entra ID 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 Microsoft Entra ID 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
-
As an Administrator, navigate to the Expel Admin Consent Page.
-
Review and accept requested permissions.
-
The Expel Azure Integration app appears under Enterprise Applications. Review properties and make sure that all permissions are properly granted. These permissions are:
This permission...
allows this...
User.Read
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.
SecurityEvents.Read.All
The app to read your organization’s security events without a signed-in user.
User.ReadWrite.All
The app to read and update user profiles without a signed-in user.
Note: Write permissions are required for disabling and resetting user credentials as part of Expel's remediation capabilities.User.ReadAll
The app to read user profiles without a signed-in user.
Data.Read
This application to access Log Analytics data.
Option 2: Create custom Microsoft Entra ID application
-
As an Azure administrator, log in to the Azure Portal.
-
Navigate to App registrations and click +New registration.
-
Fill in the application details. You can fill these in however you want, but we recommend the following:
-
Name: Expel Azure Integration.
-
Supported account types: accounts in this organizational directory only (first option).
-
-
After you fill out the fields, click Register to create the new application.
-
The settings page for the Expel Azure Integration app you just created opens.
If not, navigate to App Registrations > View all applications (if you don’t see the new app) > Expel Azure Integration.
-
Make a note of the Application (client) ID and the Directory (tenant) ID for use in later steps.
-
-
Open API permissions. Click + Add a permission. Add these permissions:
This permission...
allows this...
User.Read
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.
SecurityEvents.Read.All
The app to read your organization’s security events without a signed-in user.
User.ReadWrite.All
The app to read and update user profiles without a signed-in user.
Note: Write permissions required for disabling and resetting user credentials as part of Expel's remediation capabilities.User.ReadAll
The app to read user profiles without a signed-in user.
Data.Read
This application to access Log Analytics data.
-
After you assign the permissions, click Grant admin consent and Yes.
-
Navigate to Expel Cloud Service > Certificates & secrets to 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 Microsoft Entra ID Application within each Azure subscription. One of these RBAC roles granted to our Microsoft Entra ID 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 Microsoft Entra ID Application from Step 2 and the Expel user from Step 1
-
Navigate to Subscriptions in the main Azure service menu by searching Subscriptions.
-
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.
-
Add the below roles by clicking Access Control (IAM) > +Add > Add role assignment, assigning access to Microsoft Entra ID 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.
-
-
Repeat the above step and assign Log Analytic Reader role to Microsoft Entra ID expel_analyst@expel.io.
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.
-
Create a V2 Storage account.
-
Add the below role by clicking Access Control (IAM) > +Add > Add role assignment, assigning access to Microsoft Entra ID 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.
-
-
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.
-
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.
-
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.
Note
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.
-
Navigate to the Storage Account view within the Azure portal. The following steps must be done for each Storage Account.
-
Select Diagnostic settings menu.
-
For each storage type: Blob, File, Queue, and Table, click Add diagnostic setting.
-
For the log category, select StorageRead, StorageWrite, StorageDelete, and archive to the storage account created in previous steps.
-
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.
-
Navigate to the Storage Account view within the Azure portal. The following steps must be done for each Classic Storage Account:
-
Select Diagnostics settings (classic) menu.
-
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.
-
Assign the Expel Enterprise Application or Custom Microsoft Entra ID 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
Now that we have the correct access configured and noted the credentials, we can integrate your tech with Workbench.
Note
Expel secures all login information our SOC analysts need about your devices in an 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.
-
In a new browser tab, log into https://workbench.expel.io/settings/security-devices?setupIntegration=azure.
-
Complete all fields using the credentials and information you collected in Option 1 or Option 2.
In this field...
put this information...
SIEM
Select Expel Cloud Service.
Name
The name you assign the security device.
Location
Microsoft Cloud.
Directory (tenant) ID
Microsoft Entra ID 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.