Architecture

HomeArchitecture → Security Model

Security Model

Ironmark assumes the customer owns the infrastructure. The platform is responsible for application security; the deployment environment is responsible for infrastructure security. Together they form the complete security model.

Security is a property of the architecture, not a collection of optional features. What follows is the design side — how authentication, authorization, audit, deployment, and data protection are structured, and where the customer-side line falls.

Authentication

Every method authenticates against the same user record, issues the same JWT session, and lands in the same audit chain. Enable one or more per tenant.

Authorization

Role-based access

Nine application roles — admin, author, qa, peer_review, cir_controller, graphics_editor, program_manager, customer, viewer — plus sysadmin as a separate capability for offline-update flows. Every endpoint enforces role at the API layer, not just the UI.

Project isolation

Each project is a self-contained copy — documents, graphics, applicability filters, BREX rules, deliveries, membership. Users can have different roles on different projects; cross-project data does not flow unless an admin explicitly groups projects via a TM Family (which is read-only across the family boundary).

Least privilege

Users have a primary role plus zero or more granted roles. A granted role is available but not always-on: activate it through sudo-style temporal elevation for a time-boxed window. Elevation shows as a countdown chip in the UI, drops automatically at expiry, and every action taken under elevation carries the elevation event id in the audit record. Pattern is deliberately Unix-sudo-shaped.

Audit

HMAC-chained audit log

Every state-changing action writes to audit_log. Rows carry the acting user, timestamp, event type, resource, details, IP, session id, and the caller's role_at_time plus elevation_event_id if elevation was active. Each row's record_hash is an HMAC-SHA256 chained to the prior row's hash — deleting or editing a row breaks the chain and is detectable on audit read. Append-only and self-verifying.

Export

Read access: admin only. Filters: event_type, user_id, user_email, ip_address, since/until, free-text search. Export as newline-delimited JSON.

SIEM integration

NDJSON export is designed for direct ingestion into a SIEM. Splunk, Elastic, and Sentinel all accept NDJSON on file-tail or forwarder input; the schema is stable across releases.

Deployment

Data protection

Compliance

Compliance for a program is a function of both the application and the environment it runs in. We can be specific about the application side.

Application controls implemented
  • Authentication (AC-2, IA-2)
  • Session controls (AC-11, AC-12)
  • Access controls / RBAC (AC-3, AC-6)
  • Audit and accountability (AU-2, AU-3, AU-6, AU-9)
  • Configuration integrity — signed bundles + licenses (CM-14)
  • Identification via WebAuthn / PKI (IA-2, IA-5)
Infrastructure controls — customer responsibility
  • Physical & environmental (PE)
  • Media protection (MP)
  • Personnel security (PS)
  • System & communications protection at the network layer (SC)
  • Storage-level encryption (typically LUKS)
  • Operating system hardening + patching (SI)

NIST SP 800-171 application-side controls are implemented; the infrastructure-side controls remain the responsibility of the deployment environment. Programs targeting FedRAMP or DoD IL levels typically cite these application controls directly and document the environment side separately.

For a compliance package, customer onboarding assembles the application-controls evidence (audit-chain proofs, auth-method configuration, bundle signature verification, elevation records) into a shape that maps directly onto the program's ATO documentation. The application side of the SSP is a known quantity; the environment side is where the customer's security team adds their controls.

← Back to Architecture