Basis FoundationSecurity Architecture Research
basis-core v0.1.0 · basis-gateway v0.1.0 · MIT

Identity-Aware Authorization for Operational Technology

BASIS (Building Automation Secure Identity Service) is an open-source authorization ecosystem for operational technology environments — commercial buildings, hospitals, schools, warehouses, and data centers. The project explores how identity-aware authorization can be applied consistently across operational systems while preserving clear trust boundaries, deterministic policy evaluation, and structured auditability. Two runtime components are now released: basis-core, a deterministic authorization kernel, and basis-gateway, the identity-aware enforcement gateway that deploys it.

pip install basis-corePython 3.10+ · Pydantic ≥ 2.0 · MIT
github.com/basis-foundation/basis-gatewayv0.1.0 · MIT · source release
BASIS Operator Console showing live telemetry dashboard with HVAC and Data Center panels

The research proof of concept: live telemetry streaming over an authenticated WebSocket. The Data Center section shows rack inlet temperatures, hot/cold aisle thermals, and CRAC cooling status from the simulator.

The problem

The absence of identity controls in OT is an operational problem

Perimeter-based, not action-based access

A technician with read-only dashboard access can frequently issue override commands — because access control is coarse-grained and perimeter-based. There is no authoritative record of who changed a setpoint and when.

No unified policy layer

Multiple protocols — Modbus, BACnet, MQTT — each have separate or absent access control mechanisms with no unified policy layer. A compromised credential can grant access to everything the broker will accept.

AI infrastructure raises the stakes

GPU clusters are thermally critical systems, and the cooling and power infrastructure keeping them alive — CRAC units, PDUs, UPS systems — is OT. An unauthorized command to any of these, without identity verification or audit, can cascade into rack shutdowns.

One policy surface, one audit record

A kernel-based model gates every action through the same evaluation path: PolicyEngine evaluation → AuditEvent emission → adapter dispatch. A Modbus command and an MQTT publish cross the same authorization boundary and produce the same structured audit record.

Project scope

What BASIS is — and is not

The credibility of this work depends on being explicit about its boundaries. These are not limitations to be overcome — they are deliberate scope decisions.

BASIS is

An open-source authorization ecosystem for OT

Basis Foundation governs the BASIS ecosystem — a collection of components designed to provide identity-aware authorization for operational technology environments. The ecosystem defines kernel boundaries, domain contracts, and architectural patterns.

Grounded in production engineering analysis

The architecture research (basis-architecture) examines what identity-aware authorization actually requires in OT: trust boundary analysis, synchronization constraints, governance complexity, and operational realities. The white paper does not minimize these burdens.

basis-core is

A released Python authorization kernel

basis-core v0.1.0 is a pip-installable Python library providing PolicyEngine, EnforcementPoint, domain types, AuditEvent contracts, and AdapterBase. 625 passing tests. Stabilized public API. MIT license.

Protocol-agnostic and infrastructure-independent

The kernel evaluates authorization decisions without requiring a specific transport, database, or identity provider. It defines contracts — not implementations. Integration with specific infrastructure is the concern of adapters and services built on top of the kernel.

basis-gateway is

A released enforcement gateway

basis-gateway v0.1.0 provides OIDC authentication, JWT validation, identity normalization, HTTP request lifecycle, and gateway audit events. It is the enforcement boundary that deploys basis-core into production environments.

The component that owns what the kernel refuses

basis-core deliberately excludes authentication, transport, and identity-provider concerns. basis-gateway exists to own those responsibilities so the kernel can remain transport-agnostic, infrastructure-independent, and deeply portable.

BASIS is not

Production-ready OT security software

The proof of concept has not been validated against real OT hardware. Production readiness requires sustained validation against real operational conditions that has not occurred.

A claim that identity centralization solves OT security

Identity-aware authorization addresses a specific structural gap. It does not address firmware vulnerabilities, physical security, protocol weaknesses, or the many other dimensions of OT security that matter in practice.

A universal OT authorization solution

Commercial buildings, industrial process control, utilities, and manufacturing share authorization concerns but differ substantially in latency tolerances, safety integration, regulatory context, and governance structure.

A commercial product

BASIS is an open-source research and engineering effort. BASAuth — a future commercial entity in this space — is not yet operating.

Ecosystem

Basis Foundation, BASIS Core Services Distribution, and BASAuth

BASIS is an ecosystem with defined layers. Basis Foundation is the governing open-source body. The BASIS Core Services Distribution is the collection of components implementing the authorization model — now including basis-adapters, the protocol/platform normalization layer. BASAuth is a future commercial entity that is not yet operating.

Basis Foundation

Active

Open-source governing body. Owns basis-core, basis-architecture, and this website. Defines kernel boundaries, domain contracts, and ecosystem principles.

basis-core (MIT) · basis-architecture (Apache 2.0)

