Skip to main content
Conexion
Login
Privacy Terms Cookies AUP Security Subprocessors

Effective version: 2026-07-24

Security Overview

Conexion Platform — Community Intelligence LLC

Last Updated: 2026-07-24


1. Architecture

Single-Tenant Isolation

Every Client deployment runs on a dedicated, isolated database. There is no shared data storage between Clients. This eliminates the risk of cross-tenant data leakage that exists in multi-tenant architectures.

  • Each deployment has its own PostgreSQL database instance
  • Each deployment has its own application server(s)
  • Each deployment has its own Redis cache instance
  • Each deployment has its own file storage (S3 bucket, GCS bucket, or local volume)
  • Each deployment has its own encryption key

Technology Stack

ComponentTechnologySecurity Relevance
Web FrameworkDjango 6.0Mature framework with built-in CSRF, XSS, SQL injection protections
API FrameworkDjango REST FrameworkToken-based auth, rate limiting, permissions system
DatabasePostgreSQL 17 (pgvector)Confined to an internal-only network, never publicly exposed
CacheRedis 7Password-protected, internal-only network
Task QueueCelery 5.4Async processing with soft/hard timeouts
Web ServerGunicornNon-root process, resource limits
Reverse ProxyCaddyAutomatic TLS (Let's Encrypt), HTTP/2

2. Authentication and Access Control

User Authentication

ControlImplementation
Password hashingPBKDF2-SHA256 with Django's default 1,200,000 iterations
Password policyMinimum length (12 characters), common password blocklist, no username similarity, no all-numeric
Multi-factor authenticationTOTP-based (RFC 6238), configurable per organization, with 10 single-use recovery codes
Brute-force protectionAccount lockout after 5 failed attempts for 1 hour (django-axes)
Session management8-hour timeout, browser-close expiration, HttpOnly + Secure + SameSite cookies
API authenticationJWT tokens with 30-minute access token, 1-day refresh token, automatic rotation, blacklist-after-rotation
User provisioningInvite-only registration (no public self-signup)
MFA enforcementOrganization-level setting forces MFA setup before data access

Role-Based Access Control

Five permission levels control data access:

RoleScope
AdminFull platform access, user management, system configuration
DirectorOrganization-wide data access, reporting, staff management
Grants ManagerGrant pipeline, funder data, grant reports
Finance ManagerFinancial data, budgets, expenses, time allocations
Program StaffAssigned program data, participant records, service delivery

3. Data Encryption

Encryption at Rest

Sensitive fields are encrypted at the application level using Fernet symmetric encryption (AES-128-CBC with HMAC-SHA256 for integrity):

  • Participant date of birth
  • Participant address (street, city, state, ZIP)
  • Participant veteran status
  • Participant disability status
  • Participant immigration status
  • Participant refugee/asylee status
  • Household (account) address fields and notes
  • Webhook endpoint URLs and signing secrets
  • Third-party integration credentials (API keys, OAuth tokens)
  • Email account credentials (IMAP/SMTP passwords)
  • AI provider API keys

Encryption keys are managed through environment variables and stored in GCP Secret Manager for managed hosting deployments.

Encryption in Transit

ChannelProtection
Web trafficTLS 1.2+ (HTTPS enforced)
HSTS1-year duration, includeSubdomains, preload-ready
Database and cache trafficConfined to an internal-only container network on the host; never traverses a public network
Backup uploadsHTTPS to Google Cloud Storage (files GPG-encrypted before upload)
API calls to AI providersHTTPS (TLS 1.2+)

Backup Encryption

  • Database and media backups encrypted with AES-256 via GPG symmetric encryption
  • SHA-256 integrity checksums generated and verified on each backup
  • Backup files created with restrictive permissions (0600 — owner-only)
  • Encryption key separate from application encryption key

4. Network Security

HTTP Security Headers

HeaderValuePurpose
Content-Security-Policydefault-src 'self'; nonce-based scriptsPrevents XSS and code injection
X-Frame-OptionsDENYPrevents clickjacking
X-Content-Type-OptionsnosniffPrevents MIME-type sniffing
Referrer-Policystrict-origin-when-cross-originControls referrer information leakage
Permissions-PolicyDisables: geolocation, microphone, camera, payment, USBRestricts browser API access
Strict-Transport-Security1-year, includeSubdomains, preloadForces HTTPS for all connections
Cross-Origin-Opener-Policysame-originPrevents cross-origin window attacks

API Rate Limiting

Endpoint TypeLimit
Unauthenticated requests100/hour
Authenticated requests1,000/hour
Login/token endpoint10/hour

CORS and CSRF

  • CORS allowed origins explicitly configured (no wildcards in production)
  • CSRF tokens required on all state-changing requests
  • CSRF cookie set with HttpOnly flag

Infrastructure Network

  • Database bound to private/internal network (not publicly accessible)
  • Redis bound to private/internal network
  • Backend services communicate over internal Docker network
  • Only the web server and reverse proxy are publicly accessible

5. Audit Logging

The Platform maintains an audit trail of security-relevant activity:

EventDetails recorded
Authentication (login, logout, failed attempts)User, timestamp (UTC), IP address
Access to participant-related records (reads)User, timestamp, IP address, endpoint
Terms-of-service acceptanceUser, timestamp, version accepted
Data changes by automated workflowsActor, timestamp, affected record (model + ID), change summary with sensitive values redacted

Application logs additionally carry a per-request correlation ID for tracing.

Audit logs are:

  • Append-only (no modification or deletion through the application)
  • Indexed for efficient querying
  • Retained for the duration of the Client's subscription
  • Included in encrypted backups

Security Event Logging

In addition to data audit logs:

  • Failed login attempts logged with IP address and username (django-axes)
  • MFA events (setup, disable, recovery-code regeneration) logged
  • Logins and logouts recorded in the audit log
  • API authentication failures logged

6. Backup and Disaster Recovery

Backup Schedule

TypeFrequencyRetentionEncryption
DatabaseDaily (2:00 AM)14 days (configurable)AES-256 GPG
Media/filesDaily7 days (configurable)AES-256 GPG
Off-site syncDailyPer storage policyPre-encrypted before upload

Recovery Capabilities

  • Automated restore scripts with integrity verification
  • Documented restore procedures for all deployment tiers
  • Health check endpoints for automated monitoring (/readyz/ checks database, cache, and worker connectivity)

Recovery Objectives

MetricCurrent deployment
Recovery Point Objective (RPO)Up to 24 hours
Recovery Time Objective (RTO)< 4 hours

7. Application Security

Built-in Protections

ThreatMitigation
SQL InjectionDjango ORM parameterized queries; the natural-language analytics feature executes only validated, SELECT-only queries against dedicated reporting views under a restricted read-only database role
Cross-Site Scripting (XSS)Django template auto-escaping; Content Security Policy; nh3 HTML sanitization
Cross-Site Request Forgery (CSRF)CSRF tokens on all forms; HttpOnly CSRF cookie
ClickjackingX-Frame-Options: DENY
Session HijackingHttpOnly + Secure + SameSite cookies; session rotation on login
Brute ForceAccount lockout (django-axes); rate limiting; MFA
Insecure File UploadContent-sniffed file type validation; upload size limits (25MB); separate storage backend
Insecure DependenciesAutomated dependency scanning in CI; Bandit security linter

Development Security Practices

  • Pre-commit hooks enforce code formatting and linting
  • Ruff linter checks for security anti-patterns
  • Bandit static analysis for Python security issues
  • Coverage-gated automated test suite (unit, integration, and end-to-end) enforced in CI
  • No secrets in source code (environment variables for all credentials)
  • Playwright end-to-end testing for critical user flows

8. Container Security

All production containers enforce:

ControlImplementation
Non-root executionAll services run as non-root users
No new privilegesno-new-privileges: true security option
Resource limitsCPU and memory limits per container
Health checksDatabase and Redis verified before accepting traffic
Internal networkingBackend services on internal-only Docker network

9. Third-Party Security

AI Provider Data Handling

When AI features are used:

  • Data is sent over HTTPS to Anthropic or Google Vertex AI APIs
  • Enterprise API terms prohibit using customer data for model training
  • No persistent storage of prompts by AI providers (per API terms)
  • AI conversation history stored in the Client's own database
  • Third-party error tracking is disabled in the current deployment; if enabled, PII collection is explicitly turned off (send_default_pii=False)

Cloud Provider Certifications

ProviderCertifications
Google Cloud PlatformSOC 1/2/3, ISO 27001/17/18, HIPAA BAA (signed), FedRAMP

10. Compliance Support

The Platform includes a built-in compliance tracking module supporting:

  • Multiple regulatory frameworks (HIPAA, SOC 2, GDPR, custom)
  • Requirement status tracking with responsibility assignments
  • Risk assessment documentation with severity levels
  • Security incident reporting with breach notification workflow
  • Staff compliance training tracking
  • Business Associate Agreement management with expiration alerts
  • Review scheduling and due date reminders

11. Monitoring and Incident Response

Uptime Monitoring

  • /health/ — Liveness probe (process running)
  • /readyz/ — Readiness probe (database + cache + worker connectivity)
  • Optional Uptime Kuma integration for external monitoring and alerting

Incident Response

  1. Detection via audit logs, monitoring alerts, or user reports
  2. Containment within 4 hours of detection
  3. Client notification within 72 hours (for breaches of unsecured PHI: without unreasonable delay, no later than 10 business days — see the BAA)
  4. Investigation and root cause analysis
  5. Remediation and prevention measures
  6. Post-incident report within 30 days

12. Contact

For security questions or to report a vulnerability:

Email: security@communityintelligence.co

© 2026 Community Intelligence LLC. All rights reserved.
Privacy Terms Acceptable Use Security Cookies Subprocessors