Aventura, Florida · serving clients across the United States (305) 404-9404Toll-free (800) 767-8566Emergency? Get a call within 1 hour
Financial technology Illustrative engagement

A cross-border payments platform on Kubernetes, with card data sealed by hardware security modules

A cross-border payments company moving money between the United States, Europe and Latin America, a leader in its segment.

Scale
3 Kubernetes clusters in 2 regions, about 140 services, 2,400 transactions per second at peak, network-attached HSM cluster
Engagement
Design, build and migration over 11 months

The challenge

Card and account data moved through a platform that had grown from a few services into more than a hundred, all in one cluster with shared credentials. Every new audit meant proving which workloads could touch card data, and the honest answer was "most of them." The company needed a platform where the card-data environment was small, provable and sealed by keys that never leave hardware.

Payments companies face two pressures at once: ship features weekly, and prove to an assessor that card data is safe. The platform had grown from a handful of services into more than a hundred sharing one Kubernetes cluster and a handful of long-lived credentials. Asking which workloads could reach card data produced the answer "most of them," which made every audit a manual search through manifests. The goal was not just a safer cluster but a smaller one: shrink the part of the platform where card data exists until it can be described in a page.

The architecture separates concerns by cluster. A dedicated cardholder-data cluster runs only the tokenization service and the few components that must handle a full card number. Cilium enforces default-deny network policy with eBPF, and services authenticate each other with mutual TLS 1.3 using short-lived SPIFFE identities, so a stolen credential is useful for minutes, not months. Key material sits in a clustered pair of network-attached hardware security modules per region, reached over PKCS#11. The modules hold the key-encryption keys; data keys (AES-256‑GCM) are generated per record class, wrapped by the HSM and unwrapped only inside the tokenization service. Kubernetes Secrets in etcd are protected by KMS v2 envelope encryption against the same modules, so a copy of an etcd snapshot is unreadable without the hardware.

Migration followed the data. The tokenization service went live first, in shadow mode, issuing tokens alongside the legacy path while a reconciliation job compared results. Services then moved to tokens one at a time, each release removing a copy of card data from its database. Historic data was re-encrypted in batches under the new key hierarchy during low-traffic windows, with an automatic stop if error rates rose. Delivery moved to GitOps with Argo CD, and the build pipeline began signing images with cosign; admission policy refuses anything unsigned from entering the cardholder cluster. Traffic was shifted between regions during the cutover so that neither region carried a risky change alone.

Testing combined engineering and attack. Load tests reproduced the 2,400 transactions per second peak with HSM latency measured at the 99th percentile, and the tokenization service was sized so that losing one HSM in a pair cost headroom, not availability. Failure drills removed a node, a zone and an HSM during a test run. Our penetration testers then attacked from the position of a compromised pod: they tried lateral movement, service-account abuse, reading Secrets from etcd and extracting keys. Findings were fixed and retested, and the reports were written so an assessor could reuse them as evidence. The platform's controls are designed to support PCI DSS 4.0.1 requirements for protecting stored account data, strong cryptography and logging; the assessment itself remains the company's, and the assessor's, to complete.

The result is a card-data environment reduced to one cluster and one service, keys that cannot be exported from the hardware, and logs written to write-once storage with synchronized time so that an investigator can reconstruct what happened. The engineering teams ship to the other clusters as quickly as before, because only the card-data path carries the extra controls. When customers in the European Union ask where their personal data is processed, the answer is a diagram and a policy rather than a search.

What our team delivered

  • A dedicated cardholder-data cluster, separate from the general-purpose clusters, so the PCI DSS scope covers one well-defined platform instead of the whole company
  • Default-deny network policy enforced by Cilium (eBPF), with mutual TLS 1.3 between services using short-lived SPIFFE workload identities
  • Network-attached hardware security modules in a clustered pair per region, reached over PKCS#11 and mutually authenticated TLS, holding the key-encryption keys
  • Kubernetes KMS v2 envelope encryption of Secrets in etcd, and AES-256-GCM data keys for stored account data, wrapped by HSM-held keys and rotated on a schedule
  • A tokenization service as the only component that sees a full card number; every other service holds only tokens
  • Pod Security Standards at the restricted level, admission control with policy-as-code, and signed container images (Sigstore cosign) with a software bill of materials for every build
  • GitOps delivery with Argo CD, two-person review on production changes, and runtime detection with eBPF-based syscall monitoring
  • Audit and access logs shipped in real time to write-once storage, with synchronized time

Result

A card-data environment reduced to one cluster and one tokenization service, keys that cannot be exported from the HSMs, and evidence that is generated by the platform rather than assembled by hand before each assessment. In the modeled migration, the 140 services moved in waves over eleven months, with the tokenization service live first so that every wave reduced the card-data scope instead of growing it. HSM failover and key ceremonies were rehearsed before cutover, the second region carried production load in a game day, and policy-as-code checks blocked a non-compliant deployment before it reached the cluster.

