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.
Verification
Static-verifiedPassed: 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 · opentofumodule "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
gcp-service-perimeter
spec is the dry-run configuration and status is the enforced one - two blocks of the same shape, and a perimeter with only a spec is evaluated on every request, logs violations, and blocks nothing. Empty restricted_services is the other way to have none: the perimeter exists, covers the projects, and governs no API.
gcp-cloud-armor
A global Cloud Armor WAF policy with preconfigured OWASP SQLi and XSS rules enforcing by default, an optional per-client rate limit, and custom IP allow/deny rules - attachable to many backends.
gcp-workload-identity-federation
attribute_condition is optional, and the issuer is not yours - so omitting it on a GitHub Actions provider trusts every workflow in every repository belonging to anyone on GitHub. It works perfectly in testing, because your workflow is one of the ones it admits. Refused here, along with a wildcard principalSet.
gcp-service-accounts-iam
Service accounts with least-privilege project/resource IAM and optional Workload Identity Federation for keyless CI/CD (GitHub Actions).