Skip to content

Security Model

This section covers the security architecture including authentication, rate limiting, data integrity, and threat modeling.

For operational security configuration details, see Operations > Security.


DuraGraph applies security at multiple layers:

flowchart LR
    A[Client] --> B[Rate Limiting]
    B --> C[Authentication]
    C --> D[Authorization]
    D --> E[Domain Logic]
    E --> F[(Event Store)]

Token bucket rate limiting protects against abuse before any business logic executes. Configured via RATE_LIMIT_ENABLED, RATE_LIMIT_RPS, and RATE_LIMIT_BURST environment variables. Three strategies available (in-memory, Redis, tiered) with standard HTTP response headers.

See Deployment > Rate Limiting for configuration.

JWT-based authentication validates bearer tokens when AUTH_ENABLED=true. User identity is extracted and propagated through the request context for rate limiting keys, audit trails, and authorization checks.

  • Optimistic concurrency control — Version columns on run aggregates prevent lost updates across instances.
  • Lease epoch fencing — Prevents stale workers from completing reassigned tasks.
  • Event immutability — Events in the event store are append-only. They are never modified or deleted.
  • Transactional outbox — Events and outbox entries are written atomically, preventing data inconsistency.

Horizontal scaling introduces coordination challenges. DuraGraph addresses these without external coordination services:

ConcernMechanism
Lost updatesOptimistic concurrency (version column on UPDATE ... WHERE version = $expected)
Duplicate processingFOR UPDATE SKIP LOCKED on outbox relay and lease scanning
Stale worker completionLease epoch fencing tokens
Singleton job duplicationPostgreSQL advisory locks (pg_try_advisory_lock)

See Architecture Overview > Horizontal Scaling for implementation details.


ThreatVectorMitigation
SpoofingForged API requestsJWT authentication + webhook signing
TamperingModified events or checkpointsEvent immutability, optimistic concurrency, S3 ETag
RepudiationUsers denying actionsEvent sourcing provides complete audit trail
Information DisclosureSecrets in logs/tracesRedaction policy, sensitive field filters
Denial of ServiceRun flooding, SSE spamRate limiting (token bucket), 429 backpressure
Elevation of PrivilegeBypassing RBACNamespace scoping, strict role checks