Infrastructure and Security Standards
Infrastructure
Cloud Architecture
The Forma Cloud service is delivered through a modern, resilient, and fully managed cloud infrastructure built on Amazon Web Services (AWS). The platform is deployed in AWS data centers located within the European Union (Ireland), with optional database mirroring available in Italy when required.
- Our application layer runs on a Kubernetes-based architecture designed for high availability and elastic scalability. Workloads are distributed across multiple nodes that automatically scale up or down in response to real-time demand, ensuring consistent performance even during peak usage. All traffic is routed through AWS Global Accelerator to optimize connectivity and reduce latency for users worldwide.
- The entire environment is secured within an isolated Virtual Private Cloud (VPC), complemented by an AWS Web Application Firewall (WAF) that provides protection from common web threats such as SQL injection, cross-site scripting, and denial-of-service attempts.
- Load balancing mechanisms ensure even distribution of application requests across all active nodes. Two static IPs are exposed.
- Persistent data is stored in an encrypted Aurora (RDS) cluster that provides automatic failover, multi-node read scalability.
- Application files are maintained in a durable and automatically scalable Amazon EFS shared file system, while Redis/Valkey is used as an in-memory datastore for session management and caching.
- The entire infrastructure is provisioned and managed through Terraform, following Infrastructure-as-Code (IaC) principles. This ensures repeatable deployments, strict version control, and a consistent configuration across environments.
- Continuous monitoring, automated alerting, backup procedures, and business continuity measures support the reliability of the service and help maintain guaranteed availability levels.
Physical Security
The Forma Cloud Services relies on AWS who is responsible, in accordance with the AWS Shared Responsibility
Model (available at https://aws.amazon.com/compliance/shared-responsibility-model), for implementing controls for
the physical security of data center facilities, backup media, and other physical systems, providing comprehensive and
state-of-the-art security capabilities (available at https://aws.amazon.com/compliance/data-center/controls)).
Information Protection and Security Standards
Backup
Backup Policies
-
Daily Backup
- Automatically runs at 5:00 AM UTC
- Retention: 7 days
-
Weekly Backup
- Automatically runs on Saturdays at 5:00 AM UTC
- Retention: 4 months (120 days)
-
Monthly Backup
- Automatically runs on the first Saturday of the month at 5:00 AM UTC
- Retention: 3 years (1095 days)
Access Control
- Backup access limited via specific IAM roles
- MFA required for critical operations
- Service Role: AWSBackupDefaultServiceRole with minimal permissions
- Full audit trail on AWS CloudTrail
Data storage and Localization
\####Geographic Location
- Primary Location: AWS eu-west-1 (Dublin, Ireland)
- All data and backups remain within the European Union (GDPR compliant)
- No data transfer outside the EU
Redundancy
- Multi-AZ Architecture (3 independent Availability Zones)
- Backups are automatically replicated across multiple AZs
Storage: AWS EFS and Amazon Aurora with synchronous replication
Backup Vault
- Dedicated vault with automated lifecycle management
- AWS default vault for Aurora snapshots
- Access controlled via IAM roles with the least privilege principle
Data Encryption
Encryption at Rest
- Algorithm: AES-256 via AWS Key Management Service (KMS)
- Encryption enabled by default on all Aurora databases
- Snapshots automatically encrypted with the same key as the source database
Encryption in Transit
- TLS 1.2+ for all application connections
- Database connections forced over SSL/TLS
- Backup transfer managed internally by AWS over an encrypted private network
Monitoring
The infrastructure is equipped with the following service monitoring procedures and mechanisms:
- Server log: All accesses and errors are logged on individual server machines (frontend and database) and the load balancer (aggregated across all machines connected to the service).
- Email pre-alerts when peak thresholds are exceeded (CPU usage, number of DB connections).
- Uptime Robot: Domain monitoring. If the site is unresponsive, the team is notified via email and internal communication channels (Slack).
- Automatic application error notification: Any errors generated by application functionality on the server are notified to the support team.
- Monitoring and multi-channel alert system: The difference between available and utilized resources (CPU and RAM) is continuously monitored. When preset thresholds are exceeded, the system triggers autoscaling and communicates the event via various channels to technical staff.
Disaster Recovery
Data RPO (Recovery Point Objective): 5 minutes
- Database: Aurora maintains continuous incremental backups every 5 minutes for point-in-time recovery
- Maximum database data loss is limited to the last 5 minutes of operation
Filesystem RPO (Recovery Point Objective): 24 hours
- File System: 24 hours (automatic daily backups)
- Maximum filesystem data loss is limited to the last 24 hours of operation
Data RTO (Recovery Time Objective): 72 hours
- Contractually guaranteed time for complete recovery in a full disaster recovery scenario
- Includes: database restore, instance startup, application integrity check
Vulnerability Assessment and Penetration Testing (VAPT)
Forma Cloud is subject to periodic Vulnerability Assessment and Penetration Testing (VAPT) activities conducted by qualified third-party security firms. These assessments are carried out in accordance with industry-standard methodologies (e.g., OWASP Testing Guide, PTES) and cover both the application layer and the underlying infrastructure.
VAPT Management Process
Application Security Controls
Multiple layers of security controls are implemented at both infrastructure and application level to proactively mitigate common web vulnerabilities and address findings from VAPT assessments.
Web Application Firewall (WAF)
All incoming traffic passes through an AWS Web Application Firewall (WAF) that provides protection against common attack vectors, including:
WAF rules are regularly reviewed and updated in response to newly identified threats and VAPT findings.
Content Security Policy (CSP)
A comprehensive Content Security Policy is enforced via HTTP response headers at the Nginx reverse proxy level. The CSP configuration is dynamically generated at container startup based on environment variables managed through the deployment infrastructure (factory), enabling per-tenant customization without code changes.
default-src, script-src, style-src, img-src, font-src, frame-src, and frame-ancestors are all explicitly configured to restrict resource loading to authorized origins.
Domain whitelisting: Allowed origins include the tenant's own domain (via wildcard), explicitly configured external domains (identity providers, CDN services, embedded content providers such as YouTube and Vimeo), and a curated set of common third-party service domains.
Frame embedding control: The frame-ancestors directive restricts which domains may embed the application in iframes, preventing clickjacking attacks. Additional domains can be allowed on a per-tenant basis through dedicated configuration variables.
Extensibility: Tenant-specific CSP requirements (e.g., additional trusted domains for SSO integrations or embedded content) are supported through environment-level configuration, applied without redeployment.
Header size management: An automated optimization pipeline deduplicates, consolidates, and groups CSP domains to ensure compliance with the Nginx maximum header size limit (8 KB). When the combined policy exceeds the limit, directives are automatically split across multiple header entries.
HTTP Security Headers
In addition to CSP, the following security headers are enforced on all responses:
Strict-Transport-Security
max-age=31536000
Enforces HTTPS connections for one year (HSTS)
X-Content-Type-Options
nosniff
Prevents MIME-type sniffing attacks
Referrer-Policy
strict-origin-when-cross-origin
Limits referrer information leakage
Permissions-Policy
Restrictive policy disabling geolocation, camera, microphone, payment, etc.
Reduces the browser API attack surface
Server Fingerprint Mitigation
Server identification headers are actively suppressed to reduce the information available during reconnaissance:
server_tokens off)
The Server and X-Powered-By response headers are removed
PHP version exposure is disabled (expose_php = Off)
Sensitive File Protection
The web server is configured to deny access to files and paths that should never be publicly accessible, including:
Hidden files and directories (e.g.,.git, .env)
Dependency management files (composer.json, composer.lock, package.json)
Development and build configuration files (Makefile, phpunit.xml, phpcs.xml)
Backup and log files (.bak, .backup, .sql, .log)
Server-side scripting files (CGI, Perl)
These rules are enforced at the Nginx level, ensuring that even in case of misconfigurations or accidental file placement, sensitive content is not served to external clients.
Session Security
Session management is hardened through multiple mechanisms:
Secure cookies: Session cookies are marked asHttpOnly and Secure (when served over HTTPS), preventing client-side script access and transmission over unencrypted channels. In HTTPS environments, cookies use the __Secure- prefix for additional browser-enforced protection.
SameSite cookie policy: The SameSite attribute is configurable on a per-domain basis, supporting Strict, Lax, and None values. This enables fine-grained control over cross-origin cookie behavior, which is essential for SSO integrations (SAML, OAuth) and iframe embedding scenarios.
Distributed session storage: Sessions are stored in Redis/Valkey for high-availability clusters, ensuring consistent session state across all application nodes with configurable prefix isolation per tenant.
Configurable session lifetime: Session TTL is configurable (default: 2 hours), with automatic expiration and garbage collection.
Brute-Force Protection
The platform includes application-level protection against brute-force login attacks: