Security at Quikori
How we protect your data: encryption, RLS, audit logs, and our security roadmap.
Data isolation
Postgres Row-Level Security (RLS) is enforced on every table that carries a tenant_id column.
Each request sets app.current_tenant per transaction (SET LOCAL) and resets at commit. Cross-tenant reads are denied at the database layer, not the application layer.
Encryption
Data at rest: AES-256 on the database tier. API keys and access tokens are envelope-encrypted with a separate KMS-managed key before write.
Data in transit: TLS 1.2+ everywhere. No plaintext fallbacks.
Authentication
Supabase Auth with JWT. Custom claims distinguish SuperAdmin from Tenant roles. Tenant session tokens carry the tenant_id claim used by the RLS rebind.
Audit logs
SuperAdmin tenant CRUD, billing events, and authentication events are logged with actor, timestamp, and source IP.
Tenant-scoped audit logs are visible in the dashboard on Professional Team and above.
Access control
Least-privilege access. Role separation between SuperAdmin, Tenant Admin, and Tenant Member.
Production access goes through a separate, audited bastion. Environment variables are the only configuration surface (no in-app secrets).
Compliance
GDPR + KVKK aligned. Lawful-basis copy and data-subject rights (export, deletion) are exposed directly in the dashboard.
SOC 2 Type II and ISO 27001 are on our roadmap. Current controls map to SOC 2 Common Criteria and ISO 27001 Annex A controls.
Responsible disclosure
Report a vulnerability to [email protected]. We acknowledge within 48 hours and triage within 5 business days.
A signed security report is available under NDA on request.
This page describes current controls. A signed security report is available under NDA — contact [email protected].