FINMA-Aligned Infrastructure Verification

Your Infrastructure.
Provably Compliant.

Deterministic policy verification against cited FINMA regulatory sources. Offline-first. Airgapped. Engineered for institutions where trust is non-negotiable.

See Examples
Airgapped · Offline-first · No data leaves your pipeline
REGULATORY CONTROLS
CLOUD COMPLIANCE
TECHNICAL CONTROLS
EXCEPTION MANAGEMENT
GAP DETECTION
AUDIT TRAIL
PROPORTIONALITY
REMEDIATION
REGULATORY CONTROLS
CLOUD COMPLIANCE
TECHNICAL CONTROLS
EXCEPTION MANAGEMENT
GAP DETECTION
AUDIT TRAIL
PROPORTIONALITY
REMEDIATION
REGULATORY CONTROLS
CLOUD COMPLIANCE
TECHNICAL CONTROLS
EXCEPTION MANAGEMENT
GAP DETECTION
AUDIT TRAIL
PROPORTIONALITY
REMEDIATION

Catch violations before production

Every violation.
Every fix.

Helvetiguard evaluates your Terraform plan against FINMA-derived controls and tells you exactly what's wrong and how to fix it.

main.tf
resource "azurerm_key_vault" "main" {
  name     = "kv-finma-prod"
  location = "Switzerland North"
  sku_name = "standard"

  purge_protection_enabled      = true
  public_network_access_enabled = true

  # No network_acls block — violation!
}

Helvetiguard Output

helvetiguard evaluate
$ helvetiguard evaluate --plan tfplan.json
azurerm_key_vault.main Pass: 2 Fail: 3 FAIL
FAIL TECH.NET_ISOLATION
reason: KV_NETWORK_NOT_ISOLATED
fix: Disable public network access
fix: Add network ACLs with Deny default
fix: Restrict service bypass to None
FAIL TECH.ACCESS_CONTROL
reason: KV_RBAC_NOT_ENABLED
fix: Enable Azure RBAC authorization
Verdict: ✗ no deployment (3 violations)

The world isn't black and white

Nuanced compliance
with exceptions

Public access with proper network ACLs? That's not a hard failure — it's an exception path that requires CISO approval.

main.tf
resource "azurerm_key_vault" "restricted" {
  name     = "kv-finma-restricted"
  location = "Switzerland North"

  public_network_access_enabled = true

  network_acls {
    default_action             = "Deny"
    bypass                     = "None"
    ip_rules                   = ["203.0.113.0/24"]
    virtual_network_subnet_ids = [
      azurerm_subnet.kv.id
    ]
  }
}

Helvetiguard Output

helvetiguard evaluate
azurerm_key_vault.restricted
Pass: 2 Exception: 1 EXCEPTION
EXCEPTION TECH.NET_ISOLATION
Public access with restricted ACLs
Requires CISO approval
Verdict: ✓ deployment allowed (with exception)

Exception on file

.forge/exceptions/kv-restricted-net.json
{
  "resource_address": "azurerm_key_vault.restricted",
  "control_id": "FINMA_2023_1.CRITDATA.NET.002",
  "requirement_id": "network_isolated",
  "approved_by": "ciso@bank.ch",
  "approved_at": "2026-03-15T00:00:00Z",
  "expires_at": "2027-03-15T00:00:00Z",
  "justification": "Legacy migration — PNA required until cutover"
}

From regulation
to runtime

Every policy check traces back to its FINMA source paragraph. No black boxes. No ambiguity. Full auditability.

01

FINMA Circulars

All relevant circulars

5+
02

Regulatory Controls

Faithfully extracted, cited to Rz §

40+
03

Technical Controls

Cloud-agnostic requirements

80+
04

Cloud Controls

Azure resource-specific

150+
05

Tool Bindings

Terraform · Pulumi · Native

200+

See it in action

One requirement.
Five layers.

Follow a single FINMA requirement from the original circular text all the way to a Terraform policy check. Every layer is auditable.

01FINMA Circular

FINMA Circular 2023/1, Margin no. 76-77 — Original regulatory text

“Critical data must be adequately protected from being accessed and used by unauthorised persons during operations and during the development, change and migration of ICT. This also applies to critical data in test environments.”

