π‘οΈSecurity
FormSG-specific security guidance for government deployments.
This document focuses on FormSG-specific security considerations for government deployments. It assumes your organization already has security expertise and established procedures - we focus on how FormSG integrates with your existing security framework.
FormSG Security Architecture
FormSG implements several security patterns that enable secure government deployments:
Data Protection Layers
Encryption in Transit: TLS for all communications
Encryption at Rest: Database and file storage encryption
End-to-End Encryption: Storage mode forms use client-side encryption
Session Security: Secure session management with configurable timeouts
Access Control Model
Role-Based Access: Admin vs form creator permissions
Form-Level Security: Per-form access controls
Authentication Integration: Pluggable identity provider support
Session Management: JWT with configurable expiration
Security-Relevant Architecture Decisions
Understanding why FormSG was designed certain ways helps you maintain security:
3-Tier Architecture
Clear security boundaries
Maintain network segmentation
Stateless API Design
Easier to scale securely
Session store becomes critical
Component Modularity
Replace insecure components
Validate replacement security
Environment-Based Config
No secrets in code
Secure secrets management required
Data Flow
Understanding how data flows through FormSG helps secure integrations:
Key Security Points
User authentication happens before form access
Form data encryption occurs client-side (storage mode)
Database storage uses encrypted transport and storage
Email notifications contain only metadata, not form content
Audit logging captures all user actions
Core Security Validation
Essential Security Requirements:
Component Replacement Security
Email Service Security
When replacing AWS SES with your email service:
Security Considerations
SMTP Authentication: Use app-specific passwords, not user credentials
TLS Encryption: Ensure SMTP connection uses TLS (port 587/465)
Email Security: Verify your email service supports SPF/DKIM/DMARC
Rate Limiting: Configure appropriate rate limits for OTP delivery
Email Security Validation:
Example Configuration Pattern:
# Secure email service configuration
SES_HOST=smtp.yourorg.gov # Your organization's SMTP server
SES_PORT=587 # TLS port
SES_USER=formsg-service # Dedicated service account
SES_PASS=[secure-token] # App-specific password or token
Database Security
When using alternative MongoDB services:
Security Requirements
Encryption at Rest: Database must support encryption
Network Encryption: Connection must use TLS/SSL
Authentication: Strong credentials with least privilege
Network Access: Restrict database access to FormSG application only
Database Security Validation:
Object Storage Security
When replacing AWS S3:
Security Features Required
Server-Side Encryption: Files encrypted at rest
Access Controls: Bucket policies restrict access
Presigned URLs: Temporary, time-limited file access
CORS Configuration: Restrict cross-origin requests
Object Storage Security Validation:
Security Monitoring and Logging
FormSG Audit Capabilities
FormSG provides several logging capabilities for security monitoring:
Security Events Logged
Authentication events: Login attempts, failures, session creation
Form access: Who accessed which forms when
Data modification: Form creation, editing, deletion
Submission events: Form submissions with timestamps and user context
Administrative actions: User management, settings changes
Security Monitoring Validation:
Log Configuration Pattern:
# Enable comprehensive FormSG audit logging
LOG_LEVEL=info # Capture security-relevant events
CUSTOM_CLOUDWATCH_LOG_GROUP=/your/log/group # Your log destination
Security Monitoring Focus Areas:
Vulnerability Scanning Integration
Container scanning: Scan FormSG container images in your registry
Dependency scanning: Monitor Node.js dependencies for vulnerabilities
Configuration scanning: Validate FormSG configuration against security policies
Compliance Support Features
FormSG provides several features that support government compliance requirements:
Data Protection
Encryption: Client-side encryption for sensitive form data
Access controls: Role-based access with audit trails
Data retention: Configurable data retention policies
Data export: Ability to export data for compliance reporting
Audit and Accountability
Comprehensive logging: All user actions logged with timestamps
Non-repudiation: Digital signatures for form submissions
Access tracking: Who accessed what data when
Change management: All form modifications tracked
Privacy Protection
Minimal data collection: Only collect necessary form data
Consent management: Form-level privacy notices
Data minimization: Configurable field validation and limits
Right to deletion: Data deletion capabilities for privacy compliance
Compliance Validation
Compliance Validation:
Last updated
Was this helpful?