BACK

Securing a Multi-Region AWS Migration for a Cloud- Native Technology Platform

The Client operated its production workloads on Microsoft Azure without formally defined network trust boundaries, no centralized security configuration management, and limited infrastructure-level enforcement controls. With workloads spread across shared network segments and no automated posture assessment tooling, security misconfigurations could go undetected and lateral movement between application tiers remained unconstrained. The Azure environment lacked pod-level workload identity for Kubernetes workloads, relied on static secrets without centralized rotation, and exposed AWS service access over the public internet. Left unaddressed, these gaps would have carried over into the AWS environment, exposing the Client's production platform to lateral movement risks, credential compromise, and uncontrolled internet-facing service paths from the moment of migration. The Client engaged Aivar to design the target AWS architecture from the ground up, ensuring that infrastructure protection principles — trust boundaries, secure system configuration, authenticated access, and policy-enforcement points — were built into the foundation rather than retrofitted after go-live.
The Client is a cloud-native technology company serving the SMB/mid-market segment with a customer-facing production platform. Aivar Innovations designed and delivered a hardened, multi-region AWS infrastructure with clearly defined trust boundaries, layered security controls, identity-based access management, and infrastructure-level policy-enforcement points — migrating the Client's workloads from Microsoft Azure and ensuring production-grade security from day one on AWS.
Importance

Proposed Solution

Aivar designed and delivered a dual-region AWS infrastructure across Singapore (ap-southeast-1) and N. Virginia (us-east-1), architected around the four Infrastructure Protection pillars. All resources are provisioned using Terraform, ensuring consistent, auditable, and reproducible security configuration across both production regions.

Trust Boundaries

Each production region hosts a VPC with three-tier subnet isolation: public subnets for NAT Gateways only, private subnets for Amazon EKS workloads, and data-tier subnets for RDS PostgreSQL, ElastiCache Redis, OpenSearch, and DynamoDB. All data-tier resources carry zero public IP addresses and zero internet gateway routes. Inter-region VPC Peering with controlled route tables provides the only cross-region connectivity path, and AWS Site-to-Site VPN provides the only hybrid path to Azure during migration.

System Security Configuration and Maintenance

All infrastructure is defined in Terraform and stored in version control — no manual console changes are permitted in production. AWS Security Hub was enabled and audited before production cutover, with mandatory remediation of all critical and high findings as a go-live gate. Amazon ECR repositories are configured with scan-on-push, preventing container images with known high or critical vulnerabilities from reaching EKS. Encryption at rest is enforced across all data services: S3, RDS, ElastiCache Redis, DynamoDB, and EBS volumes.

Authentication and Authorization

AWS IAM Identity Center provides centralized, MFA-protected console access. Programmatic access uses STS-issued temporary credentials derived from IAM roles — no long-lived IAM user access keys exist for human access. IRSA (IAM Roles for Service Accounts) enables pod-level least-privilege for EKS workloads, eliminating static credentials from Kubernetes manifests and environment variables. All secrets previously stored in Azure Key Vault were migrated to AWS Secrets Manager with automatic rotation policies. Every individual accesses the environment through dedicated, uniquely attributable credentials with a full CloudTrail audit trail.

Infrastructure-Level Policy-Enforcement Points

VPC Endpoints (Gateway for S3 and DynamoDB; Interface for ECR, Secrets Manager, and CloudWatch) are deployed in both regions, forcing all AWS service traffic onto the AWS backbone and eliminating internet exposure for sensitive service interactions. Security Groups act as stateful enforcement points at every resource — denying all traffic not explicitly permitted. NACLs provide a stateless enforcement layer at every subnet boundary, independent of Security Group rules. One NAT Gateway per VPC serves as the sole controlled outbound internet path from private subnets. AWS Client VPN provides authenticated, encrypted developer access to private resources with no management interfaces exposed to the internet.

TCO Analysis Performed

Aivar conducted a Total Cost of Ownership analysis to validate the cost-optimized dual-region architecture: right-sizing EKS node groups, RDS instance classes, and ElastiCache nodes to the Client's live traffic patterns, and converting on-demand compute and database spend into committed-use pricing through AWS Compute Savings Plans and RDS Reserved Instances — targeting a 30–40% cost reduction versus on-demand pricing once post-cutover traffic patterns stabilized.

Outcomes

  • Trust Boundary Enforcement: All data-tier resources confirmed with zero public IP addresses and zero internet routes; Security Group rules verified permitting only minimum required cross-tier traffic; VPC Endpoints active for all designated AWS service families across both regions.
  • Security Configuration Compliance: AWS Security Hub audit passed with zero critical or high findings before production cutover sign-off; 100% of Azure Key Vault secrets migrated to Secrets Manager with rotation configured; ECR scan-on-push active and validated across all repositories.
  • Zero Credential Exposure: No long-lived IAM user access keys in use for human access; IRSA providing pod-level least-privilege across all EKS workloads; all credentials rotated via Secrets Manager.
  • Production Stability: Both AWS regions live and serving production traffic with 48 hours of stable post-cutover CloudWatch monitoring and no critical incidents.
Estimated AWS ARR: Approximately USD 473,679 per year based on the deployed resource footprint across two production regions.

Lessons Learned

1. DMS Replication Lag Risk: DMS CDC replication lag spikes due to Azure PostgreSQL write volume were identified as a high-likelihood risk. Mitigation included sizing the DMS replication instance with headroom, monitoring lag continuously via CloudWatch, and enforcing a cutover gate requiring lag = 0 sustained for one hour. This has been adopted as a standard methodology element for future Azure-to-AWS migrations.

2. VPN Bandwidth for Large Storage Transfers: Site-to-Site VPN bandwidth constraints for large Blob-to-S3 data transfers were addressed by scheduling bulk sync during off-peak hours, tuning AzCopy parallel thread count, and enabling S3 Transfer Acceleration. Bandwidth assessment during discovery is now a standard step before committing to migration schedules.

3. Security Hub Early Enablement: Enabling Security Hub during Week 4 of a five-week programme left limited time for finding remediation before cutover. Future engagements enable Security Hub at the end of Week 2 to allow a full two-week window for identification and remediation before the cutover window.

Improvement Actions

  • Incorporate DMS lag monitoring thresholds, bandwidth assessment during discovery, and mandatory cutover dry runs as standard methodology elements for all future Azure-to-AWS migrations.
  • Enable Security Hub at the start of Week 2 in all future migration engagements to provide a two-week remediation window before production cutover.
  • Deliver AWS Compute Savings Plans and RDS Reserved Instance recommendations with a target of 30–40% cost savings versus on-demand pricing for all migration customers post-stabilisation.
  • Introduce mandatory post-cutover performance tuning checkpoints at 30, 60, and 90 days, covering EKS node sizing, RDS instance class, and ElastiCache node right-sizing based on live traffic patterns.

Explore Other Case Studies