BASIS Core Services Distribution

In progress

The set of components that implement the full authorization model. basis-core and basis-gateway are the first two released runtime components, and basis-adapters is the public protocol/platform normalization layer. The remaining components are planned.

basis-core

Released — v0.1.0

Authorization kernel: PolicyEngine, EnforcementPoint, domain types, AuditEvent contracts

basis-gateway

Released — v0.1.0

Identity-aware enforcement gateway: OIDC authentication, JWT validation, identity normalization, gateway audit events

basis-adapters

Public — v0.1.0 RC

Protocol/platform normalization: REST, BACnet, Modbus, OPC UA, MQTT, DNP3, IEC 61850, KNX, Niagara — normalization-complete

basis-console

Planned

Operator console for policy management and audit review

basis-deploy

Planned

Deployment tooling and reference configurations

basis-schemas

Planned

Canonical schema definitions for interoperability

BASAuth

Not yet operating

A future commercial entity in the BASIS ecosystem. Not yet operating. No products or services are currently available.

Protocol normalization layer

basis-adapters normalizes OT protocol and platform operations into a shared authorization request model while preserving protocol evidence for auditability. The completed set covers REST, BACnet, Modbus, OPC UA, MQTT, DNP3, IEC 61850, KNX, and Niagara.

Adapters normalize. Gateway enforces. Kernel evaluates.

Protocol normalization reference →

basis-core

What the authorization kernel provides

basis-core is a Python library. Its public API is stabilized with a governed breaking-change process, ADR-reviewed changes, and contract snapshot tests.

PolicyEngine

Evaluates a chain of policies against a DecisionRequest. DENY short-circuits. NOT_APPLICABLE defaults to DENY. Exceptions produce fail-closed DENY. Returns a DecisionResponse with outcome and rationale.

EnforcementPoint

The integration boundary between the kernel and the caller. Accepts a DecisionRequest, invokes the PolicyEngine, emits an AuditEvent via the configured AuditWriter, and returns the decision.

Domain types

Subject, Resource, Action, IdentityContext — the normalized types that cross the kernel boundary. Protocol-agnostic by construction: a Modbus command and an MQTT publish share the same Subject/Resource/Action representation.

AuditEvent contracts

AuditEvent is a defined schema, not a log format. Every decision — allowed and denied — produces an AuditEvent. The AuditWriter protocol decouples the kernel from any specific persistence mechanism.

AdapterBase

The extension point for protocol adapters. Adapters implement AdapterBase and call the EnforcementPoint. The kernel has no knowledge of what the adapter connects to.

PolicyBase

The extension point for custom policies. Policies implement PolicyBase and return ALLOW, DENY, or NOT_APPLICABLE. Exceptions are caught by the engine and converted to fail-closed DENY.

Evaluation semantics

  • DENY short-circuits: the first DENY in the policy chain ends evaluation
  • NOT_APPLICABLE → DENY: a policy that declines to decide is not a pass
  • Exception → DENY: any error in policy evaluation fails closed
  • Empty policy set → DENY: no policy is not a default allow

Kernel design properties

How basis-core behaves, by construction

These properties are not aspirations or configuration options — they are structural properties of the kernel that hold across all callers.

Deterministic evaluation

PolicyEngine evaluation is deterministic: the same subject, resource, action, and context always produce the same decision. There is no probabilistic or time-dependent logic in the evaluation path.

Fail-closed enforcement

Any exception during policy evaluation produces DENY. An empty policy set produces DENY. A NOT_APPLICABLE result produces DENY. The kernel cannot be left in an open state by error or omission.

Auditability as a contract

AuditEvent is a first-class domain type with a defined schema. Every authorization decision — allowed and denied — produces an AuditEvent. The audit record is a contract, not an implementation detail.

Protocol agnosticism

The kernel operates on abstract Subject, Resource, Action, and IdentityContext types. It has no knowledge of HTTP, MQTT, Modbus, or any transport protocol. Protocol-specific logic belongs in adapters, not in the kernel.

Extension safety

Custom policies extend PolicyBase. Custom adapters extend AdapterBase. The extension points are narrow and typed — a policy that raises an exception is caught by the engine and converted to a fail-closed DENY.

Kernel isolation

basis-core has no runtime dependency on a specific identity provider, database, or network service. It evaluates decisions in-process, with no I/O required. Infrastructure dependencies are the concern of the caller.

Research proof of concept

What the PoC validated

basis-poc is the research implementation that preceded basis-core. It is a Docker Compose stack — Keycloak, FastAPI, Mosquitto, React, SQLite — built to validate that identity-aware authorization patterns are implementable and coherent in an OT context. basis-core is the authorization kernel extracted from this work.

Step 01

Live telemetry dashboard

