IBM CloudStatic-verified

A WAF That Tells You Removing It Leaves It Running

The CIS managed and OWASP core rulesets deployed on an IBM Cloud Internet Services domain, with the OWASP threshold, action and paranoia level set. The resource owns the whole managed phase, so console rules are overwritten, and destroying it leaves the WAF running - the module says so and makes turning it off an explicit step. The deprecated legacy WAF resources are not used.

terraformAlt & Specialty Cloudsibmcloud

Compare WAF & Edge Security across clouds →

ibm-wafvizier v1.2.0

Verification

Static-verified

Passed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).

Conformance

  • Static validation (fmt · validate · tflint)
  • No applicable security policies for this provider
  • Plan tests (mocked: validation rules · outputs)

Provenance

  • SHA-256 checksum
  • Signature (pending)

Functional

  • Live test pending (no cloud run yet)

Last verified 2026-09-16 · how we verify

Use it from the registry

terraform · opentofu
module "waf" {
  source  = "www.iac-bazaar.com/iac-bazaar/ibm-waf/ibmcloud"
  version = "1.0.0"
}

Needs a registry token from /account/tokens. The module itself is free; the account is what identifies you. Full setup: registry docs.

Inputs & outputs

Create a free account to read this module's contract

The declared contract - every input name, type, default and description, plus every output - is shown to signed-in accounts, not to anonymous visitors.

A free account sees the contract of every module in the catalogue. There is no subscription and nothing to buy - the modules are free to download, and they run under Vizier.

Documentation

ibm-waf

A web application firewall on IBM Cloud Internet Services (CIS). Works with Terraform and OpenTofu (>= 1.6), ibm provider >= 1.77.0, < 3.0.

A managed ruleset protects nothing until a rule executes it. The module writes an execute rule per ruleset in the domain's managed phase.

This resource owns the whole phase. The provider documents that an update replaces any rule it is not given, so a rule added in the console is gone after the next apply.

Destroying the module leaves the rulesets running. The provider's delete does nothing. Turn rulesets off with the enable flags and accept_no_rulesets, apply, then remove the module.

The OWASP ruleset acts on a score. Rule 949110 acts when the threat score passes the threshold, medium (40) by default; log makes it detection only, and owasp_blocks says which it is.

Paranoia level 1 is the default. Higher levels enable more rules and more false positives. The legacy ibm_cis_waf_* resources are deprecated and not used.

Verification

Static validation runs tofu fmt, init, validate, tflint and checkov. This module has not yet had a live test, so it is published as statically validated with its live test pending and does not carry the live-tested mark.

Usage code & full reference need an account

The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.

  • Usage

Related modules

Static validatedLive test pending

ibm-security-group

An IBM VPC security group with no rules denies everything in both directions, so a group written with inbound rules only leaves instances that cannot resolve DNS; a group with no targets protects nothing; and SSH from 0.0.0.0/0 is the first rule offered. Outbound explicit with egress open by default, targets attached by the module (none by name), SSH from anywhere refused unless accepted.

View module
Static validatedLive test pending

ibm-trusted-profile

An IAM trusted profile, which is identity without an API key: policies that grant roles on one service and resource group each (Administrator by name), and links to the virtual servers or Kubernetes service accounts that may assume it through the metadata service, since a profile with no link is assumed by nobody (accepted by name).

View module
Static validatedLive test pending

ibm-customer-identity

IBM Cloud App ID's customer directory, redirect URLs, token lifetimes, and MFA, password policy and activity tracking. The provider lets anyone sign up by default, so that input has no default here. Redirect URLs refuse plaintext and wildcards unless accepted, as IBM advises. MFA, password policy and tracking are billed, graduated-tier-only features, so they need an explicit yes.

View module
Static validatedLive test pending

huawei-waf

A dedicated WAF of two anti-affinity instances in your subnet (one by name), pay-per-use, with a policy in block mode (log mode by name) that turns on basic web protection, CC attack protection, precise protection, web shell detection, anti-crawler and data masking, and the protected domain with your certificate, TLS 1.2, cipher suite 2 and PCI DSS checks, forwarding to origins over HTTPS.

View module
Static validatedLive test pending

azure-waf-policy

Detection mode evaluates every rule, logs every match and forwards every request - the dashboard fills with blocked-looking entries while the backend receives them all. Prevention by default, Detection only by name. A policy attached to no listener protects nothing, so the attached listeners are an output; every exclusion is a hole and has to carry a reason.

View module
Static validatedLive test pending

tencent-waf

A domain on a Tencent Cloud SaaS WAF, rules set to block, with block and allow lists. It reads back the CNAME, the mode the WAF reports and the addresses the WAF forwards from, so the origin can refuse everything else. An allowlist here lets addresses through; it does not make a site private. The client IP is taken from the connection unless you say a proxy sits in front.

View module