Cart
Net 9 regions NRT 232 ms SYD 264 ms AMS 12 ms Uptime 30d 99.997 %
All posts

Security

PCI-DSS for SaaS: what we learned

Omega Digital 12 min read

We finished our PCI-DSS Level 1 assessment last quarter. It took 14 months, three QSA conversations, and a network segmentation rewrite that shrunk our CDE to 12% of infrastructure. This is what we would tell ourselves on day one.

PCI-DSS (Payment Card Industry Data Security Standard) is one of those compliance frameworks that looks straightforward on paper and turns out to be deeply architectural in practice. When we started our Level 1 assessment, required because we process over 6 million card transactions per year, we expected a documentation exercise. We got a 14-month infrastructure transformation.

Scoping is everything

The most important thing you can do before any PCI work is minimize your scope. Every system that 'stores, processes, or transmits cardholder data' is in scope, and so is every system that can reach those systems. In our initial architecture, that was approximately 60% of our infrastructure because our internal network was largely flat.

We spent the first four months on network segmentation alone: VLAN isolation, micro-segmentation with next-gen firewall rules, and removing direct connections between the cardholder data environment (CDE) and our general business systems. By the time we were done, the CDE comprised 12% of our total infrastructure, a far more manageable scope.

Requirement 6: Secure software development

Requirement 6 of PCI-DSS 4.0 is where most SaaS companies discover gaps. It mandates secure coding practices, code review for security, and protection against common web vulnerabilities (OWASP Top 10). Our engineering team was already doing code review, but 'code review' and 'security-focused code review' are different disciplines.

  • · Trained all engineers on OWASP Top 10 with hands-on exercises
  • · Added SAST (Semgrep + CodeQL) to every PR pipeline
  • · Added DAST scanning to staging environments weekly
  • · Formalized threat modeling for any feature touching payment flows
  • · Required two-person review for all changes to CDE-touching code

Requirement 8: Identity and access management

MFA everywhere sounds obvious. It's harder than it sounds when you have 200 engineers, 40 contractors, dozens of service accounts, and a mix of legacy systems that don't support modern MFA methods. We deployed a hardware security key mandate (FIDO2/WebAuthn) for all human access to CDE systems, no TOTP, no SMS. For service accounts we moved to short-lived certificates issued by an internal CA rather than long-lived API keys.

bash
# Audit all IAM users with console access but no MFA
aws iam get-credential-report --query 'Content' --output text \
  | base64 -d \
  | awk -F, '$4 == "true" && $8 == "false" {print $1, "- no MFA"}'

Logging: you need more than you think

PCI-DSS requires comprehensive audit logging and, critically, the ability to detect and respond to anomalies within 24 hours. Our existing logging was adequate for debugging but not for compliance: logs were retained for 30 days, not the required 12 months; log integrity wasn't guaranteed; and we had no alerting on suspicious patterns like off-hours CDE access or bulk data queries.

We rebuilt our logging pipeline: centralized log aggregation into immutable S3 storage with object-lock enabled (WORM compliance), 13-month retention, and a SIEM deployment with rules covering every PCI-required event type. The SIEM alone took three months to tune; the initial false-positive rate made it unusable.

The QSA relationship

Your Qualified Security Assessor isn't an adversary. Treat them as a consultant who happens to also write your assessment report. We had three substantive conversations with our QSA before starting formal assessment work, which let us identify scope and control gaps early rather than during the on-site assessment.

PCI compliance is not a destination. It's an operating model. The organizations that struggle most are those that treat it as a one-time project.

What we'd do differently

  • · Start network segmentation on day one, before any other work
  • · Hire a dedicated compliance engineer: part-time QSA time is not a substitute
  • · Automate evidence collection from day one (manual evidence gathering for 300+ controls is brutal)
  • · Use tokenization for any payment data that doesn't need to be raw: dramatically reduces scope
  • · Plan for the assessment to take twice as long as you expect
OD

Omega Digital

Platform · Omega Digital