HVAC temperature, CO₂ air quality, and occupancy telemetry arrive via authenticated WebSocket. The Data Center section streams rack inlet temperatures, hot/cold aisle thermals, CRAC cooling unit status, PDU load, UPS battery state, and environmental sensors — all from the simulator.

BASIS Operator Dashboard showing live HVAC and Data Center telemetry panels

Step 02

Authorization boundary enforced

Alice (viewer) encounters the policy boundary. The control panel shows it's locked. A direct API call to any command endpoint with her token returns 403 — the policy boundary is enforced server-side regardless of what the UI renders. The denial is written to the audit log.

Viewer-role locked control panel showing access restriction message

Step 03

Audit trail

Carol (admin) reads the audit log. Every action — bob's successful setpoint change, alice's 403, telemetry session connects and disconnects — appears as a timestamped event with subject, action, resource, and outcome. Denied events are as important as allowed ones.

Audit trail view showing timestamped events with allowed and denied outcomes

Open research areas

Unresolved architectural questions

The PoC demonstrates that the core concepts are implementable. These are the harder problems that remain open — not a product roadmap. Each reflects a genuine tension in deploying distributed authorization infrastructure in OT environments.

Synchronization and consistency

Bounded policy inconsistency across the enforcement fleet

Edge enforcement points running local policy caches will reflect heterogeneous policy versions during and after synchronization. This is the normal operating state of any distributed authorization system — not an edge case to be solved away.

Credential lifecycle

Revocation latency within the synchronization window

A revoked credential may remain valid at edge enforcement points until the next successful policy sync. Whether that window is acceptable depends on the circumstances. The architecture makes this tradeoff explicit; it cannot collapse the window to zero.

Governance fragmentation

Cross-domain authorization governance

The identity provider, policy engine, enforcement points, and protocol adapters typically span administrative domains that do not naturally coordinate. No existing governance framework fully addresses this. It must be designed deliberately for each deployment.

Fail behavior

Fail-open vs. fail-closed under enforcement point faults

Neither behavior is universally correct. Fail-closed authorization that blocks an emergency command is not a safe default. The deployment must negotiate this among operations, security, and safety stakeholders — the architecture frames the decision, it cannot make it.

Device identity at scale

Certificate lifecycle across multi-decade OT assets

A certificate infrastructure designed for three-year lifetimes operates through multiple rotation cycles during the multi-decade operational life of a building controller. Lifecycle planning for this is substantially more demanding than point-in-time design.

Lifecycle sustainability

Accumulated maintenance obligations over time

Policy that accurately reflected the access model at initial deployment becomes stale as organizational structures change. Protocol adapters may normalize device models incorrectly after firmware updates. These are the normal trajectory of any operational system sustained across real OT environments.

Repositories

Released components, architecture research, and proof of concept

The ecosystem spans five public repositories. basis-core is the authorization kernel. basis-gateway is the identity-aware enforcement gateway. basis-adapters is the protocol/platform normalization layer. basis-architecture is the intellectual center. basis-poc is the original research implementation.

basis-core — Authorization kernel

The v0.1.0 Python library: PolicyEngine, EnforcementPoint, domain types (Subject, Resource, Action), AuditEvent contracts, and AdapterBase. Stabilized public API, 625 passing tests, governed breaking-change process.

basis-gateway — Identity-aware enforcement gateway

The v0.1.0 enforcement gateway: OIDC authentication, JWT validation, identity normalization, HTTP request lifecycle, correlation IDs, gateway audit events, and strict fail-closed behavior. Embeds basis-core.

basis-adapters — Protocol/platform normalization

The v0.1.0 release-candidate normalization layer: REST, BACnet, Modbus, OPC UA, MQTT, DNP3, IEC 61850, KNX, and Niagara normalize into a shared authorization request while protocol evidence is preserved. Normalization-complete, not wire-protocol complete.

basis-architecture — White paper and systems analysis

"Identity-Aware Authorization for Operational Technology" — trust boundary analysis, production engineering constraints, threat modeling, synchronization complexity, governance fragmentation, and architecture principles.

White paper (full text)

The flagship technical document. Covers the architectural model, OT trust boundaries, production realities, threat modeling, and why the architecture redistributes complexity rather than eliminating it.

basis-poc — Research proof of concept

The original research PoC: Docker Compose environment, Keycloak, FastAPI with JWT middleware, Mosquitto, React dashboard, SQLite audit log, and simulated HVAC/data-center devices. A research artifact, not the canonical implementation.

Architecture Decision Records (basis-core)

ADRs from the basis-core repo — what was decided, why, and what alternatives were considered: repository purpose, modular monolith structure, core boundary, and adapter placement.

Open source — five public repositories

basis-core is the released authorization kernel (MIT). basis-gateway is the released enforcement gateway (MIT). basis-adapters is the protocol/platform normalization layer (Apache 2.0). basis-architecture contains the white paper and systems analysis (Apache 2.0). basis-poc is the original research implementation.