With Opal Real Time Sync, admins can see access changes to an application’s Resources and Groups in near real-time and on an event-driven basis. Instead of waiting for Opal’s scheduled syncs, each time an access change event occurs in the remote system (e.g. User added to a Group), Opal automatically syncs and reflect that change.If you use Opal’s Azure (Entra) Integration, you can expect to see changes in Opal as quickly as 3 minutes and no later than 10 minutes once you set up this feature.
Architecture diagram
Requirements
The Azure CLI configured. If you have not already, follow the instructions below.
Follow the instructions hereto install the Azure CLI
Follow the instructions here to log in to the Azure CLI
An Azure Subscription
The following providers must be registered in the Azure Subscription. If they are not registered, do so using: az provider register --namespace <resource-provider-namespace> --subscription <subscription_id>
Microsoft.Insights
Microsoft.EventHub
Administrative access to an Azure Subscription, specifically the permissions listed below.
We provide a Terraform module that configures most of the required resources for you. To get started, copy the following Terraform snippet.
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "=4.8.0" } }}provider "azurerm" { features {}}module "opal_azure_eds" { source = "https://downloads.opal.dev/eds-templates/azure/terraform/tf-v1.zip" root_management_group_name = "ExampleRootManagementGroup" resource_group_name = "ExampleResourceGroup" subscription_id = "00000000-0000-0000-0000-000000000000"}# Outputs configuration information necessary to perform the rest of setupoutput "opal_eventhub_id" { value = module.opal_azure_eds.opal_eventhub_id}output "opal_eventhub_name" { value = module.opal_azure_eds.opal_eventhub_name}output "opal_eventhub_namespace_id" { value = module.opal_azure_eds.opal_eventhub_namespace_id}output "opal_eventhub_authz_rule_id" { value = module.opal_azure_eds.opal_eventhub_authz_rule_id}output "opal_entra_diagnostic_setting_id" { value = module.opal_azure_eds.opal_entra_diagnostic_setting_id}
2. Create a diagnostic setting at the root management group
For this step, we will need to use the Azure REST API, as this functionality is not available anywhere else. You can trigger this using any REST client you prefer. An authorization token is required, which you can retrieve from the Azure CLI using the following command:
az account get-access-token --query accessToken --output tsv
To create the diagnostic setting, fill in the following fields in the command below.
<root-management-group-ID>: The root management group for your Azure directory
<diagnostic-setting-name>: Any name
<event-hub-subscription>: The subscription under which you created your event hub namespace
<event-hub-resource-group>: The resource group under which you created your event hub namespace
<event-hub-namespace-name>: The name of your event hub namespace
<authorization-rule-name>: The name of the authorization rule configured above
<event-hub-name>: The name of the event hub configured above
This configures a diagnostic setting to export any Administrative logs from the root management group, and any children, to your event hub.
3. Allow the Opal App Registration to read from your Event Hub
Now we need to allow the Opal Service to read from your Azure Event Hub. Fill in the following command:
<opal-app-registration-object-id>: The object ID of the App Registration you use for Opal.
<event-hub-id>: The ID of the created event hub that was output from your terraform apply
az role assignment create \ --assignee <opal-app-registration-object-id> \ --role "Azure Event Hubs Data Receiver" \ --scope <event-hub-id>
4. Connect Opal to your Event Hub
Go to your Azure app in Opal, select Setup, and click Edit to configure your event hub:
Event Hub Namespace: This must be the fully-qualified name of your event hub namespace. It will be of the form <your-event-hub-namespace-name>.servicebus.windows.net
Event Hub Name: Your event hub’s name, as returned from the terraform apply.
Using Azure Portal
1. Create an Azure Event Hub Namespace
Go to Event Hubs and click +Create.Configure the following properties on the first page:
Subscription: The subscription your event hub namespace is only affects where it is billed.
Resource Group
Namespace name
Location
Pricing Tier: Note that this affects the length of the data retention periods that you are eligible for
Under the following steps, you can configure any other setup required by your use-case. No further configuration for the event hub namespace is required for integration with Opal. Click “Review + create”Once created, your event hub will take a few minutes to deploy.
2. Create an Event Hub
Once your event hub namespace is deployed, go to it in the Azure UI and click + Event Hub.On the first page, you will be prompted to configure the following:
Name
Partition Count: We recommend setting the partition count to 1
Cleanup Policy: Controls what happens when events reach their retention limit. We recommend using Delete
Retention Time: The maximum retention period available to you will differ based on the pricing tier you chose in step 1. We recommend using the longest retention period possible.
On the Capture tab, if you have a premium-tier namespace, you can enable capturing the data that is streamed by your event hub in Azure Data Lake or Azure Blob Storage. We recommend you keep this off.Once complete, click Review + Create, confirm your configuration and create your event hub.
3. Set up authorization rules
Authorization rules allow Azure to push audit and administrative logs to your event hub, see here for more details. Fill in the following fields in the command below to create an authorization rule on your namespace
<authorization-rule-name>: Can be any name
<event-hub-namespace-name>: Name of the event hub namespace configured above
<event-hub-resource-group>: Resource group under which the event hub namespace was created
4. Create a diagnostic setting at the root management group
For this step, we will need to use the Azure REST API. You can trigger this via any REST client you would like. An authorization token is required, which you can retrieve from the Azure CLI using the following command:
az account get-access-token --query accessToken --output tsv
To create the diagnostic setting, fill in the following fields in the command below to create a diagnostic setting
<root-management-group-ID>: The root management group for your Azure directory
<diagnostic-setting-name>: Any name
<event-hub-subscription>: The subscription under which you created your event hub namespace
<event-hub-resource-group>: The resource group under which you created your event hub namespace
<event-hub-namespace-name>: The name of your event hub namespace
<authorization-rule-name>: The name of the authorization rule configured above
<event-hub-name>: The name of the event hub configured above
This configures a diagnostic setting to export any Administrative logs from the root management group, and any children, to your event hub.
5. Enable Microsoft Entra Logging
Go to Microsoft Entra and click Show More on the left hand bar.Expand Monitoring & health and select Diagnostic settings.Select Add diagnostic setting.You will be prompted to configure the following:
Diagnostic setting name
Log Categories: Select AuditLogs
Destination details: Select Stream to an event hub
Select the subscription, event hub namespace, event hub and authorization rule created above
Once complete, click Save.
6. Allow the Opal App Registration to read from your Event Hub
Now we need to allow the Opal Service to read from your Azure Event Hub. Fill in the following command:
<opal-app-registration-object-id>: The object ID of the App Registration you use for Opal.
<event-hub-id>: The ID of the created event hub
az role assignment create \ --assignee <opal-app-registration-object-id> \ --role "Azure Event Hubs Data Receiver" \ --scope <event-hub-id>
7. Connect Opal to your Event Hub
Go to your Azure app in Opal, select Setup and click Edit to configure your event hub:
Event Hub Namespace: This must be the fully-qualified name of your event hub namespace. It will be of the form <your-event-hub-namespace-name>.servicebus.windows.net
Event Hub Name: Your event hub’s name
Last modified on October 28, 2025
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opal Security Docs","colors":{"primary":"#0C7997","light":"#EDFCFC","dark":"#074055"},"logo":{"light":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd","dark":"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=1774b545e4f1c5cad647f5194f7b26d9"},"favicon":{"light":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-black.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=9c8bd1204b6b5b83542c2ab5be549858","dark":"https://mintcdn.com/opalsecurity/DRAwGKUXMxLRQouh/logo/icon-opal-white.svg?fit=max\u0026auto=format\u0026n=DRAwGKUXMxLRQouh\u0026q=85\u0026s=73b53b4ceab6ae0b00e30b2042a6020a"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"ga4":{"measurementId":"G-1PPPM1WF6D"}},"errors":{"404":{"redirect":false,"title":"Page can't be found","description":"Sorry! This page might have been moved, or the link might be broken. Go back to our documentation via https://docs.opal.dev/docs/welcome."}},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opalsecurity","hasAudioNarration":false,"actualSubdomain":"opalsecurity","customDomains":["docs.opal.dev"],"gitSource":{"type":"github","owner":"opalsecurity","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af7bc9ca5d707e66c231413","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":218},{"language":"default","tag":"Opal API","count":213},{"language":"default","tag":"Documentation","count":104},{"language":"default","tag":"Integrations","count":103},{"language":"default","tag":"Entitlement Management","count":69},{"language":"default","tag":"resources","count":34},{"language":"default","tag":"groups","count":32},{"language":"default","tag":"Getting Started","count":25},{"language":"default","tag":"Access Management","count":22},{"language":"default","tag":"Infrastructure","count":22}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"email":"support@opal.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"integrations/azure-real-time-sync","slug":"/integrations/azure-real-time-sync","pageMetadata":{"title":"Azure Real Time Sync Setup","description":null,"href":"/integrations/azure-real-time-sync"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,OptimizedImage}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`With `,_jsx(_components.strong,{children:`Opal Real Time Sync`}),`, admins can see access changes to an application’s Resources and Groups in near real-time and on an event-driven basis. Instead of waiting for Opal’s scheduled syncs, each time an access change event occurs in the remote system (e.g. User added to a Group), Opal automatically syncs and reflect that change.`]}),`\n`,_jsxs(_components.p,{children:[`If you use Opal’s `,_jsx(_components.strong,{children:`Azure (Entra) Integration`}),`, you can expect to see changes in Opal as quickly as 3 minutes and no later than 10 minutes once you set up this feature.`]}),`\n`,_jsx(Heading,{level:`2`,id:`architecture-diagram`,children:`Architecture diagram`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=ac014b3515a6e7bd5930471ecb9e7786`,alt:``,\"data-og-width\":`8320`,width:`8320`,\"data-og-height\":`3744`,height:`3744`,\"data-path\":`images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=280\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=63f2c1860d29ae2f5ccd086615d8c7b6 280w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=560\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=1bb8d8ffd487811e7508e1b90cec6eb4 560w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=840\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=b7035fd683b234214bafb31c3f4a8506 840w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=1100\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=0d547b1ba3f27e69c138845c615ad74c 1100w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=1650\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=6c21dd9c44764740de538a8b672bef7e 1650w, https://mintcdn.com/opalsecurity/odnvD_MsXBxTor9u/images/docs/88d08a57d09727cf34f8b39f968a821008ae68442e6bde59f83d7e96aa75507b-EDS_Diagrams_1.png?w=2500\u0026fit=max\u0026auto=format\u0026n=odnvD_MsXBxTor9u\u0026q=85\u0026s=af82fdccb4183f0ccacdc3b32c015dca 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`requirements`,children:`Requirements`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`The Azure CLI configured. If you have not already, follow the instructions below.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Follow the instructions `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/cli/azure/install-azure-cli`,children:`here`}),`to install the Azure CLI`]}),`\n`,_jsxs(_components.li,{children:[`Follow the instructions `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli`,children:`here`}),` to log in to the Azure CLI`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`An Azure Subscription`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`The following providers must be registered in the Azure Subscription. If they are not registered, do so using: `,_jsx(_components.code,{children:`az provider register --namespace \u003cresource-provider-namespace> --subscription \u003csubscription_id>`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.Insights`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub`})}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Administrative access to an Azure Subscription, specifically the permissions listed below.`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Required Permissions`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/checkNameAvailability/action`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/register/action`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/write`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/read`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/authorizationRules/read`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/authorizationRules/write`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/eventhubs/write`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/eventhubs/read`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/eventhubs/authorizationRules/read`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Microsoft.EventHub/namespaces/eventhubs/authorizationRules/write`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/analytics#azure-event-hubs-data-owner`,children:`Azure Event Hubs Data Owner`}),` role will provide these permissions.`]}),`\n`,_jsx(Heading,{level:`2`,id:`using-terraform`,children:`Using Terraform`}),`\n`,_jsx(Heading,{level:`3`,id:`1-initialize-the-azure-eds-terraform-module`,children:`1. Initialize the Azure EDS Terraform Module`}),`\n`,_jsx(_components.p,{children:`We provide a Terraform module that configures most of the required resources for you. To get started, copy the following Terraform snippet.`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`terr`,numberOfLines:`42`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`42`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`terraform {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` required_providers {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` azurerm = {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` source = \"hashicorp/azurerm\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` version = \"=4.8.0\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`provider \"azurerm\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` features {}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`module \"opal_azure_eds\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` source = \"https://downloads.opal.dev/eds-templates/azure/terraform/tf-v1.zip\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` root_management_group_name = \"ExampleRootManagementGroup\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` resource_group_name = \"ExampleResourceGroup\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` subscription_id = \"00000000-0000-0000-0000-000000000000\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# Outputs configuration information necessary to perform the rest of setup`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`output \"opal_eventhub_id\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` value = module.opal_azure_eds.opal_eventhub_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`output \"opal_eventhub_name\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` value = module.opal_azure_eds.opal_eventhub_name`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`output \"opal_eventhub_namespace_id\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` value = module.opal_azure_eds.opal_eventhub_namespace_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`output \"opal_eventhub_authz_rule_id\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` value = module.opal_azure_eds.opal_eventhub_authz_rule_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`output \"opal_entra_diagnostic_setting_id\" {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` value = module.opal_azure_eds.opal_entra_diagnostic_setting_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`2-create-a-diagnostic-setting-at-the-root-management-group`,children:`2. Create a diagnostic setting at the root management group`}),`\n`,_jsx(_components.p,{children:`For this step, we will need to use the Azure REST API, as this functionality is not available anywhere else. You can trigger this using any REST client you prefer. An authorization token is required, which you can retrieve from the Azure CLI using the following command:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`bash`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`az account get-access-token --query accessToken --output tsv`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(_components.p,{children:`To create the diagnostic setting, fill in the following fields in the command below.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003croot-management-group-ID>`}),`: The root management group for your Azure directory`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cdiagnostic-setting-name>`}),`: Any name`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-subscription>`}),`: The subscription under which you created your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-resource-group>`}),`: The resource group under which you created your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-namespace-name>`}),`: The name of your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cauthorization-rule-name>`}),`: The name of the authorization rule configured above`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-name>`}),`: The name of the event hub configured above`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`token=$(az account get-access-token --query accessToken --output tsv)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`curl -X PUT -H \"Authorization: Bearer $token\" -H 'Content-Type: application/json' \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://management.azure.com/providers/microsoft.management/managementGroups/\u003croot-management-group-ID>/providers/microsoft.insights/diagnosticSettings/\u003cdiagnostic-setting-name>\\\\?api-version\\\\=2020-01-01-preview \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`-d '{\"properties\":{\"eventHubAuthorizationRuleId\":\"/subscriptions/\u003cevent-hub-subscription>/resourceGroups/\u003cevent-hub-resource-group>/providers/Microsoft.EventHub/namespaces/\u003cevent-hub-namespace-name>/authorizationrules/\u003cauthorization-rule-name>\",\"eventHubName\":\"\u003cevent-hub-name>\",\"logs\":[{\"category\":\"Administrative\", \"enabled\":true }, {}]}}'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`This configures a `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings`,children:`diagnostic setting`}),` to export any `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log-schema?source=recommendations#administrative-category`,children:`Administrative`}),` logs from the root management group, and any children, to your event hub.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-allow-the-opal-app-registration-to-read-from-your-event-hub`,children:`3. Allow the Opal App Registration to read from your Event Hub`}),`\n`,_jsx(_components.p,{children:`Now we need to allow the Opal Service to read from your Azure Event Hub. Fill in the following command:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003copal-app-registration-object-id>`}),`: The object ID of the App Registration you use for Opal.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-id>`}),`: The ID of the created event hub that was output from your terraform apply`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`az role assignment create \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --assignee \u003copal-app-registration-object-id> \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --role \"Azure Event Hubs Data Receiver\" \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --scope \u003cevent-hub-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`3`,id:`4-connect-opal-to-your-event-hub`,children:`4. Connect Opal to your Event Hub`}),`\n`,_jsxs(_components.p,{children:[`Go to your Azure app in Opal, select `,_jsx(_components.strong,{children:`Setup`}),`, and click `,_jsx(_components.strong,{children:`Edit`}),` to configure your event hub:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Event Hub Namespace: This must be the `,_jsx(_components.strong,{children:`fully-qualified name`}),` of your event hub namespace. It will be of the form `,_jsx(_components.code,{children:`\u003cyour-event-hub-namespace-name>.servicebus.windows.net`})]}),`\n`,_jsxs(_components.li,{children:[`Event Hub Name: Your event hub’s `,_jsx(_components.strong,{children:`name`}),`, as returned from the terraform apply.`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=b912689cb15953c3e49806753d88f9cc`,alt:``,\"data-og-width\":`3044`,width:`3044`,\"data-og-height\":`1782`,height:`1782`,\"data-path\":`images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=280\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=cdfae6d07d13813b5e10d934efcdb6a9 280w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=560\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=8a2232df169fd5961364c12a62e3797e 560w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=840\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=38bdce023df4c5ae28fa08bcd87e0663 840w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=41206d93a2206e49b070733c317b422b 1100w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=d85c9b58f4523b5210386b55d0dc3406 1650w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/0518b31504107c8eadbb6648cb9162d25b062b6824d592195fc50e0c9aa510e6-azure-event-hub-example.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=62b149dfefe462cb37d6d94b57186a7b 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`using-azure-portal`,children:`Using Azure Portal`}),`\n`,_jsx(Heading,{level:`3`,id:`1-create-an-azure-event-hub-namespace`,children:`1. Create an Azure Event Hub Namespace`}),`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://portal.azure.com/#browse/Microsoft.EventHub%2Fnamespaces`,children:`Event Hubs`}),` and click `,_jsx(_components.strong,{children:`+Create`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=d2f3240e99f91c5547b6116a6b1bf22c`,alt:``,\"data-og-width\":`3834`,width:`3834`,\"data-og-height\":`450`,height:`450`,\"data-path\":`images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=63d777549b3807d25d67f9c907f94e9b 280w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=928d30eef44cd5630c36e1ae1a562f50 560w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=52391869ab8bb18c8c061cc2e022c693 840w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=7baa32046537c90ecce2c770dc7d0478 1100w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=9d68ae6862421697eb67091691c4bfb4 1650w, https://mintcdn.com/opalsecurity/4Xj9diJ3E3kX-9Xd/images/docs/e0483c6d7e63382813a648bdea16f9c0feeef4dcbb14d99a958e231fa8491dae-Screenshot_2024-10-02_at_6.34.37_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=4Xj9diJ3E3kX-9Xd\u0026q=85\u0026s=831c0b9307a36316cb265ba6794ed5b1 2500w`}),`\n`,_jsx(_components.p,{children:`Configure the following properties on the first page:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Subscription: The subscription your event hub namespace is only affects where it is billed.`}),`\n`,_jsx(_components.li,{children:`Resource Group`}),`\n`,_jsx(_components.li,{children:`Namespace name`}),`\n`,_jsx(_components.li,{children:`Location`}),`\n`,_jsx(_components.li,{children:`Pricing Tier: Note that this affects the length of the data retention periods that you are eligible for`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability#throughput-units`,children:`Throughput Units`}),`: 1 TU is recommended`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=e2865b097b6afca4100a4fbf4c640b46`,alt:``,\"data-og-width\":`3838`,width:`3838`,\"data-og-height\":`1716`,height:`1716`,\"data-path\":`images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=441b961bae8f2efd7cd57528596ca67e 280w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=db6ff7022e3d5663a7c296a7e1c3a9cd 560w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=fd4bba746f2e6debcc4c6d0278702e45 840w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=a9b8b4515e9b9e78a98db0b69fd5e673 1100w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=2f504bdba39ed5f87da106b0e42abb5a 1650w, https://mintcdn.com/opalsecurity/fu-nWazMe1LxLhxi/images/docs/336a25daf048916f90b42be84b0f0e2a99102780508483edc320838d3f6d2a5b-Screenshot_2024-10-03_at_11.25.09_AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fu-nWazMe1LxLhxi\u0026q=85\u0026s=edd4b8063eab5be19bc9b67a0b1eda10 2500w`}),`\n`,_jsx(_components.p,{children:`Under the following steps, you can configure any other setup required by your use-case. No further configuration for the event hub namespace is required for integration with Opal. Click “Review + create”`}),`\n`,_jsx(_components.p,{children:`Once created, your event hub will take a few minutes to deploy.`}),`\n`,_jsx(Heading,{level:`3`,id:`2-create-an-event-hub`,children:`2. Create an Event Hub`}),`\n`,_jsxs(_components.p,{children:[`Once your event hub namespace is deployed, go to it in the Azure UI and click `,_jsx(_components.strong,{children:`+ Event Hub`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=ac32bee95396ba24559fb7eae48e7ccd`,alt:``,\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`1802`,height:`1802`,\"data-path\":`images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=fa3f4511990df8964587acdc62b48cd4 280w, https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=f44907d347ab994ee64f567fac031016 560w, https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=8865012e58b9ace0436a472e1e8e030b 840w, https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=bb9a051223aef8517659e932ec94a685 1100w, https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=e74a15537e6f7c078c7af91466d309f5 1650w, https://mintcdn.com/opalsecurity/KunPWigry5GIeB5g/images/docs/4df458331a7a4af3f0798068b4b426692c82183483f485a86af41e82f8b55878-Screenshot_2024-10-03_at_11.27.10_AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=KunPWigry5GIeB5g\u0026q=85\u0026s=7ac97fcbb9f7f196771949e899ddf014 2500w`}),`\n`,_jsx(_components.p,{children:`On the first page, you will be prompted to configure the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Name`}),`\n`,_jsxs(_components.li,{children:[`Partition Count: We recommend setting the partition count to `,_jsx(_components.strong,{children:`1`})]}),`\n`,_jsxs(_components.li,{children:[`Cleanup Policy: Controls what happens when events reach their retention limit. We recommend using `,_jsx(_components.strong,{children:`Delete`})]}),`\n`,_jsx(_components.li,{children:`Retention Time: The maximum retention period available to you will differ based on the pricing tier you chose in step 1. We recommend using the longest retention period possible.`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=12e536ca403129b720ba7bd020acb742`,alt:``,\"data-og-width\":`3838`,width:`3838`,\"data-og-height\":`1796`,height:`1796`,\"data-path\":`images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=b7c25901d4fb770c962227b814e45666 280w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=092eeff1c34f5646f6618d00f599faaa 560w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=3ca630e2cd563c5e0898914d5dd9e48a 840w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=a3e89a3e4c513f8eb59b8305f045fc8d 1100w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=24eecd41ecca6850ea12f1fe98dd0905 1650w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f126be55d482a6dc4bb0dc8ae4f19773f57928cb154383ec2a275ec72c824060-Screenshot_2024-10-03_at_11.28.21_AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=5bce80548af379ccb6d839e6189ab22b 2500w`}),`\n`,_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Capture`}),` tab, if you have a premium-tier namespace, you can enable capturing the data that is streamed by your event hub in Azure Data Lake or Azure Blob Storage. We recommend you keep this off.`]}),`\n`,_jsxs(_components.p,{children:[`Once complete, click `,_jsx(_components.strong,{children:`Review + Create`}),`, confirm your configuration and create your event hub.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-set-up-authorization-rules`,children:`3. Set up authorization rules`}),`\n`,_jsxs(_components.p,{children:[`Authorization rules allow Azure to push audit and administrative logs to your event hub, `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/event-hubs/authorize-access-shared-access-signature`,children:`see here`}),` for more details. Fill in the following fields in the command below to create an authorization rule on your namespace`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cauthorization-rule-name>`}),`: Can be any name`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-namespace-name>`}),`: Name of the event hub namespace configured above`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-resource-group>`}),`: Resource group under which the event hub namespace was created`]}),`\n`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`bash`,numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`az eventhubs namespace authorization-rule create \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --name \u003cauthorization-rule-name> \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --namespace-name \u003cevent-hub-namespace-name> \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --resource-group \u003cevent-hub-namespace-resource-group> \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --rights Manage Send Listen`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`4-create-a-diagnostic-setting-at-the-root-management-group`,children:`4. Create a diagnostic setting at the root management group`}),`\n`,_jsx(_components.p,{children:`For this step, we will need to use the Azure REST API. You can trigger this via any REST client you would like. An authorization token is required, which you can retrieve from the Azure CLI using the following command:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`bash`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`az account get-access-token --query accessToken --output tsv`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(_components.p,{children:`To create the diagnostic setting, fill in the following fields in the command below to create a diagnostic setting`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003croot-management-group-ID>`}),`: The root management group for your Azure directory`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cdiagnostic-setting-name>`}),`: Any name`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-subscription>`}),`: The subscription under which you created your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-resource-group>`}),`: The resource group under which you created your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-namespace-name>`}),`: The name of your event hub namespace`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cauthorization-rule-name>`}),`: The name of the authorization rule configured above`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-name>`}),`: The name of the event hub configured above`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`token=$(az account get-access-token --query accessToken --output tsv)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`curl -X PUT -H \"Authorization: Bearer $token\" -H 'Content-Type: application/json' \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://management.azure.com/providers/microsoft.management/managementGroups/\u003croot-management-group-ID>/providers/microsoft.insights/diagnosticSettings/\u003cdiagnostic-setting-name>\\\\?api-version\\\\=2020-01-01-preview \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`-d '{\"properties\":{\"eventHubAuthorizationRuleId\":\"/subscriptions/\u003cevent-hub-subscription>/resourceGroups/\u003cevent-hub-resource-group>/providers/Microsoft.EventHub/namespaces/\u003cevent-hub-namespace-name>/authorizationrules/\u003cauthorization-rule-name>\",\"eventHubName\":\"\u003cevent-hub-name>\",\"logs\":[{\"category\":\"Administrative\", \"enabled\":true }, {}]}}'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`This configures a `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings`,children:`diagnostic setting`}),` to export any `,_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log-schema?source=recommendations#administrative-category`,children:`Administrative`}),` logs from the root management group, and any children, to your event hub.`]}),`\n`,_jsx(Heading,{level:`3`,id:`5-enable-microsoft-entra-logging`,children:`5. Enable Microsoft Entra Logging`}),`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://entra.microsoft.com/#home`,children:`Microsoft Entra`}),` and click `,_jsx(_components.strong,{children:`Show More`}),` on the left hand bar.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=ec18a3da762d3147fee37d9f523536f9`,alt:``,\"data-og-width\":`3828`,width:`3828`,\"data-og-height\":`1316`,height:`1316`,\"data-path\":`images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=5001ee64f039468263aafbc6cfff470c 280w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=18a02b774b4d649b94090a5b76f9dc66 560w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=4ac08629785bf002d5fae8c53e732265 840w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=a2dbc6b396af9421b3fa60e264892d6c 1100w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=3389701b2016f91d6e5119c773e81cdd 1650w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/01cb88d5dbdd4eec62e63ebaeca5359255e1f1f5c5f6c7413f028618f1448b24-Screenshot_2024-10-02_at_7.13.34_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=758e8e214ed22afdf32b3911a84cbf37 2500w`}),`\n`,_jsxs(_components.p,{children:[`Expand `,_jsx(_components.strong,{children:`Monitoring \u0026 health`}),` and select `,_jsx(_components.strong,{children:`Diagnostic settings`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=f1870d5e2047e5e4a67641f28315b50a`,alt:``,\"data-og-width\":`3830`,width:`3830`,\"data-og-height\":`1796`,height:`1796`,\"data-path\":`images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=39486ae39dafae8c18565c6f992635f4 280w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=0f5f1e7e6672ff115f7536e6ef3fc039 560w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=c91565bb25d130a42087e6a33c0a01d8 840w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=0f3e4def2b088a518ecc82f323c5c3a5 1100w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=c153f8c23eac02ded0d4c60add67bfc9 1650w, https://mintcdn.com/opalsecurity/TlQj9FwRe9HHNEYB/images/docs/1775b25b114303069edf050c98c4f03b27953ad1a81721ac705709bc3ba12744-Screenshot_2024-10-02_at_7.18.25_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TlQj9FwRe9HHNEYB\u0026q=85\u0026s=ed6b4e9d85f620106e16221a651ae3b3 2500w`}),`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Add diagnostic setting`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=4dd48dbbfdb05c6e5fbe803cfca76eec`,alt:``,\"data-og-width\":`3836`,width:`3836`,\"data-og-height\":`1794`,height:`1794`,\"data-path\":`images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=e3b31903644ce82898439b73f9d38757 280w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=6558adf27c100c152bfdc106c67f8b50 560w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=9d66c4e6e27039559a7ed763c1f1b980 840w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=fc4f1bff91164f9cc2101adbe242957d 1100w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=a1f7ceeeb846e7bf89fc6abc678f5828 1650w, https://mintcdn.com/opalsecurity/CCjTTkaW-43B4efd/images/docs/f48df761c4c1bf376d50acf29bb16f177d46741b31e472909f37c2f996ee0764-Screenshot_2024-10-02_at_7.19.49_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CCjTTkaW-43B4efd\u0026q=85\u0026s=f17e52ee76ded998317f8fd7371f049b 2500w`}),`\n`,_jsx(_components.p,{children:`You will be prompted to configure the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Diagnostic setting name`}),`\n`,_jsxs(_components.li,{children:[`Log Categories: Select `,_jsx(_components.strong,{children:`AuditLogs`})]}),`\n`,_jsxs(_components.li,{children:[`Destination details: Select `,_jsx(_components.strong,{children:`Stream to an event hub`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Select the subscription, event hub namespace, event hub and authorization rule created above`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=92392074137adfa0486b06a79a02264b`,alt:``,\"data-og-width\":`3838`,width:`3838`,\"data-og-height\":`1790`,height:`1790`,\"data-path\":`images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=9c1b50bcd7f9da33f4e1a750cfd2dcad 280w, https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=4755bf2bf042bd4e92544478effb4fd2 560w, https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=c27c0a2b62f9f6df7124d91785a98a07 840w, https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=fcddf64bf817247abdb3ecd4967576f4 1100w, https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=b3da3fc41bac55f54ff2bc83d7593993 1650w, https://mintcdn.com/opalsecurity/lwwIeFbsleftxaXx/images/docs/c7a2d1dbe59fd54bab2b8b16170d00eb4d20e067a874c01376a25c592d9c5dc9-Screenshot_2024-10-03_at_11.33.43_AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=lwwIeFbsleftxaXx\u0026q=85\u0026s=b31f384845f5635e80d5b38257fd01aa 2500w`}),`\n`,_jsxs(_components.p,{children:[`Once complete, click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`6-allow-the-opal-app-registration-to-read-from-your-event-hub`,children:`6. Allow the Opal App Registration to read from your Event Hub`}),`\n`,_jsx(_components.p,{children:`Now we need to allow the Opal Service to read from your Azure Event Hub. Fill in the following command:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003copal-app-registration-object-id>`}),`: The object ID of the App Registration you use for Opal.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cevent-hub-id>`}),`: The ID of the created event hub`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`az role assignment create \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --assignee \u003copal-app-registration-object-id> \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --role \"Azure Event Hubs Data Receiver\" \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --scope \u003cevent-hub-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`3`,id:`7-connect-opal-to-your-event-hub`,children:`7. Connect Opal to your Event Hub`}),`\n`,_jsxs(_components.p,{children:[`Go to your Azure app in Opal, select `,_jsx(_components.strong,{children:`Setup`}),` and click `,_jsx(_components.strong,{children:`Edit`}),` to configure your event hub:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Event Hub Namespace: This must be the `,_jsx(_components.strong,{children:`fully-qualified`}),` name of your event hub namespace. It will be of the form `,_jsx(_components.code,{children:`\u003cyour-event-hub-namespace-name>.servicebus.windows.net`})]}),`\n`,_jsx(_components.li,{children:`Event Hub Name: Your event hub’s name`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Azure Real Time Sync Setup","description":null,"href":"/integrations/azure-real-time-sync"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Architecture diagram","slug":"architecture-diagram","depth":2,"children":[]},{"title":"Requirements","slug":"requirements","depth":2,"children":[]},{"title":"Using Terraform","slug":"using-terraform","depth":2,"children":[{"title":"1. Initialize the Azure EDS Terraform Module","slug":"1-initialize-the-azure-eds-terraform-module","depth":3,"children":[]},{"title":"2. Create a diagnostic setting at the root management group","slug":"2-create-a-diagnostic-setting-at-the-root-management-group","depth":3,"children":[]},{"title":"3. Allow the Opal App Registration to read from your Event Hub","slug":"3-allow-the-opal-app-registration-to-read-from-your-event-hub","depth":3,"children":[]},{"title":"4. Connect Opal to your Event Hub","slug":"4-connect-opal-to-your-event-hub","depth":3,"children":[]}]},{"title":"Using Azure Portal","slug":"using-azure-portal","depth":2,"children":[{"title":"1. Create an Azure Event Hub Namespace","slug":"1-create-an-azure-event-hub-namespace","depth":3,"children":[]},{"title":"2. Create an Event Hub","slug":"2-create-an-event-hub","depth":3,"children":[]},{"title":"3. Set up authorization rules","slug":"3-set-up-authorization-rules","depth":3,"children":[]},{"title":"4. Create a diagnostic setting at the root management group","slug":"4-create-a-diagnostic-setting-at-the-root-management-group","depth":3,"children":[]},{"title":"5. Enable Microsoft Entra Logging","slug":"5-enable-microsoft-entra-logging","depth":3,"children":[]},{"title":"6. Allow the Opal App Registration to read from your Event Hub","slug":"6-allow-the-opal-app-registration-to-read-from-your-event-hub","depth":3,"children":[]},{"title":"7. Connect Opal to your Event Hub","slug":"7-connect-opal-to-your-event-hub","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opalsecurity/d0e14c3cf9bbd682/changelog-scraper.js"],"subdomain":"opalsecurity","siteName":"Opal Security Docs","title":"Azure Real Time Sync Setup - Opal Security Docs","contextualStarterQuestions":[{"_id":"6aeb810f56a1453b3c380adc","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"What is Real Time Sync?","status":"active","generatedBy":"contextual","path":"integrations/azure-real-time-sync","createdAt":"2026-11-04T19:01:35.255Z","updatedAt":"2026-11-04T19:01:35.255Z","__v":0},{"_id":"6aeb810f56a1453b3c380adb","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"How fast are Azure changes synced?","status":"active","generatedBy":"contextual","path":"integrations/azure-real-time-sync","createdAt":"2026-11-04T19:01:35.255Z","updatedAt":"2026-11-04T19:01:35.255Z","__v":0},{"_id":"6aeb810f56a1453b3c380add","deploymentId":"68ddaa9a3f8b7de5bc3a7b47","questionText":"How do I set up Azure sync?","status":"active","generatedBy":"contextual","path":"integrations/azure-real-time-sync","createdAt":"2026-11-04T19:01:35.255Z","updatedAt":"2026-11-04T19:01:35.255Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T19:01:23.409Z","gitLastModified":"2025-10-28T01:01:05.000Z","originalFileLocation":"integrations/azure-real-time-sync.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Azure Real Time Sync Setup - Opal Security Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Opal Security Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opal.dev/integrations/azure-real-time-sync\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opalsecurity.mintlify.site/_mintlify/api/og/v2?division=Azure\u0026amp;title=Azure+Real+Time+Sync+Setup\u0026amp;theme=156eb1ba223f12a303f95077\u0026amp;signature=c7e834807242abea45fc99d526825af626c588ce25ae69a20513151dfc567f78\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Azure Real Time Sync Setup - Opal Security Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opalsecurity.mintlify.site/_mintlify/api/og/v2?division=Azure\u0026amp;title=Azure+Real+Time+Sync+Setup\u0026amp;theme=156eb1ba223f12a303f95077\u0026amp;signature=c7e834807242abea45fc99d526825af626c588ce25ae69a20513151dfc567f78\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/opalsecurity/t501z2uOx-XXqevB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Opal Security Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C7997\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opal.dev/integrations/azure-real-time-sync\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/azure-real-time-sync.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opal.dev/#organization\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/opalsecurity/FBbZyeMPZrA69UcV/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=FBbZyeMPZrA69UcV\u0026q=85\u0026s=93a4bd75f157f9f0ab43cdf4d715b5cd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opal.dev#website\",\"name\":\"Opal Security Docs\",\"url\":\"https://docs.opal.dev\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opal.dev/integrations/azure-real-time-sync#webpage\",\"url\":\"https://docs.opal.dev/integrations/azure-real-time-sync\",\"name\":\"Azure Real Time Sync Setup\",\"dateModified\":\"2025-10-28T01:01:05.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opal.dev/integrations/azure-real-time-sync#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opal.dev/integrations/azure-real-time-sync#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"IDP \u0026 HRIDP\",\"item\":\"https://docs.opal.dev/integrations/okta\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure\",\"item\":\"https://docs.opal.dev/integrations/azure\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Azure Real Time Sync Setup\",\"item\":\"https://docs.opal.dev/integrations/azure-real-time-sync\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.opal.dev/integrations/azure-real-time-sync#article\",\"headline\":\"Azure Real Time Sync Setup\",\"name\":\"Azure Real Time Sync Setup\",\"url\":\"https://docs.opal.dev/integrations/azure-real-time-sync\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opal.dev/integrations/azure-real-time-sync#webpage\"},\"dateModified\":\"2025-10-28T01:01:05.000Z\",\"publisher\":{\"@id\":\"https://docs.opal.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opal.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Opal Security Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Opal Security Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/integrations/azure-real-time-sync.md","siteName":"Opal Security Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/welcome"}]},{"tab":"Integrations","pages":[{"title":"Integrations","sidebarTitle":"Overview","mode":"wide","href":"/integrations/overview"},{"group":"IDP \u0026 HRIDP","pages":[{"group":"Okta","pages":[{"title":"Okta","sidebarTitle":"Connect to Okta","href":"/integrations/okta"},{"title":"Okta IDP/HRIS Integration","href":"/integrations/okta-idphris-integration"},{"title":"Import Okta apps","href":"/integrations/okta-apps"},{"title":"Okta rate limits","href":"/integrations/okta-rate-limits"}]},{"group":"OneLogin","pages":[{"title":"OneLogin IDP/HRIS Integration","tag":"NEW","href":"/integrations/onelogin-idphris-integration"}]},{"group":"Google","pages":[{"title":"Google","sidebarTitle":"Connect to Google","href":"/integrations/google"},{"title":"Google IDP/HRIS Integration","href":"/integrations/google-idphris-integration"},{"title":"Google Groups","href":"/integrations/google-groups"},{"title":"Google Shared Drive","tag":"NEW","href":"/integrations/google-shared-drive"},{"title":"Google Workspace","href":"/integrations/google-workspace"}]},{"group":"Azure","pages":[{"title":"Azure","sidebarTitle":"Connect to Azure","href":"/integrations/azure"},{"title":"Azure Entra IDP/HRIS Integration","href":"/integrations/azure-entra-idphris-integration"},{"title":"Azure Infrastructure Setup","href":"/integrations/azure-infrastructure-setup"},{"title":"Add Azure Databases","description":"Add Azure databases to grant users temporary access.","href":"/integrations/adding-azure-sql-databases"},{"title":"Azure Real Time Sync Setup","href":"/integrations/azure-real-time-sync"}]},{"group":"Active Directory","pages":[{"title":"Overview","description":"Connect your Active Directory server to use Opal to manage and review access.","sidebarTitle":"Connect to Active Directory","href":"/integrations/active-directory"},{"title":"Active Directory IDP/HRIS Integration","href":"/integrations/active-directory-idphris-integration"}]},{"group":"Workday","pages":[{"title":"Overview","sidebarTitle":"Connect to Workday","href":"/integrations/workday"},{"title":"Workday IDP/HRIS Integration","href":"/integrations/workday-idphris-integration"}]},{"group":"Rippling","pages":[{"title":"Rippling IDP/HRIS Integration","tag":"NEW","href":"/integrations/rippling-idphris-integration"}]}]},{"group":"Entitlement Management","pages":[{"group":"Infrastructure","expanded":true,"pages":[{"group":"Amazon Web Services (AWS)","expanded":false,"pages":[{"title":"Amazon Web Services (AWS)","href":"/integrations/setting-up-your-aws-organization-in-opal"},{"title":"Configure AWS for self-hosted Opal","href":"/integrations/aws-integration-on-prem-setup"},{"title":"Configure additional AWS accounts to manage in Opal","href":"/integrations/configure-additional-aws-accounts-to-manage-in-opal"},{"title":"AWS IAM Identity Center Workflows","href":"/integrations/aws-iam-identity-center-formerly-aws-sso"},{"title":"Add an IAM role","href":"/integrations/adding-an-iam-role"},{"title":"Add an RDS database","href":"/integrations/adding-an-rds-database"},{"title":"Add an EC2 instance","href":"/integrations/adding-an-ec2-instance"},{"title":"Add an EKS cluster","href":"/integrations/adding-an-eks-cluster"},{"title":"Adding AWS Resources to Opal Groups via AWS Tags","href":"/integrations/adding-aws-resources-to-opal-groups-via-aws-tags"},{"title":"AWS Real Time Sync Setup","href":"/integrations/aws-real-time-sync"}]},{"group":"Google Cloud Platform (GCP)","expanded":false,"pages":[{"title":"Google Cloud Platform (GCP)","sidebarTitle":"Connect to GCP","href":"/integrations/google-cloud-platform"},{"title":"Add an organization","href":"/integrations/adding-gcp-organization"},{"title":"Add a project","href":"/integrations/adding-gcp-project"},{"title":"Add a folder","href":"/integrations/adding-gcp-folder"},{"title":"Add a BigQuery Dataset","href":"/integrations/adding-bigquery-dataset"},{"title":"Add a Cloud Storage bucket","href":"/integrations/adding-gcp-bucket"},{"title":"Add a Cloud SQL Instance","href":"/integrations/adding-sql-instance"},{"title":"Add a Compute Engine Instance","href":"/integrations/adding-compute-instance"},{"title":"Google Kubernetes Engine (GKE)","href":"/integrations/google-kubernetes-engine-getting-started"},{"title":"GCP Service Accounts","href":"/integrations/gcp-service-accounts"}]},{"group":"Snowflake","expanded":false,"pages":[{"title":"Snowflake","sidebarTitle":"Connect to Snowflake","href":"/integrations/snowflake"},{"title":"Snowflake User Provisioning","href":"/integrations/snowflake-user-provisioning"}]}]},{"title":"1Password","tag":"NEW","href":"/integrations/1password"},{"title":"Anthropic Platform","href":"/integrations/anthropic"},{"title":"Astra","href":"/integrations/astra"},{"title":"Axiom","href":"/integrations/axiom"},{"title":"Box","tag":"NEW","href":"/integrations/box"},{"title":"Clickhouse","href":"/integrations/clickhouse"},{"title":"Atlassian Confluence","sidebarTitle":"Atlassian Confluence","href":"/integrations/confluence"},{"title":"Coupa","href":"/integrations/coupa"},{"title":"Cursor","href":"/integrations/cursor"},{"title":"Databricks","href":"/integrations/databricks"},{"title":"Datadog","href":"/integrations/datadog"},{"title":"Devin AI","href":"/integrations/devin"},{"title":"Docusign","href":"/integrations/docusign"},{"title":"Duo","href":"/integrations/duo"},{"title":"GitGuardian","tag":"NEW","href":"/integrations/gitguardian"},{"title":"GitHub","href":"/integrations/github"},{"title":"GitHub Enterprise","href":"/integrations/github-enterprise"},{"title":"GitLab","href":"/integrations/gitlab"},{"title":"Grafana","href":"/integrations/grafana"},{"title":"Hubspot","href":"/integrations/hubspot"},{"title":"Incident.io","href":"/integrations/incidentio"},{"title":"Atlassian Jira","sidebarTitle":"Atlassian Jira","href":"/integrations/jira"},{"title":"LDAP","href":"/integrations/ldap"},{"title":"Linear","sidebarTitle":"Linear","href":"/integrations/linear"},{"title":"NetSuite","href":"/integrations/netsuite"},{"title":"Okta CIAM","href":"/integrations/okta-ciam"},{"title":"OneLogin","tag":"NEW","href":"/integrations/onelogin"},{"title":"OpenAI Platform","href":"/integrations/openai"},{"title":"Oracle Fusion Cloud","href":"/integrations/oracle-fusion-cloud"},{"title":"PagerDuty","href":"/integrations/pagerduty-entitlements"},{"title":"Ramp","href":"/integrations/ramp"},{"title":"Rippling","href":"/integrations/rippling"},{"title":"Rootly","href":"/integrations/rootly"},{"title":"Salesforce","href":"/integrations/salesforce"},{"title":"Sentry","tag":"NEW","href":"/integrations/sentry"},{"title":"Slack users, groups, and roles","href":"/integrations/slack-user-groups"},{"title":"Square","tag":"NEW","href":"/integrations/square"},{"title":"Salesforce Tableau","href":"/integrations/tableau"},{"title":"Tailscale","href":"/integrations/tailscale"},{"title":"Teleport","href":"/integrations/teleport"},{"title":"Twingate","href":"/integrations/twingate"},{"title":"Vercel","href":"/integrations/vercel"},{"title":"Workato","tag":"NEW","href":"/integrations/workato"},{"title":"Workday groups and roles","href":"/integrations/workday-groups-and-roles"},{"title":"Wrike","href":"/integrations/wrike"},{"title":"Zendesk","href":"/integrations/zendesk"},{"title":"Zoom","href":"/integrations/zoom"}]},{"group":"Productivity Tools","pages":[{"group":"Communication","expanded":true,"pages":[{"title":"Google Chat","href":"/integrations/google-chat"},{"title":"Lark","href":"/integrations/lark"},{"title":"Microsoft Teams","href":"/integrations/microsoft-teams"},{"title":"Slack","href":"/integrations/slack"}]},{"group":"Ticketing","expanded":true,"pages":[{"title":"Freshservice","href":"/integrations/freshservice"},{"title":"Jira","href":"/integrations/jira-ticketing"},{"title":"Linear","href":"/integrations/linear-ticketing"},{"title":"Notion","href":"/integrations/notion"},{"title":"Risotto","tag":"BETA","href":"/integrations/risotto"},{"title":"ServiceNow","href":"/integrations/servicenow"},{"title":"Shortcut","href":"/integrations/shortcut"}]},{"group":"On-call","expanded":true,"pages":[{"title":"Opsgenie","deprecated":true,"href":"/integrations/opsgenie"},{"title":"PagerDuty","deprecated":true,"href":"/integrations/pagerduty-oncall"}]}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/authentication"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"basePath":"","title":"Azure Real Time Sync Setup - Opal Security Docs","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BbK2OBGL.js","lightbox-handle-r17bVUz3.js"]}