LIVE · ENTRA SIGN-IN MONITORING & AUTO-BLOCK

Auto-block where there's no judgment call. Approval where there is.

Blackwall watches every Entra sign-in — successful or failed — for two triggers: a disabled account authenticating, or a sign-in from a country the user doesn't normally use. Disabled-user hits are blocked immediately, no approval needed. Geo-anomalies go to Slack as a card scoped to the exact RDAP network, not a guess, so a human can judge blast radius before anything is blocked.

10-min detection cycle — Slack-native approvals — GitHub ↗
The pattern

A human approves every write — except the one case with no legitimate explanation.

There's no scenario where a disabled account should be authenticating, so that path skips approval entirely: sessions are revoked and the source IP is auto-blocked as a single address, since there's no human in the loop to judge how wide to go. Every other trigger carries real false-positive risk — employee travel looks exactly like a geo-anomaly — so it routes to Slack instead, with enough context to tell the difference without leaving the channel.

01
Disabled-user → automatic
Session revoked, source IP auto-blocked as a single address. A Slack post for visibility, with an Unblock button as the safety net.
02
Geo-anomaly → Slack approval
Block single IP, block the full RDAP-scoped range, whitelist 28 days for known travel, or reject — with network classification and abuse contact shown inline.
03
Escalation is automatic
A second offense on the same network, or the same user from 2+ distinct blocked ranges, upgrades a temporary block to permanent without a new approval.
04
Everything is logged
Every sign-in in the lookback window is recorded for audit, whether or not it results in a block — the full pattern, not just the triggering incident.
WHAT'S RUNNING · FOUR INDEPENDENT PIECES
01 · Sign-in detection
🚫
Internal · Microsoft Graph
Disabled-user and geo-anomaly blocking

Every Entra sign-in in the lookback window — successful or failed — is checked against the two triggers above. Repeat attempts against an IP that's already blocked don't generate a new Slack post; the event is still logged, and a temporary block silently upgrades to permanent if it crosses the repeat-offense threshold.

Cycle On boot, then every 10 minutes
Enrichment ASN/CIDR + abuse contact via RDAP
Whitelist 28-day, reason required, auto-expiring
02 · Fleet health mirrors
🖥️
Internal · SentinelOne + Defender
Read-only inventory, not another console

SentinelOne agent inventory and Microsoft Defender signals (risky users, XDR alerts, device health) sync into Blackwall on their own schedules and surface on dashboards behind Entra SSO — one place to see what's offline, flagged, or at risk without switching consoles. Purely observational; nothing here writes back upstream.

SentinelOne Inventory, version spread, offline agents · 30 min
Defender Risky users, XDR alerts, device health
Coverage Cross-checks agent logins vs. full-time staff
03 · Policy & CVE tracking
🧭
Internal · Intune + Defender TVM
Where hardening policy actually stands

A read-only mirror of Intune and Conditional Access policy, checked against Defender's vulnerability-management recommendations and mapped to the closest SentinelOne control where Defender itself is inactive. Drafts hardening changes as ready-to-review policy JSON — nothing is pushed without a human.

Mirror Intune + Entra policy, with drift history
Mapping Defender TVM → Intune setting or S1 equivalent
Drafts Staged by risk wave — review only, nothing pushed
04 · Security agent
🤖
Internal · Separate service
Claude-powered advisory triage

A standalone Railway service that reads Blackwall's own detection and policy tables through a dedicated read-only database role and posts analysis to Slack — it never blocks, dismisses, or changes anything itself. Runs on a cost-controlled pipeline: a cheaper model triages first, escalating to a stronger one only when it's warranted, under a weekly AI-call budget.

Access Dedicated read-only role, own service
Trigger Slack /investigate, plus event-driven polling
Action Advisory only — posts findings, never writes
Runtime
Node.js Express Railway
Slack
@slack/bolt Interactive approvals /investigate
Data sources
Microsoft Graph SentinelOne API Defender XDR RDAP
Dashboards
Entra SSO (PKCE) Postgres sessions

Blackwall is an internal system at YourPolicy — not a public product. It monitors Entra sign-ins, auto-blocks what has no legitimate explanation, and routes everything else through Slack for a human to decide.