ssm.ro Docs
Security, Infrastructure & OperationsInfrastructureAWS (Enterprise Model)

AWS Services Used

Both models use S3, API Gateway, Lambda, and CloudWatch Logs. The difference: shared infrastructure (Shared) vs. dedicated per client (Enterprise).

AWS Services per Deployment Model

The AWS services used differ depending on the deployment model — Shared (multi-tenant on Heroku) or Enterprise (dedicated AWS infrastructure).


Shared Model (SaaS)

The Shared Model uses AWS microservices for processing, storage, and logging, within an infrastructure shared with other clients.

AWS ServiceRoleKey Configuration
AWS S3 — Primary bucketDocument content storageVersioning enabled; SSE; Block-public-access ON; lifecycle delete markers 100 days
AWS S3 — CRR ReplicaPassive backup/DR cross-regionManaged replica; SSE; no application reads/writes directly
AWS API GatewayProxy for Lambda microservicesHTTPS routes; request authentication/authorization; throttling
AWS LambdaStateless microservice functionsIAM-scoped; VPC/private endpoints
AWS CloudWatch LogsSigning audit logAppend-only; encrypted at rest; 5-year retention

S3 Access Flow — Shared Model

Web dyno (application)
    │ HTTPS (least-privilege IAM credentials)

AWS S3 Primary bucket
    │ CRR managed automatically

AWS S3 CRR Replica (different region — backup only)

AWS Services Not Used in the Shared Model

ServiceReason
AWS RDSThe database is Heroku Postgres (managed)
AWS CloudFrontNo CDN is used
AWS SESTransactional email is through Postmark
AWS Route 53DNS is managed through Heroku

Enterprise Model (Dedicated Infrastructure)

The Enterprise Model uses an extended suite of AWS services, configured dedicated per client, according to contractual specifications.

AWS ServiceRoleKey Configuration
AWS RDS PostgreSQLMain relational databaseDedicated per client; encrypted at rest (KMS); automatic daily backup (30-day retention) + PITR
AWS ElastiCache (Redis)Application cache + asynchronous job queueDedicated per client; encrypted at rest (KMS); private in VPC
AWS S3 — Primary bucketDocument content storageVersioning enabled; SSE; Block-public-access ON; lifecycle delete markers 100 days
AWS S3 — CRR ReplicaPassive backup/DRManaged cross-region replica; SSE; no application reads/writes directly
AWS ECSApplication containers and asynchronous jobsDedicated clusters per client; IAM task roles
AWS API GatewayAPI proxy and routingHTTPS routes; request authentication/authorization; throttling and usage plans
AWS LambdaStateless processing functionsIAM-scoped; VPC/private endpoints; versioned deployments
AWS SESTransactional emailNotifications, OTP, system alerts; domain verified per client
AWS CloudWatch LogsSigning audit log + application logs5-year retention (signing); append-only; encrypted at rest; IAM-restricted

Access and Authentication (Both Models)

  • Access to AWS services is done through least-privilege IAM credentials — each component has the minimum permissions necessary
  • Credentials are stored securely in the application's environment variables — not in the source code
  • 2FA mandatory on the administrative AWS account
  • Access to S3 exclusively through authenticated API — no direct public exposure