Microsoft Sentinel

Create an outgoing webhook to create incidents on Sentinel triggered by Apono access request events

Microsoft Sentinel is a scalable, cloud-native security information and event management (SIEM) that delivers an intelligent and comprehensive solution for SIEM and security orchestration, automation, and response (SOAR). Microsoft Sentinel provides cyberthreat detection, investigation, response, and proactive hunting, with a bird's-eye view across your enterprise.


Prerequisite

  • Configure logs ingestion API in Azure Monitor to send Apono's access request events data to a Log Analytics workspace with a REST API by using the following guide.

    • You can use the following sample JSON as the table schema file on the parse and filter sample data step:

[
  {
    "event_type": "string",
    "requester_id": "string",
    "requester_name": "string",
    "requester_email": "string",
    "justification": "string",
    "resource_id": "string",
    "resource_name": "string",
    "permission": "string"
  }
]
  • Azure JWT token.

    • Get your JWT token using Postman:

      • Set up the Token Request:

        • Method: POST

        • URL: https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token Replace TenantId with your Azure AD Tenant ID.

      • Add the Body parameters:

        • Go to the Body tab and select x-www-form-urlencoded.

          • Add the following key-value pairs:

            • grant_type: client_credentials

            • client_id: Your application's Client ID.

            • client_secret: Your application's Client Secret.

            • scope: https://monitor.azure.com/.default The scope should target the Azure Monitor API, represented by https://monitor.azure.com/.default.

        • Send the Request:

          • Click Send and copy the access_token value. If the credentials are correct, you will receive a response similar to this:

{
  "token_type": "Bearer",
  "expires_in": 3600,
  "ext_expires_in": 3600,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJI..."
}
  • Microsoft incident creation rule in your Sentinel Analytics.

    • Microsoft incident creation rule example:

      • Under General set the following:

        • Severity: Information

        • MITRE ATT&CK: T1650 - Acquire Access

      • Under Set rule logic set the following:

        • Rule query: <Log-Analytics-table-name>


Configure a webhook

Follow these steps to configure a webhook:

  1. On the Webhooks page, click Add Webhook. The Add Webhook page appears.

  2. Click Request Webhook.

  3. Enter a unique, alphanumeric, user-friendly Request Webhook Name for identifying this webhook.

  4. Click the Status toggle to Active.

  5. From the Method dropdown menu, select POST.

  6. For the webhook URL, enter <Data Collection Endpoint URI>/dataCollectionRules/<DCR Immutable ID>/streams/<Stream Name>?api-version=2023-01-01.

  7. In the Body Template field, construct a JSON body for the webhook payload.

    [
      {
        "TimeGenerated": "{{event_time}}",
        "event_type": "{{event_type}}",
        "requester_id": "{{data.requester.id}}",
        "requester_name": "{{data.requester.name}}",
        "requester_email": "{{data.requester.email}}",
        "justification": "{{data.justification}}",
        "resource_id": "{{data.access_groups.[0].access_units.[0].resource.type.name}}",
        "resource_name": "{{data.access_groups.[0].access_units.[0].resource.name}}",
        "permission":  "{{data.access_groups.[0].access_units.[0].permission.name}}"
      }
    ]

Click View event's payload schema to reveal the payload schema and available data fields. You can also refer to the Webhook Payload Schema Reference to read the descriptions of each data field.

  1. For Headers, use the following Key and Value to set the authorization.

Key
Value

Authorization

Bearer <JWT-TOKEN>

  1. From the Triggers dropdown menu, select one or more of the following event triggers, which correspond to Apono access request statuses:

    • RequestCreated

    • RequestApproved

    • RequestExpired

    • RequestFailed

    • RequestGranted

    • RequestRejected

  2. Under Filters, define one or several filter from the listed dropdown menus.

Filters empower admins to control the data transmitted via webhooks, minimizing the amount of data third-party tools receive and reducing unnecessary clutter.

Examples:

  • Send only production requests to your admins' Slack channel.

  • Trigger Okta workflows for events from specific integrations or resource types.

  • Open a ticket in Jira or ServiceNow for manually approved requests.

  1. (Optional) In the Timeout in seconds field, enter the duration in seconds to wait before marking the request as failed.

  2. (Optional) Define Response Validators to verify that the response from the webhook meets specified criteria:

    1. Click + Add. A row of settings appears.

    2. Starting with $.data., enter the Json Path of the JSON parameter.

    3. In the Expected Values field, enter a value and press the Enter key on your keyboard.

    4. Repeat step c to add several expected values.

    5. Repeat steps a-d to add multiple response validators.

  3. Click Test to generate a test event to trigger your webhook. A Test successful or Test failed response status will appear at the bottom of the page. A successful test will send mock data to the target system.

For more information about the test, click View Invocation Data. A panel opens revealing the request, response, and other relevant details.

Should your test fail, view these tips to troubleshoot your webhook.

  1. Click Save Webhook.

The new webhook appears in the Webhooks table. Active webhooks are preceded by a green dot. Inactive webhooks are preceded by a white dot.

Apono access request incident will be created on Sentinel based on the triggers you have selected.


Results

Your webhook should now start creating new incidents on Sentinel once triggered:

Last updated