Security & compliance posture
OpsGuardian is built to monitor compliance in others — so it has to practise what it preaches. Here is an accurate account of how we protect your data, not marketing copy.
Encryption
In transit
All traffic between the OpsGuardian agent and the API, between your browser and the application, and between internal services uses TLS 1.2 or later. We enforce HSTS with a 1-year max-age.
At rest
PostgreSQL data is encrypted at rest at the storage layer. Integration credentials are additionally encrypted at the application layer using pgcrypto AES-256 symmetric encryption before being stored.
Secrets management
Encryption keys are stored in Supabase Vault, isolated from the application database. No plaintext credentials are stored in environment variables or application config.
Tenant isolation
OpsGuardian is a multi-tenant SaaS platform. Your data is logically isolated from every other tenant at the database layer using PostgreSQL Row Level Security (RLS).
-
Every table with organisation-scoped data has RLS enabled and enforced — no exception.
-
SELECT, INSERT, UPDATE, and DELETE policies verify the requesting user's organisation membership before allowing access.
-
Admin-only tables use SECURITY DEFINER functions with a fixed search_path to prevent privilege escalation.
-
The API layer (Cloudflare Workers) never receives or forwards Supabase's service role key — it uses short-lived JWT tokens tied to the authenticated user.
API security
All client-facing requests go through the OpsGuardian API proxy at api.opsguardian.cloud. The Supabase project URL is never exposed in client code.
-
Agent requests are authenticated with HMAC-SHA256 signatures — each agent has a unique key that can be rotated or revoked.
-
Browser requests are authenticated with short-lived JWT tokens issued by the Supabase Auth service.
-
Rate limiting: 1 000 requests per minute per API key, enforced in the Cloudflare Worker.
-
Security headers are applied on all responses: CSP, HSTS, X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin.
Audit logging
Security-sensitive operations are written to the activity_logs table
immediately after they occur. Logs are append-only; application users cannot delete them.
User sign-in and sign-out events
Organisation member invitations and role changes
Asset creation and deletion
Alert rule creation, modification, and deletion
Remote command submission, confirmation, and execution
Patch job submission and execution
API key issuance and revocation
Audit log retention follows your subscription tier: 30 days (Essentials), 90 days (Professional), 365 days (Enterprise).
Input security
-
Parameterised queries only
All database access goes through the Supabase client library using parameterised queries. String concatenation for SQL is not used anywhere in the codebase.
-
Input sanitisation
All text inputs in the web application strip HTML tags, SQL comments, and null bytes before any processing.
-
XSS prevention
Any user-generated content rendered as HTML is sanitised with DOMPurify before being written to the DOM.
-
Dangerous-pattern flagging
Commands containing rm -rf /, mkfs, dd if=/dev/zero, fork-bomb patterns, and curl|sh pipelines are flagged and audit-logged as advisory warnings before execution.
Session & access management
-
30-minute idle timeout
Sessions expire after 30 minutes of inactivity (PCI-DSS Requirement 8.1.8). Users are redirected to the sign-in page.
-
Password complexity
Passwords must be at least 8 characters and include uppercase, lowercase, a number, and a special character.
-
Role-based access control
Three roles: Owner, Admin, Member. Each has a defined permission set. Role changes are audit-logged.
-
MFA (TOTP)
TOTP-based multi-factor authentication is available. Users can enrol and verify via /mfa-enroll and /mfa-verify in the application.
Data protection & privacy
POPIA & GDPR alignment
OpsGuardian processes personal data in line with the South African Protection of Personal Information Act (POPIA) and the EU General Data Protection Regulation (GDPR). A Data Processing Agreement (DPA) is available to all customers.
Minimum necessary data
We collect what's needed to provide the service. We don't sell data to third parties, use it for ad targeting, or share it with analytics platforms.
Data retention
Metric and log data is automatically purged after your plan's retention window via scheduled database jobs. Audit logs follow the same retention schedule.
Data residency
Application data is hosted on Supabase infrastructure. Edge functions run on Supabase's global network. No data is sent to third-party analytics services.
Right to erasure
You can request deletion of your organisation and all associated data at any time. Account deletion purges all user records, assets, alerts, and logs within 30 days.
No analytics trackers
This marketing site and the application do not include third-party analytics, advertising pixels, or session recording tools.
Compliance frameworks referenced in AI guidance
OpsGuardian's AI engine references control IDs from these frameworks in its remediation guidance. This is guidance-level mapping — not a monitored or evaluated control engine, and not a certification held by Dealt Limited.
| Framework | Status | Coverage |
|---|---|---|
| ISO/IEC 27002:2022 | AI-referenced | Asset management, access control, cryptography, incident management — referenced in AI guidance |
| CIS Benchmarks (Linux, Windows, K8s) | AI-referenced | Hardening control IDs referenced in AI remediation suggestions |
| NIST SP 800-53 Rev 5 | AI-referenced | Control IDs from AU, SI, SC, and IA families referenced in AI guidance |
| SOC 2 Type II (TSC) | AI-referenced | CC6, CC7, CC8 control IDs referenced in AI guidance — not monitored coverage |
| PCI-DSS v4 | AI-referenced | Requirements 1, 4, 6, 8, 10 referenced in AI guidance for relevant findings |
| Custom frameworks | Enterprise | Define your own control mappings for industry-specific standards |
Questions about our security posture?
Reach out directly — we'll answer security and compliance questions honestly.
OpsGuardian