Google CloudStatic-verified

Only Images Somebody Vouched For Get to Run

DRYRUN_AUDIT_LOG_ONLY admits the image and writes a line about it while the console shows the policy as configured. ALWAYS_ALLOW is the other way to have nothing: a valid, enforced policy that admits everything. Both have to be right, so one output reports over both.

terraformGoogle Cloudgcp
gcp-binary-authorizationvizier 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-13 · how we verify

Use it from the registry

terraform · opentofu
module "binary_authorization" {
  source  = "www.iac-bazaar.com/iac-bazaar/gcp-binary-authorization/gcp"
  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

gcp-binary-authorization

Only images somebody vouched for get to run. Works with Terraform and OpenTofu (>= 1.6), google provider >= 6.0, < 7.0.

enforcement_mode = DRYRUN_AUDIT_LOG_ONLY admits the image and writes a line about it. The policy is attached, the console shows it as configured, the audit log fills with violations - and the unsigned image is running in production the whole time. Dry run is the right way to introduce this policy and the wrong way to leave it.

evaluation_mode = ALWAYS_ALLOW is the other way to have nothing. It is a valid, enforced policy that admits everything, so the enforcement mode can be entirely correct and the policy still check nothing at all. Both have to be right, which is why actually_blocks is a single output over both rather than two you have to combine yourself.

admission_whitelist_patterns are exemptions, and a wildcard is a blanket one. Patterns like gcr.io/my-project/base/* are how base images and sidecars get in; a pattern of * admits every image from everywhere while the policy still reports as enforcing. A precondition refuses it.

global_policy_evaluation_mode = ENABLE also admits Google-maintained images without your attestations. That is usually wanted, because system containers have to start - but it is a set of images you did not sign and did not list, and it is worth knowing it is there.

Smaller things: a precondition refuses REQUIRE_ATTESTATION with no attestors, which would block every deployment rather than none; and clusters_not_enforcing lists per-cluster overrides that admit unsigned images regardless of what the default rule says, since a dev-cluster exception is exactly the kind of thing that quietly outlives its reason.

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