Separate by region and by business unit

Each business unit lives in its own VRF and VLAN in every region, so a problem in retail cannot reach finance. Traffic between units has to pass a firewall that denies by default and allows only what is written down.

Separate by region and by business unitA grid with three regions, Americas, EMEA and APAC, and three business units, Finance, Retail and R&D. Each cell is a separate VRF with its own VLAN and VNI. Each business unit has one overlay running across its three regional cells, shown as a row. On the right a firewall zone enforces a zero-trust policy that denies by default. A red packet from Retail trying to reach Finance is blocked at the firewall. A teal packet from R&D to the shared DNS and identity services is allowed. AMERICASEMEAAPACFinanceVRF fin · VLAN 110VNI 10110VRF fin · VLAN 110VNI 10110VRF fin · VLAN 110VNI 10110RetailVRF retail · VLAN 120VNI 10120VRF retail · VLAN 120VNI 10120VRF retail · VLAN 120VNI 10120R&DVRF rnd · VLAN 130VNI 10130VRF rnd · VLAN 130VNI 10130VRF rnd · VLAN 130VNI 10130Firewallzoneszero trustdeny bydefaultSharedDNS · IdPdenyallowVRF · L3 isolationVLAN to VNI · L2Default-deny policyEVPN-VXLAN fabricWireGuard + IPsec WANLogs to one SIEM

Every sign-in, verified

Staff sign in once, but behind the scenes the device, the identity, a phone approval and your access policy are all checked before any app opens, and strangers are turned away.

Every sign-in, verifiedDiagram of user authentication. A user signs in; the device is checked for MDM and Intune compliance; the identity provider, Active Directory or Entra ID, verifies the account; an MFA push is approved on the user's phone; conditional access evaluates the policy; and access is granted to email, ERP and files. On a second pass, a sign-in from an unknown device in a new location is blocked by the conditional access policy. VERIFIED SIGN-INUserSigns inDevice checkMDM · IntuneIdentityAD · Entra IDMFA pushPhone approvalConditionalaccessPolicy checkEmailERPFilesUnknown deviceNew locationApprove?Blocked

Super Intelligence data flow

Every request is classified by sensitivity, so confidential data stays on models inside your walls while routine work can use the best frontier AI.

Super Intelligence data flowEmail, documents, phone calls, ERP and CRM records and sensor data enter a secure gateway that classifies each request by sensitivity. Sensitive requests are answered by local models inside the firewall, internal ones by a private cloud, and general ones by frontier models from leading US AI labs. Results flow back into ERP, CRM, dashboards and to people.SOURCESGATEWAYMODEL TIERSYOUR SYSTEMSEmailDocumentsPhone callsERP / CRMSensorsSecuregatewaysorts bysensitivityLocal modelsIn your firewallPrivate cloudYour own tenantFrontier modelsleading US AI labsERPCRMDashboardsPeopleSensitive: stays localInternal: private cloudGeneral: frontier model

Incidents resolved five times faster

Mean time to resolve (MTTR) for incidents, by quarter, for a 250‑seat organisation. The first four quarters are an in-house on-call rota; the last four are under a managed service with a 24/7 operations centre, runbooks and monitoring. Illustrative figures.

Incidents resolved five times fasterBar chart of mean time to resolve incidents in hours, by quarter. Year 1, in-house: 9.5, 10.2, 9.1, 9.8. Year 2, managed service: 5.1, 3.2, 2.4, 1.9. Average 9.7 hours before, 1.9 hours in the last quarter, 80 percent lower.Mean time to resolve, hoursIn-house on-callManaged service04812hours9.5 hQ110.2 hQ29.1 hQ39.8 hQ45.1 hQ13.2 hQ22.4 hQ31.9 hQ4Year 1Year 2Managed service starts9.7 h → 1.9 h80% lower MTTR

Frequently asked questions

Direct answers to the questions we hear most. Something else on your mind?

Send us a message
How is the PCI scope kept small?

A dedicated cardholder-data cluster is separate from the general-purpose clusters, so scope covers one platform instead of the whole company. A tokenization service is the only component that sees a full card number, and every other service holds only tokens. The result is a card-data environment reduced to one cluster and one tokenization service.

Where do the encryption keys live?

Network-attached hardware security modules, in a clustered pair per region, hold the key-encryption keys and are reached over PKCS#11 and mutually authenticated TLS. Kubernetes KMS v2 envelope-encrypts Secrets in etcd, and AES-256-GCM data keys for stored account data are wrapped by HSM-held keys and rotated on a schedule. Keys cannot be exported from the HSMs.

How is traffic between services controlled?

Default-deny network policy is enforced by Cilium (eBPF), with mutual TLS 1.3 between services using short-lived SPIFFE workload identities. Images are signed with Sigstore cosign, and every build has a software bill of materials. Logs ship in real time to write-once storage.

Do you know if your company is safe?

Speak with a security engineer today. The first assessment call is free and confidential.

CallFree assessment