A Build Project that Is Not Root on Its Host
privileged_mode hands the build the Docker socket, so anything it runs can read every environment variable and assume the service role. Off by default, and a PLAINTEXT variable whose name looks like a secret is refused.
Verification
Static-verifiedPassed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).
Conformance
- Static validation (fmt · validate · tflint)
- Security scan clean (Checkov)
- Plan tests (mocked: validation rules · outputs)
Provenance
- SHA-256 checksum
- Signature (pending)
Functional
- Live test pending (no cloud run yet)
Last verified 2026-09-12 · how we verify
Use it from the registry
terraform · opentofumodule "codebuild" {
source = "www.iac-bazaar.com/iac-bazaar/aws-codebuild/aws"
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.
Cite it in your README
badge · attributionPaste this beside the module in the repository that uses it. The badge is rendered from this artifact's verification record, so it reads static-verified because the record says so, and the link lands on this page.
[](https://www.iac-bazaar.com/catalog/aws-codebuild?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
Terraform module 1.0.0, static-verified on IaC Bazaar: [A Build Project that Is Not Root on Its Host](https://www.iac-bazaar.com/catalog/aws-codebuild?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
```hcl
module "codebuild" {
source = "www.iac-bazaar.com/iac-bazaar/aws-codebuild/aws"
version = "1.0.0"
}
```Preview:
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
aws-codebuild
A CodeBuild project - where your source meets your credentials. Works with
Terraform and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0.
privileged_mode hands the build the Docker socket, which is root on the
build host. Anything the build runs - a dependency's install script, a test that
pulls a container, a compromised action - can then read every environment
variable in the job, reach the instance metadata service, and assume this
project's service role. It gets switched on routinely because "the build needs
to build an image". It is off here, and a precondition makes turning it on an
explicit statement; a separate minimal project for the image build is usually
the better answer.
A PLAINTEXT environment variable is stored, not passed. Its value lives in
the project definition and the build history, and reaches the log the moment
anything echoes it - a log usually readable by more people than the secret is.
PARAMETER_STORE and SECRETS_MANAGER pass a reference and let CodeBuild fetch
the value at build time. A precondition refuses a PLAINTEXT variable whose
name looks like a secret (password, token, api_key, private_key, and so
on), and plaintext_environment_variables lists the ones that are stored.
Without vpc, the build runs on AWS's network with unrestricted egress -
which is not the same thing as isolated, and is how a poisoned dependency gets
its payload out.
Two settings are deliberately not configurable:
artifacts.encryption_disabledis always false. Build output is usually the thing worth stealingsource.insecure_sslis always false. Turning it on disables certificate verification on the clone, which is a machine-in-the-middle against your own source
Smaller defaults that differ from AWS's: build_timeout_minutes is 30 rather
than 60, because the default is an hour of billing for a build that has already
hung; and the example pins a commit SHA rather than a branch, because a
branch means the same build number can produce different bytes.
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
aws-fis
FIS refuses a template with no stop condition, which reads like a guarantee - and source = 'none' is a legal stop condition meaning the experiment never halts by itself. Refused here, along with targets that grow at run time and an empty-target mode that reports success for having tested nothing.
aws-codeartifact
A repository with a public external connection serves whatever the public registry holds for any name it does not. This puts the connection on its own repository, reached through an upstream, and emits the origin-control commands Terraform cannot apply.
aws-appconfig
AppConfig exists to deploy a configuration slowly and roll it back automatically, and both halves are opt-in - the predefined AllAtOnce strategy is 100% of the fleet with zero bake time. Gradual here, and a precondition refuses an environment with no alarms, where automatic rollback has nothing to fire on.
ansible-aws-cli-v2
The AWS CLI v2 from the upstream zip, verified with gpg against the AWS CLI Team key (pinned by fingerprint, in a GnuPG home of its own) before it is unpacked. EL 10 has no package; most installs run curl | unzip and never read the signature. Pinned version, tab completion, and a live test that runs an API call to 'Unable to locate credentials'. Original role, live-tested on Rocky Linux 10.
aws-mwaa
webserver_access_mode defaults to PUBLIC_ONLY, and the Airflow UI is not a dashboard: anyone who reaches it can trigger a DAG, which is arbitrary Python running as the execution role. PRIVATE_ONLY here, all five log streams on, and a precondition refuses an unpinned requirements.txt or plugins.zip - where bucket write access is otherwise the same permission as code execution.
aws-codedeploy
CodeDeploy application, deployment groups, and the platform-correct service role for automated EC2/ECS/Lambda rollouts with auto-rollback on failure.