Sapior LogoSapior

Migrating a Bank to the Cloud: The Control-First Playbook

Cloud migration for banks is not a lift-and-shift problem. It is a regulatory, architectural, and operational reset—here is how to sequence it without losing a weekend or a compliance finding.

Banks do not migrate to the cloud. They re-platform into a different regulatory posture.

That distinction is not semantic. When a community bank moves loan origination, mobile banking, or even core ledgers to AWS, Azure, or Google Cloud, the hard part is not the network. It is proving that every control that used to live in a cage still works when the cage disappears.

This post outlines the control-first migration pattern we see in healthy bank modernization programs.

Don't start with workloads. Start with the regulatory surface

Before a single VM moves, map the obligations attached to each workload.

In the U.S., the FFIEC *Architecture, Infrastructure, and Operations* booklet treats cloud as a form of outsourced operations. That means the bank still owns the risk even if the provider runs the infrastructure. You need due diligence, contractual clarity, ongoing monitoring, and incident response coordination.

For card data, PCI DSS v4.0 demands segmentation, continuous monitoring, encryption, and strict key management. If your target architecture cannot prove those controls with API-level evidence, you are not ready.

In the EU, EBA guidelines on outsourcing and DORA raise the bar on operational resilience and third-party risk. The pattern is the same everywhere: the regulator does not care which cloud you chose. They care whether you can show the control.

Practical questions to ask per workload

What is the data classification and residency requirement?

Which permission boundary is affected if the workload is compromised?

What is the recovery time objective and blast radius?

How will audit evidence be produced after the move?

Build a banking-grade landing zone first

The landing zone is your control plane. It should encode the bank's risk decisions before developers get access.

A useful banking landing zone includes:

Hard account or subscription isolation between production, staging, and compliance environments

Federated SSO with just-in-time and break-glass access

Default encryption using customer-managed keys, not provider defaults

Centralized CloudTrail/audit logs with immutable storage

Egress filtering, private connectivity, and no public ingress by default

Policy as code that blocks non-compliant resources before deployment

Use Terraform, OpenTofu, or Pulumi to define the landing zone. Treat the compliance baseline as code.

module "bank_landing_zone" {
  source = "./modules/banking-landing-zone"

  region                 = "us-east-1"
  log_retention_years    = 7
  data_classification    = "confidential"
  egress_filtering       = "block"
  customer_managed_keys  = true
}

This is not a one-time setup. The landing zone should evolve as new services and regions enter the approved architecture.

Sequence the migration by risk, not by size

The fastest way to fail is to start with the core ledger because it feels important. Start with workloads that give you operational experience and audit evidence without introducing systemic risk.

A migration sequence that works

1. **Read-only and analytics workloads** — Reporting, data warehousing, marketing analytics, and internal dashboards. These let you test logging, access, and data handling.

2. **Stateless services and batch jobs** — APIs, notification services, document generation, and scheduled jobs. These validate autoscaling, secret management, and deployment pipelines.

3. **Customer-facing channels with tight controls** — Mobile/web banking backends that are stateless and can run in parallel with existing on-prem systems.

4. **Databases and core ledgers** — Move these only after the control evidence pipeline is working. Use dual-run, reconciliation, and a clear rollback path.

The point is not to delay core migration. The point is to build the evidence factory before the high-risk workloads arrive.

Data relocation is harder than compute relocation

Moving compute is easy compared with moving customer data.

Use envelope encryption with a KMS/HSM hierarchy. Rotate keys. Put tokenization or format-preserving encryption in front of PII before it leaves the on-premises boundary.

If a workload processes card data, keep the CDE segmented in the cloud exactly as you would on-prem. PCI DSS v4.0 still applies; the cloud does not shrink the compliance scope if the CDE is poorly designed.

A practical rule: never move a database by lifting the same keys, same firewall rules, and same backup schedule into a cloud VM. Re-platform the data controls around cloud-native primitives.

Make compliance continuous, not documentary

Traditional audits rely on point-in-time evidence: screenshots, spreadsheets, and change tickets. Cloud migration breaks that model because infrastructure changes continuously.

Instead, build an evidence pipeline:

Infrastructure as code with policy checks on every commit

Cloud audit logs streaming to immutable storage

Compliance as code mapping controls to PCI DSS, SOC 2, ISO 27017, and FFIEC expectations

Scheduled evidence collection and control validation

This is where developer-tooling companies like Sapior fit. The goal is to make compliance evidence feel like observability, not a quarterly fire drill.

What the migration should produce

After the move, the bank should be able to answer three questions quickly:

1. **Where is this data?** — Region, account, encryption status, and residency.

2. **Who can access it?** — Federated identity, just-in-time roles, and review trail.

3. **What broke and when?** — Immutable logs, alerts, and incident timelines tied to business services.

If those answers require a spreadsheet, the migration is incomplete.

Cloud migration for a bank is not a data-center project with new invoices. It is a control transformation that happens to use cloud infrastructure. Start small, make the controls visible, and treat each workload as a risk decision before it becomes an engineering task.

Migrating a Bank to Cloud: A Control-First Playbook | Sapior