This integration provides the following benefits:
- Validates that security tools are writing log events to Microsoft Graph API to ensure compliance with security policies and regulations
- Collects events generated by security tools that write to Microsoft Graph API to test the efficacy and configuration of security controls using Security Validation jobs
API calls
| API | Usage |
|---|---|
/v1.0/security/alerts |
Retrieve a list of alerts from Microsoft Graph Security |
/v1.0/security/runHuntingQuery |
Queries a specified set of event, activity, or entity data supported by Microsoft 365 Defender. Returns huntingQueryResults |
/oauth2/v2.0/token |
Authenticate and retrieve an OAuth Token from Microsoft |
Supported versions
Microsoft Graph Security API v1
Before you begin
To configure this integration, you need:
- The hostname of your Microsoft Graph Security endpoint, typically
graph.microsoft.com - The necessary least-privileged API permissions, specifically
SecurityEvents.Read.Allfor Application and Delegated (work or school account). For more information, see the Microsoft Graph documentation. - Tenant ID
- Client ID
- Client Secret
Configure Microsoft Graph API
Get Tenant ID
- Log in to the Microsoft Azure management portal with a user that has permission to Azure Active Directory
- Select Azure Active Directory from the hamburger menu. The Overview page loads
- While viewing the Overview page, copy the value of the Tenant ID and paste it to a safe location for use in the integration configuration
Create an Azure Active Directory application
- While in the Azure Active Directory management portal, click App Registrations from the menu.
- Click New Registration.
- Enter a Name for the application. For example, Mandiant Advantage Graph Security Integration.
- Select the Supported Account Types option that best suits your needs.
- Click Register. The application is created.
- Copy the value of the Application (client) ID and paste it to a safe location for use in the integration configuration.
- Click Add a certificate or secret.
- Click New client secret.
- Enter a Description for the client secret.
- Set an expiry date for the client secret using the Expires option.
- Click Add.
- Copy the Value of the client secret and paste it to a safe location for use in the integration configuration.
This value cannot be viewed again once you close this page.
Configure API permissions
- While in the Azure Active Directory management portal, click Applications > App Registrations from the menu.
- Select your previously registered App.
- Click API permissions.
- Click Add a permission.
- Click Microsoft Graph.
- Click Application permissions.
- Search and select:
SecurityAlert.Read.Allfor alerts endpoint.ThreatHunting.Read.Allfor runHuntingQuery endpoint.
- Click Add permissions.
- If necessary, click Grant admin consent.
The format of queries depends on the endpoint used. This is because the endpoints use different methods; 'alerts' endpoint uses GET and passes the queries through params, and 'runHuntingQuery' enpoint uses POST and sends the query through the body.
- If you select the
alertsendpoint, delete therunHuntingQuery Endpointquery. - If you select the
runHuntingQueryendpoint, delete theAlerts Endpointquery.
Configure the Integration in Security Validation
-
Go to Settings > Integrations.
- From the Integrations table, click Add Integration > Microsoft Graph API.
You can add this as either a Direct or Remote Integration.
- Enter a meaningful Integration Name.
- Optional: From the Proxy drop-down, choose a proxy profile if one is available. If one isn't available and all outbound connections go through a proxy, first, set up a Proxy Rule.
- Change the HttpProtocols to use for requests. (Https or Http.)
- For the Microsoft Graph API host, change the value if needed. The default is graph.microsoft.com.
- Enter a Port value. The default is 443.
- Enter Client Id, Client Secret, and Tenant ID.
- Optional: Change the Authorization URL, if needed. The default is https://login.microsoftonline.com/.
- Optional: Check Verify Ssl if you want this verification done for requests to an upstream server.
- Optional: Change the Timeout value if you want a different frequency of requests to an upstream server. The default is 30 (seconds).
- Optional: Change Queries, if needed. A default value is provided.
- Optional: Modify the Field Map values, as necessary.
- Each field map box can hold a JSON-formatted comma-separated list of columns returned by the API to be considered for each field when translating into the normalized event object format. Example: description could be configured to be 'msg_s' or 'SyslogMessage' in some environments. The field map tries both if set to: ['msg_s','SyslogMessage'] and whichever matches first is the column that is used.
- When configuring an integration in Security Validation, you can assign additional host values in the Field Map settings. If none of the assigned fields return a valid host name, Network Actions may miss matched events from the third-party technology. Additional hosts values helps ensure the likelihood of a match between the two environments.
-
Optional: Expand Advanced options and update the information as necessary.
- Update Query Time and Delay Time.The Query time is the amount of time (minutes) before and after the query runs that the platform looks for events, while the Delay time is the amount of time (minutes) that the platform waits to run the first query after a Job Action starts. For example, you configure your integration with the following values: Query time = 5, Query interval = 30 seconds, and Delay time = 0. When a Job Actions starts at 12:00:00, the first time the query runs, the platform looks for events from 11:55:00 to 12:00:00. Then 30 seconds later, it looks for events from 11:55:30 to 12:00:30. This interval continues, with the last query looking from 12:00:00 to 12:05:00. If you instead configured the Delay time to equal 10, it would run the same query, but it wouldn't start that query until 12:10:00.If your monitors are set to run more frequently than the query time, this configuration impacts the pass/fail results for AEDA monitors.
- Update Query Interval (seconds).
- If supported by your integration, configure correlation queries:
- Select Correlation Query Enabled and fill in the Correlation Query.
- Modify the Correlation Query Interval, if necessary (minutes).
- Select
Discover network devices automatically, the default and recommended option.If unselected, reported events won't include product information for any matching network security technology.
- Select Save Suspicious Events.
- Modify the Event Time Adjustment (seconds). The default is 0.
Modify the Limit value if you need to prevent a flood of results. This value is set to 10000 by default. This limit applies to both events and alerts individually, so if you set it to 10, you can still see a maximum of 10 events and 10 alerts.
- Update Query Time and Delay Time.
-
Click Save.
Verify connectivity
- Go to Settings > Integrations.
- From the Direct Integrations table, click
> Test to verify that:
- The Director can communicate with the integration host on the port and protocol specified.
- The integration credentials are valid and working.
For more information on setting up queries, see Manage Integrations.