Encryption at rest
- SIP extension passwords — AES-256-GCM with rotatable master key.
- Provider secrets (Deepgram, ElevenLabs, OpenAI, Salesforce) — encrypted per tenant.
- Recordings — KMS-encrypted in S3/MinIO/GCS/Azure (mandatory server-side encryption).
- DB connections with TLS 1.3 and auto-rotated certificates.
Encryption in transit
- SIP TLS (port 5061) and mandatory SRTP for extension registrations.
- WebRTC with DTLS-SRTP (never SDES) and WSS over TLS 1.3.
- API and dashboard HTTPS-only, HSTS with preload, strict CSP.
- Outbound webhooks signed with HMAC SHA-256.
RBAC — roles & permissions
5 base roles with granular permissions: superadmin (cross-tenant, audited), admin (full tenant management), supervisor (wallboard + live actions), agent (their softphone) and viewer (read-only). Every REST endpoint and every dashboard action verifies the role explicitly.
Audit log
The audit_logs table is partitioned monthly with configurable
retention (30 days Starter, 1 year Pro, 7 years Enterprise). Records:
- Who did what, in which tenant, from which IP, when.
- Before/after diff for sensitive changes (recording policies, IVR, agents).
- Cross-tenant superadmin actions flagged.
- S3 export + searchable backoffice with filters.
Rate limiting
Each endpoint has its rate limit per tenant + per user. Login with 5 attempts/15 min before temporary lockout. Auth tokens blacklisted on logout (Redis with TTL = JWT lifetime) — cannot be reused even if stolen.
SIP hardening
- Dynamic ACL — only IPs of configured trunks accept INVITE/REGISTER. SIP bots dropped at FreeSWITCH before touching the DB.
- No public extensions by default — registrations only accepted from the tenant's SIP domain.
- Auto-block of sources generating more than N failures/min.
Compliance
- GDPR-ready — signable DPA, documented RoPA, EU/US data residency (Enterprise can choose region).
- Processing in EU territory (Hetzner Frankfurt) for European customers by default.
- Right-to-be-forgotten deletion per user or per tenant.
- Per-user data exports in standard JSON.