Universal AI ↔ Enterprise Data control plane · 31 backends · HMAC-audited Read the whitepaper →
AegisAI
AI on Azure · Entra ID propagation

AI agents on Azure without breaking Entra ID.

AegisAI uses Entra ID (formerly Azure AD) on-behalf-of flow to propagate the calling user's identity to Synapse, Fabric, Cosmos DB, and the data services Microsoft Copilot Studio already lives in. Conditional Access policies stay enforced. Purview lineage tracks the actual user.

Build status
Azure integration
as of June 2026

✓ LIVE: Synapse SQL endpoint via REST. AAD per-user RBAC check framework. Entra ID JWT validation.

⧉ EARLY ACCESS · Q3 2026: OBO flow end-to-end to data plane, Synapse Spark pool per-user job submission, Conditional Access propagation

⧉ ROADMAP · Q4 2026: Microsoft Fabric / OneLake item-level enforcement, Power BI semantic model RLS, Cosmos DB partition-key RBAC, Azure OpenAI per-user quota, Purview lineage correlation

The OBO flow primitive is built and reused per Azure service. Each new data plane integration is ~5 engineer-days against a customer Azure sandbox.

The Azure-specific problem

Microsoft built per-user controls into every service. Naive integration bypasses them all.

Conditional Access policies, Synapse workspace role assignments, Fabric capacity permissions, Cosmos DB RBAC, Purview data classifications — Azure's permission model is rich. Most "AI on Azure" tutorials skip it entirely with a service principal and broad scope. That choice flattens your security posture.

Conditional Access bypass

Your CISO spent six months designing Conditional Access policies — MFA on data access, IP restrictions, device compliance. A service principal sidesteps all of it. The CA policies become decorative.

Purview lineage gaps

Purview tracks data lineage based on the calling principal. When everything calls as the same service principal, lineage becomes useless — you can't tell which business unit is touching what.

Cross-tenant complexity

B2B guest users, multi-tenant SaaS, sovereign clouds — the right answer requires per-user identity that survives tenant boundaries. A single-tenant service principal can't model this.

How AegisAI integrates with Azure

On-behalf-of flow. Entra ID does what it was designed to do.

AegisAI uses the OAuth 2.0 on-behalf-of (OBO) flow to exchange the user's IdP token for a delegated token bound to the user. Synapse, Fabric, and Cosmos DB see the actual user. Conditional Access still fires. Purview lineage stays accurate.

Synapse Analytics · Spark · SQL pools

Synapse workspace role assignments and dedicated SQL pool grants apply per user. Serverless SQL pool RBAC and data-plane permissions evaluate against the calling user's Entra ID principal.

  • Synapse workspace roles applied per user (Workspace Admin, SQL Admin, Apache Spark Admin)
  • Dedicated SQL pool table-level grants enforced
  • Serverless SQL pool RBAC for ad-hoc queries
  • Spark pool job submission under the user's identity for cost attribution

Microsoft Fabric · OneLake · Lakehouses

Fabric workspaces have item-level permissions. OneLake security applies role-level access per delta table. AegisAI propagates the user's identity so workspace boundaries, item permissions, and table-level access all work as configured.

  • Fabric workspace roles (Admin, Member, Contributor, Viewer)
  • OneLake security at the lakehouse / warehouse level
  • Power BI semantic model RLS enforced per user
  • Fabric Data Activator alerts attribute the actual user trigger

Cosmos DB · SQL API · MongoDB API

Cosmos DB RBAC role assignments apply at the database, container, or partition-key level. AegisAI's OBO token carries the user identity so partition-key-scoped permissions and document-level conditions still fire.

  • Built-in roles (Cosmos DB Data Reader / Contributor) applied per user
  • Partition-key-scoped custom RBAC roles
  • Conditional row filters via custom data plane operations
  • Audit log shows the actual user, not the integration AAD app

Azure OpenAI · Copilot Studio integration

Azure OpenAI deployments support per-user content filtering and per-user rate limits. When Copilot Studio calls data services via AegisAI, the underlying data calls happen under the user's identity — not the Copilot Studio service principal.

  • Azure OpenAI quota enforcement per user, not per shared SP
  • Content filter logs attributed to actual prompter
  • Copilot Studio knowledge base queries respect Purview classifications
  • Azure OpenAI on Your Data + AegisAI for backend per-user grants
Architecture · Azure-specific flow

From the user's Entra ID session to Synapse, end to end.

Entra ID
User OIDC JWT
Copilot Studio
Conversational AI
AegisAI Gateway
Validate + policy
↓ OAuth 2.0 on-behalf-of flow ↓
Conditional Access
MFA / device / IP checks
Delegated token
Bound to user's oid
Purview
Lineage attribution
↓ Per-user data plane call ↓
Synapse
Workspace role enforced
Fabric / OneLake
Item-level permissions
Cosmos DB
RBAC per partition
Why this matters for Azure shops

Five things you stop worrying about.

Entra ID Sign-in logs attribute correctly

Sign-in logs show the actual user with the actual app context. Security ops can investigate suspicious patterns at the user level.

Conditional Access stays enforced

MFA, device compliance, IP allow-lists, risk-based policies — all fire per user. AI access doesn't become a CA bypass route.

Purview lineage stays accurate

Data lineage maps reflect actual user touchpoints. Data classification reports answer "who accessed PII?" with real names.

Azure Monitor cost tracking

Per-user cost attribution lets FinOps teams allocate AI consumption to actual business units, not a shared integration spend.

Ready when you are

One identity. Every cloud. Every AI agent.

30-minute architecture call. We open the operator console and run real queries through your stack — AWS, Azure, GCP, or all three. You see the audit chain tick up in real time.