“The ICT assets that store or process critical data must be afforded particular protection. Access to these data must be regulated systematically and monitored continuously.”

02Regulatory Control

FINMA_2023_1.CRITDATA.NET.002 — Regulatory control

MUST“ICT assets storing critical data must regulate and monitor access”
Source: Rz 76, 77Applies to: Banks, Securities Firms (Cat 1-3)
03Technical Control

TECH.NET_ISOLATION — Technical control

“Network isolation for critical data assets”

“Regulated systematically” is interpreted as: critical data assets must be isolated from unauthorized network access. Public endpoints must be disabled or restricted with deny-by-default ACLs.

Cloud-agnostic · Applies to any provider
04Cloud Control

AZURE.KV.NET_ISOLATION — Cloud control

Two compliance paths:

PASSpublic_network_access_enabled = false
EXCEPTIONpublic_network_access_enabled = true, but network_acls.default_action = Deny + scoped access + no bypass → requires CISO approval
5 assertions · 6 facts extracted from resource
05Tool Binding

AZURE.KV.NET_ISOLATION__terraform — Tool binding

# Generated policy (simplified)
pna_disabled(resource) {
  resource.change.after.public_network_access_enabled == false
}

default_action_deny(resource) {
  acls := resource.change.after.network_acls
  acls.default_action == "Deny"
}
Evaluates terraform show -json output · Deterministic · Offline

Three pillars of
compliance

01

Regulatory Mapping

Every control traced to specific FINMA circular paragraphs. Human-reviewed, machine-enforced. 40+ regulatory controls covering network isolation, encryption, access control, monitoring, BCM, and data residency.

All FINMA Circulars40+ ControlsCited SourcesHuman-Reviewed
02

Deterministic Evaluation

Deterministic policies generated from regulatory controls. Runs offline in your CI pipeline. Same input always produces same output. Supports Terraform today, Pulumi and native Azure Policy coming soon. 200+ tool bindings across 50+ Azure resource types.

TerraformPulumiAzure PolicyAirgappedOffline-first
03

Exception Management

Per-resource, time-bound exceptions with full audit trail. Approved by CISO, enforced by code, reviewed via CODEOWNERS. Exact matching on control + resource + requirement. RFC3339 expiry dates. No shadow compliance.

CISO ApprovalTime-boundAudit TrailCODEOWNERSPer-Resource

Tailored to your institution

Configurable
compliance

Every institution is different. Helvetiguard adapts to your FINMA supervisory category, institution type, and risk appetite. Category 5 banks get different rules than Category 1 systemically important institutions.

forge.control.config.json
{
  "version": "1",
  "institution": {
    "type": "bank",
    "category": 3
  },
  "global": {
    "expired_exception_outcome": "fail"
  },
  "parameters": {
    "AZURE.KV.DATA_RESIDENCY": {
      "approved_locations": [
        "switzerlandnorth"
      ]
    }
  }
}

Platform coverage

Terraform

Production Ready

Full support with 200+ bindings across 50+ Azure resource types.

Pulumi

Early Access

Join the early access program for Pulumi infrastructure-as-code support.

Native Policies

Early Access

Azure Policy and AWS Config integration. Contact us for early access.

Azure: Full coverageAWS: Early accessGCP: Roadmap

Not another
policy scanner

Generic scanners check best practices. Helvetiguard enforces Swiss financial regulation.

 HelvetiguardCheckov / tfsecAzure PolicySentinel
FINMA-specific controls
Traced to circular §
Proportionality (Cat 1-5)
Auditable exceptionsPartial
Offline / airgapped
Remediation guidancePartial

Built in Switzerland

Swiss-Made
Quality

Data Sovereignty

Your infrastructure data never leaves your pipeline. Evaluation runs entirely offline. No cloud dependency at runtime. No telemetry. No phone-home.

Full Auditability

Every control decision is traceable to its FINMA source. Every exception has an approval chain. Every evaluation is deterministic and reproducible.

Configurable per Institution

FINMA supervisory categories 1-5. Proportionality filtering. Institution-specific risk appetite. Per-control parameter overrides. Your compliance, your rules.

Ready to make your
infrastructure provably compliant?

See Helvetiguard evaluate your Terraform plans against FINMA regulations in real time.

Contact Sales