A Compartment where the Wrong Resource Cannot Be Created
The opposite of every other guardrail here: a security zone does not detect or report, it REFUSES - the API call fails. There is no dry-run mode. So the risk inverts too: applied to a compartment that already holds non-compliant resources, the team that owns them discovers they can no longer change them.
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-13 · how we verify
Use it from the registry
terraform · opentofumodule "security_zone" {
source = "www.iac-bazaar.com/iac-bazaar/oci-security-zone/oci"
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/oci-security-zone?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
Terraform module 1.0.0, static-verified on IaC Bazaar: [A Compartment where the Wrong Resource Cannot Be Created](https://www.iac-bazaar.com/catalog/oci-security-zone?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
```hcl
module "security_zone" {
source = "www.iac-bazaar.com/iac-bazaar/oci-security-zone/oci"
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
oci-security-zone
An OCI security zone: a compartment where a non-compliant resource cannot be
created at all. Works with Terraform and OpenTofu (>= 1.6), oci provider
>= 8.0, < 9.0.
This one actually refuses, and that is the point. Most cloud guardrails detect, report, and leave the offending resource running. A security zone is different: create a public bucket in a compartment governed by a recipe that forbids it and the API call fails. There is no dry-run mode, no "enforcement: disabled" flag, and nothing to leave half-set.
So the danger here is the mirror image of the usual one. Everywhere else the risk is a control that quietly does nothing. Here the risk is a control that loudly does something - applied to a compartment that already contains non-compliant resources, whose team is about to discover they can no longer change them. Existing resources are not deleted or altered; they simply cannot be updated into a still-violating state, and new ones cannot be created. Move an empty compartment into a zone, not a busy one. A precondition asks you to confirm you checked, because this is the rare case where the failure is immediate and visible rather than silent.
An empty recipe is a zone that forbids nothing. security_policies is
required but may be an empty list, which produces a compartment that reads as a
security zone everywhere it is listed and refuses nothing at all.
is_inheritance_after_delete_enabled decides what happens underneath. Sub
compartments inherit the zone; with inheritance-after-delete off, deleting this
zone un-protects every compartment beneath it in the same operation, with
nothing at the point of deletion to say so.
inherited_by_compartments is an output because the blast radius of a zone is
that list, not the single compartment it was applied to.
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
oci-cloud-guard
Oracle ships every responder rule in USERACTION mode: a Remediate button appears on each problem and nothing happens until a person clicks it, so a tenancy with hundreds of findings has by default fixed none of them. Sets AUTOACTION per rule and exports the IAM statements each auto-action needs, since one without its policy fails on every execution.
oci-customer-identity
An OCI identity domain on the external-user licence. license_type is not updatable, so changing it replaces the domain with an empty one and every customer account is gone - and the admin email is create-time only too. A domain must be deactivated before it can be deleted, which the module exposes, and it stays off your staff sign-in page.
oci-network-firewall
An INSPECT rule hands the flow to the threat engine, and inspection decides what happens next: INTRUSION_PREVENTION drops the session, INTRUSION_DETECTION logs it and forwards it, and the rule reads INSPECT either way. Every inspect rule is prevention unless detection is accepted by name; policy and appliance are both created, and the address the route tables must point at is an output.
oci-waf
CHECK is the action that evaluates the rule, logs the match and lets the request through - the console shows the protection rules and every matched attack reached the backend. BLOCK by default, DETECT only by name. The policy and the firewall binding it to a load balancer are separate resources; both are created, and a policy alone has to be asked for.
oci-network-security-group
An NSG with no rules admits nothing and sends nothing, so a group written with ingress only has VNICs that cannot resolve DNS; a stateless rule drops every reply that has no matching egress; and the subnet's security list still applies, unioned with the NSG. Stateful always, egress explicit and open by default, SSH from 0.0.0.0/0 refused unless accepted, the security list named as still applying.
oci-bastion
Zero-footprint managed bastion with session-managed SSH/port-forward access to private subnets - replaces jump hosts.