How Fabiana secures a multi-tenant WhatsApp AI platform with WardenAuth
Fabiana is a multi-tenant SaaS that deploys AI-powered WhatsApp agents for businesses using configurable vertical templates. Every customer is a separate tenant, every agent runs tools on their behalf, and every backend service needs scoped credentials. WardenAuth gives them tenant isolation, RBAC, scoped API keys, and an audit trail — without building it themselves.
The problem: every tenant needs its own authorization and credentials
Fabiana sells to many businesses at once. Each business — a dive center, a clinic, a service company — gets its own organization, its own bots, its own leads, and its own conversations. That means every request has two questions attached: which tenant is this, and is this actor allowed to do this here?
On top of that, customer backend services need programmatic access. Webhook processors, integrations, and internal tools all consume the platform through credentials. If those keys are shared, long-lived, or untracked, a single leak becomes a cross-tenant incident.
- Tenant isolation has to be impossible to bypass, not "enforced by convention"
- Roles differ per customer — owner, admin, agent, viewer — and need to evolve without redeploys
- API keys must be scoped, named, rotatable, and revocable per tenant
- Compliance buyers ask who did what, with which key, and from where
How Fabiana uses WardenAuth
Fabiana treats WardenAuth as the authorization and credential layer for the whole platform. The application keeps its own identity (Cognito), and delegates every permission question and every API key to WardenAuth.
- 1
One scope per organization
When a new customer organization is created, Fabiana creates a matching WardenAuth scope. Every access check carries that scope, so cross-tenant reads are structurally impossible.
- 2
Roles seeded per tenant
Owner, admin, agent, and viewer are seeded into each new scope. Enterprise customers can define custom roles without affecting anyone else — no shared global role table.
- 3
Every backend call is checked
Handlers call requirePermission with the resource and action before touching data. The decision comes back in single-digit milliseconds, on the critical path of the request.
- 4
Scoped API keys per service
Each tenant and internal service gets its own named key with a permission scope. Keys are prefixed for secret scanning, rotated with an overlap window, and revoked instantly when needed.
- 5
Audit on by default
Every decision and every key usage is recorded with actor, action, scope, and timestamp. Support and security can answer "did this key make calls after it should have stopped?" directly.
The outcome
Fabiana ships product instead of maintaining an authorization subsystem. Tenant isolation is a property of the platform, not a code review checklist.
- New tenants are fully isolated the moment they are created
- Customer-facing roles evolve without a schema migration or deploy
- No per-user or per-tenant pricing cliff as the customer base grows
- Audit answers are one query away, not a log archaeology project
- Agent tool calls flow through the same authorization and audit path
“Authorization is not a feature you bolt on after the first enterprise customer asks. Putting it in WardenAuth from day one meant tenant isolation and audit came for free.”
Go deeper
The three building blocks Fabiana relies on — read the concrete explanations.
Want access control with audit built in?
WardenAuth ships RBAC, scoped API keys, immutable audit trail, SoD, and approvals in one platform — on every tier. Enterprise adds SSO/SCIM, custom audit retention, and dedicated support.