๐Ÿ—๏ธ

IaC / Terraform Scanning

Infrastructure-as-Code Security Scanning

Catch cloud misconfigurations in 15+ Infrastructure-as-Code formats *before* they ship โ€” and keep tracking them *after* they ship.

A native HCL2 engine reads a real HashiCorp syntax tree (not whitespace-brittle regex), with compliance-mapped typed rules, auto-fix snippets and CIS mapping across AWS, GCP and Azure. Additional engines run alongside it, taking total coverage past 1,000 checks and reaching the long-tail formats most scanners skip. On overlap the native typed rules win, so basics are never double-reported.

Two surfaces:

  • Shift-left CI/CD gate โ€” block a risky terraform apply in your pipeline, with a pass/fail verdict.
  • In-platform posture โ€” IaC findings land on your Findings dashboard.

The differentiator โ€” code-to-cloud correlation. Unlike a CLI-only scanner, every IaC misconfiguration is matched to your live cloud asset graph: you see whether the bad config is *actually deployed*, and whether that asset is internet-facing or holds sensitive data. A hypothetical issue becomes a confirmed live exposure that outranks purely-static findings โ€” the link pure scanners cannot make.

How it fits together


The CI/CD gate

Your pipeline sends changed IaC files to a per-tenant, authenticated scan endpoint. Every engine runs, findings are correlated to your live cloud asset graph, and the response carries a gate verdict your build step acts on.

VerdictTriggered byPipeline
FAILโ‰ฅ 1 CRITICAL findingโ›” build fails
WARNโ‰ฅ 1 HIGH (no critical)โš ๏ธ reported, doesn't block
PASSonly medium/low, or cleanโœ… build passes

By default only CRITICAL fails the gate; you can also block on HIGH, or run report-only.

Every finding carries a severity, a stable per-cloud rule ID (TF-/GCP-/AZ-), the resource and file:line, a description and remediation, a ready-to-paste auto-fix HCL snippet, a CIS benchmark reference, and SOC 2 / HIPAA / PCI-DSS / GDPR compliance mapping.


In-platform posture

Your Terraform is also scanned during your regular Tier-1 scan; findings land on your Findings dashboard tagged *IaC Misconfiguration*, sitting next to the live cloud finding for the same resource: "public in the *code* and confirmed public in the *running account*."


Coverage

CloudNative-rule examples
AWSpublic S3 ACL/PAB, unencrypted RDS/EBS, open security groups, IAM wildcard admin, IMDSv2 not enforced
GCPpublic Storage/IAM, open firewall (SSH/RDP), public Cloud SQL, GKE legacy ABAC
Azurepublic Storage/weak TLS, open NSG, public SQL + firewall, Key Vault purge-protection
+ CloudFormation & KubernetesS3/RDS, privileged containers, hostPath, :latest, missing limits/probes

Formats (15+): Terraform (.tf/.tfvars, real HCL2), CloudFormation (YAML/JSON), Kubernetes, Helm, Dockerfile, Azure ARM, Ansible, Pulumi, Google Deployment Manager, Crossplane, OpenAPI/Swagger, Knative, gRPC, CI/CD pipelines, Docker Compose and serverless.


Known limitations

  • Read-only โ€” it parses files and never touches your cloud.
  • Your code is not stored. The CI endpoint is stateless โ€” files are parsed in memory and discarded; only the findings come back. The in-platform surface stores findings, not source.
  • Up to 100 files / 5 MB per request.
  • No self-serve repo connect yet โ€” the Terraform we scan is configured with your team during onboarding; a "Connect repository / upload Terraform" experience is on the near-term roadmap.
  • The API key is tenant-scoped โ€” scans and findings stay isolated to your workspace.

Next step

On a call we'll cover CI wiring for your stack, the thresholds you want enforced, and how correlation lands against your accounts. Talk to us about deployment

Related: API Reference ยท Scanning Tiers ยท Compliance