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

Effective version: 2026-05-02

Security Overview

Conexion Platform — Community Intelligence LLC

Last Updated: 2026-05-02

DISCLAIMER: This document is a template and should be reviewed before distribution to clients. Verify all claims against the current codebase.


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 17Encrypted connections (SSL), pgvector for AI embeddings
CacheRedis 7Password-protected, TLS in production, internal network only
Task QueueCelery 5.5Async processing with soft/hard timeouts
Web ServerGunicornNon-root process, resource limits
Reverse ProxyCaddy or Cloud Load BalancerAutomatic TLS, HTTP/2

2. Authentication and Access Control

User Authentication

ControlImplementation
Password hashingPBKDF2-SHA256 with Django's default 870,000 iterations
Password policyMinimum length, 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
AdministratorFull 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
  • 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 cloud secret managers (GCP Secret Manager, AWS Secrets Manager) for managed hosting deployments.

Encryption in Transit

ChannelProtection
Web trafficTLS 1.2+ (HTTPS enforced)
HSTS1-year duration, includeSubdomains, preload-ready
Database connectionsSSL required in production
Backup uploadsHTTPS to S3-compatible storage
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

All data modifications are logged with:

FieldDescription
UserWho made the change (authenticated user)
TimestampWhen the change occurred (UTC)
IP AddressSource IP of the request
ActionCreate, update, or delete
ObjectWhich record was changed (model + ID)
ChangesJSON diff of before/after field values
Request IDCorrelation ID for log 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, verify, disable, reset) logged
  • Session creation and revocation logged
  • 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 syncWeeklyPer storage policyPre-encrypted before upload

Recovery Capabilities

  • Automated restore scripts with integrity verification
  • Database point-in-time restore (RDS/Cloud SQL — managed hosting)
  • Documented restore procedures for all deployment tiers
  • Health check endpoints for automated monitoring (/readyz/ checks database, cache, and worker connectivity)

Recovery Objectives

MetricTier 1 (VPS)Tier 2 (AWS/GCP)
Recovery Point Objective (RPO)Up to 24 hoursUp to 24 hours (continuous for RDS)
Recovery Time Objective (RTO)< 4 hours< 1 hour

7. Application Security

Built-in Protections

ThreatMitigation
SQL InjectionDjango ORM parameterized queries; no raw SQL in application code
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 UploadFile type validation; upload size limits (50MB); 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
  • 80% test coverage threshold 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
Read-only filesystemWhere applicable
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
  • Sentry error monitoring has PII collection explicitly disabled (send_default_pii=False)

Cloud Provider Certifications

ProviderCertifications
Google Cloud PlatformSOC 1/2/3, ISO 27001/17/18, HIPAA BAA available, FedRAMP
Amazon Web ServicesSOC 1/2/3, ISO 27001, HIPAA BAA available, FedRAMP
DigitalOceanSOC 2 Type II, ISO 27001

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 (60 days for HIPAA breach notification)
  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.io

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