Data breaches happen. What matters is knowing about them before attackers use stolen credentials against your organization. XposedOrNot monitors over 10.5 billion exposed records across 659 verified breaches, and this integration brings that intelligence right into Microsoft Sentinel.
Key Benefits:
- π Proactive Threat Detection: Spot compromised credentials before they're used in attacks
- π Unified Security View: Correlate breach exposures with your existing security data
- β‘ Automated Monitoring: Continuous sync of breach data for your monitored domains
- π― Prioritized Response: Risk-scored exposures help you focus remediation efforts
- π Executive Dashboards: Pre-built workbook for security posture reporting
This integration works with both XposedOrNot Community Edition (free) and XposedOrNot Plus (commercial):
| Edition | Use Case | API Key Source |
|---|---|---|
| Community | Individual/small team monitoring | xposedornot.com |
| Plus - Enterprise | Monitor your organization's domains | plus.xposedornot.com |
| Plus - ThreatIntel | Monitor partners and customers | plus.xposedornot.com |
Once deployed, the integration automatically pulls breach exposure data for your monitored domains. Your security team can then identify at-risk accounts, trigger password resets, and detect credential-based attacks.
You can deploy this solution in two ways:
Click the Deploy to Azure button above. The Azure Portal wizard walks you through configuration. Just provide your workspace details and API key.
az deployment group create \
-g <resource-group> \
-f mainTemplate.json \
-p workspaceName=<workspace> \
workspaceResourceGroup=<workspace-rg> \
xonApiKey=<your-api-key>Before you begin, make sure you have:
β οΈ Important: This template deploys into an existing Sentinel workspace. It does not create a new workspace.
- β Microsoft Sentinel-enabled Log Analytics workspace (must exist before deployment)
- β
XposedOrNot API key: Get yours from:
- plus.xposedornot.com (Enterprise plans)
- xposedornot.com (Free community API key works too!)
Don't have a Sentinel workspace yet? Create one first:
# Create Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group <your-rg> \
--workspace-name <your-workspace> \
--location <region>
# Enable Sentinel
az sentinel onboarding-state create \
--resource-group <your-rg> \
--workspace-name <your-workspace> \
--name default| Permission | Scope | Why It's Needed |
|---|---|---|
| Contributor or Owner | Resource Group | Deploy Azure resources (Logic App, Key Vault, DCR) |
| Microsoft Sentinel Contributor | Workspace | Deploy workbook and analytics rule |
π‘ Tip: Deploying to a different resource group than your Sentinel workspace? You'll need Contributor on both.
That's it, you're done! π
The connector starts automatically. Just wait for data to show up.
| Timeline | What Happens |
|---|---|
| 0 min | Deployment completes |
| ~2 min | First data sync runs automatically |
| ~5-7 min | Data appears in workbook |
Note: The 2-minute delay lets Azure permissions propagate before the first sync.
Optional steps:
- Grant yourself Key Vault access: Only needed if you want to view/update the API key later
- Enable Analytics Rule: Recommended after 24h of data
Need to update your API key later? Check out Managing the API Key
Breach intelligence workbook showing exposure analytics, risk breakdown, and timeline.
π How to access: After deployment, go to Microsoft Sentinel β Workbooks β My workbooks β XposedOrNot Breach Intelligence
| Resource | Purpose |
|---|---|
| Key Vault | Securely stores API key (RBAC-enabled) |
| Data Collection Endpoint | Ingestion endpoint |
| Data Collection Rule | Schema and routing |
| Logic App | Scheduled data polling (auto-starts) |
| Workbook | Breach intelligence dashboard |
| Analytics Rule | New breach detection (disabled by default) |
Total: 9 resources. The Logic App uses Managed Identity for all access, so no manual authorization needed.
Click the Deploy to Azure button above, or use the CLI command in the Installation section.
Done! The connector starts automatically. First data appears in ~5 minutes.
Run in Log Analytics or check the Workbook:
XonBreachDetails_CL
| take 10- Go to Microsoft Sentinel β Analytics
- Find "XposedOrNot - New Breach Exposure Detected"
- Click Enable
Only needed if you want to view or update the API key later.
The Key Vault uses RBAC. You need the Key Vault Secrets Officer role.
Option A: Azure Portal
- Go to Resource Group β kv-xon-[suffix] (Key Vault)
- Click Access control (IAM) in left menu
- Click + Add β Add role assignment
- Select Key Vault Secrets Officer
- Click Next β + Select members β Search for your name β Select
- Click Review + assign
Option B: Azure CLI
# Get your user ID
USER_ID=$(az ad signed-in-user show --query id -o tsv)
# Get Key Vault ID
KV_ID=$(az keyvault list -g <resource-group> --query "[?contains(name,'kv-xon')].id" -o tsv)
# Assign role
az role assignment create \
--role "Key Vault Secrets Officer" \
--assignee "$USER_ID" \
--scope "$KV_ID"β³ Wait 2-3 minutes for the role to propagate before accessing secrets.
- Azure Portal β Resource Group β kv-xon-[suffix]
- Click Secrets in left menu
- Click xon-api-key
- Click current version β Show Secret Value
β οΈ Seeing "unauthorized to view"? You need Key Vault Secrets Officer role. See above.
- Go to Key Vault β Secrets β xon-api-key
- Click + New Version
- Enter your new API key in Secret value
- Click Create
The Logic App automatically picks up the new key on its next run.
az keyvault secret set \
--vault-name kv-xon-<suffix> \
--name xon-api-key \
--value "your-new-api-key"| Parameter | Required | Default | Description |
|---|---|---|---|
workspaceName |
Yes | - | Log Analytics workspace name |
workspaceResourceGroup |
Yes | - | Workspace resource group |
xonApiKey |
Yes | - | XposedOrNot API key |
pollingFrequencyHours |
No | 12 | Sync interval (1, 6, 12, 24) |
deployWorkbook |
No | true | Deploy dashboard |
deployAnalyticsRule |
No | true | Deploy detection rule |
Table: XonBreachDetails_CL
| Column | Type | Description |
|---|---|---|
| TimeGenerated | datetime | Ingestion time |
| string | Exposed email | |
| EmailDomain | string | Email domain part |
| Domain | string | Monitored domain |
| BreachName | string | Breach name |
| BreachedDate | datetime | When breach occurred |
| PasswordRisk | string | plaintext, easytocrack, unknown, stronghash |
| ExposedDataTypes | string | Types of exposed data |
| ExposedRecords | real | Records in breach |
| BreachDescription | string | Breach details |
| IsSearchable | boolean | Searchable in XON |
| SnapshotId | string | Sync run ID |
High-risk exposures:
XonBreachDetails_CL
| where PasswordRisk in ('plaintext', 'easytocrack')
| summarize Count=count() by Email, PasswordRisk
| order by Count descBreaches by domain:
XonBreachDetails_CL
| summarize
Exposures = count(),
Breaches = dcount(BreachName)
by Domain
| order by Exposures descRecent activity:
XonBreachDetails_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by bin(TimeGenerated, 1h)
| render timechartCause: Key Vault uses RBAC and you don't have permission.
Fix:
- Go to Key Vault β Access control (IAM)
- Add Key Vault Secrets Officer role to yourself
- Wait 2-3 minutes for propagation
Cause: RBAC permissions haven't propagated yet.
Fix: Wait 5 minutes and retry. If still failing:
# Check Logic App's assigned roles
PRINCIPAL=$(az logic workflow show -g <rg> -n <name> --query identity.principalId -o tsv)
az role assignment list --assignee $PRINCIPAL -o tableShould show:
- Key Vault Secrets User on Key Vault
- Monitoring Metrics Publisher on DCR
Cause: Data hasn't synced yet, or there's a Logic App issue.
Timeline check:
- Less than 7 minutes since deployment? Wait. First sync runs at ~2 min, data appears at ~5-7 min.
- More than 10 minutes? Check steps below.
Fix:
- Check Logic App state: Should be Enabled
- Check run history in Logic App: Look for errors
- If first run failed: Wait 1 minute for permissions, then click Run Trigger β Scheduled_Poll
- Verify API key is valid at xposedornot.com or plus.xposedornot.com
Cause: Log Analytics ingestion delay (this is normal).
Fix: Wait 3-5 minutes after Logic App run completes. Data ingestion has some latency.
Verify data arrived:
XonBreachDetails_CL | countXposedOrNot API βββΊ Logic App βββΊ Data Collection Endpoint/Rule
β β
βΌ βΌ
Key Vault Log Analytics Workspace
(API Key) β
βΌ
Microsoft Sentinel
(Workbook + Analytics)
Data Flow:
- Logic App runs on schedule (default: every 12 hours)
- Retrieves API key securely from Key Vault
- Calls XposedOrNot API to fetch breach data for monitored domains
- Sends data to Log Analytics via Data Collection Rule
- Sentinel Workbook visualizes the data; Analytics Rule creates incidents
- API Key is stored in Key Vault, never in Logic App code
- Key Vault uses RBAC (not access policies) for modern security
- Logic App uses Managed Identity for all Azure access
- All connections use TLS 1.2+
- Key Vault has soft-delete enabled (7 days recovery)
| Identity | Role | Scope | Purpose |
|---|---|---|---|
| Logic App (MSI) | Key Vault Secrets User | Key Vault | Read API key |
| Logic App (MSI) | Monitoring Metrics Publisher | DCR | Write to Sentinel |
| You (deployer) | Key Vault Secrets Officer | Key Vault | Manage API key (optional) |
- Initial release
- Data Connector with Logic App (Managed Identity)
- Key Vault integration with RBAC-only security
- Pre-built Workbook for breach intelligence visualization
- Analytics Rule for new breach detection
- One-click Deploy to Azure with guided wizard
- Automatic first sync after deployment
This project is part of the XposedOrNot open-source ecosystem. We believe security tools should be transparent, community-driven, and accessible to everyone.
Why open source?
- π Transparency: See exactly how your breach data is handled
- π‘οΈ Trust: No black boxes, no hidden code
- π€ Community: Built by security professionals, for security professionals
- π Innovation: Your contributions make it better for everyone
Explore our other projects:
- XposedOrNot-API: The API powering breach checks
- XposedOrNot-Website: The public web interface
If this integration helps protect your organization:
- π Star this repo to help others discover it
- π΄ Fork it and make it your own
- π Report issues so we can squash bugs
- π‘ Contribute with PRs (check CONTRIBUTING.md)
- π’ Share with your security team
Every star, fork, and contribution helps the security community. Thank you! π
- API Documentation:
- Community Edition: api.xposedornot.com/docs
- Plus (Commercial): console.xposedornot.com/docs
- Issues: GitHub Issues
- Email: help@xposedornot.com
MIT License - see LICENSE
