Backups that Survive Whoever Gets Into the Vault
Soft delete covers deletion; it does not cover somebody shortening a retention policy so every backup ages out on its own - which deletes nothing, so no soft-delete window opens. immutability is the control that refuses that edit, and it defaults to Disabled. Locked is irreversible and gets its own acknowledgement.
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 "backup" {
source = "www.iac-bazaar.com/iac-bazaar/azure-backup/azure"
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/azure-backup?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
Terraform module 1.0.0, static-verified on IaC Bazaar: [Backups that Survive Whoever Gets Into the Vault](https://www.iac-bazaar.com/catalog/azure-backup?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
```hcl
module "backup" {
source = "www.iac-bazaar.com/iac-bazaar/azure-backup/azure"
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
azure-backup
A Recovery Services vault whose backups survive whoever gets into it. Works with
Terraform and OpenTofu (>= 1.6), azurerm provider >= 4.0, < 5.0.
immutability defaults to Disabled, and it is the setting that matters.
Soft delete buys fourteen days against a deletion, which is real protection and
is not the whole problem: somebody with permissions on the vault can shorten a
retention policy instead, and the backups age out on their own within the
hour. Nothing was deleted, so nothing triggers a soft-delete window and nothing
alerts. Immutability is what refuses that edit, and
backups_survive_a_retention_edit is the output to assert on.
Locked is irreversible. Not "hard to undo" - there is no path back, for
anybody, including Microsoft support. It is the right end state for a production
vault and the wrong thing to discover, so it has its own acknowledgement rather
than being the default. Unlocked here: it refuses the same edits and can still
be changed while you settle the retention policies.
cross_region_restore_enabled defaults to false, so a regional outage
leaves the backups intact and unreachable - which, on the morning you need them,
is the same as not having them. It requires GeoRedundant storage, and Azure
rejects the pair at apply with an error that does not name the dependency, so a
precondition checks them together.
public_network_access_enabled defaults to true. The vault's data plane is
reachable from the internet, authenticated, and it holds a copy of everything
you back up.
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
azure-file-share
A share inherits its security boundary from the storage account, which defaults to public access and TLS 1.0; the quota is the price on premium; and a share is backed up only when a Recovery Services vault protects it through a policy and an assignment. A private account with TLS 1.2, the quota deliberate, share soft delete on, vault, policy and protection created together (none by name).
azure-managed-disk
A managed disk's export SAS works from anywhere until public access is off; your key is a disk encryption set nobody creates; and Azure Backup for disks is a vault, a policy and an instance, where the instance is the assignment most vaults lack. Public export closed, the encryption set taken when given, and vault, policy, role assignments and backup instance created together (none by name).
azure-storage-mover
Azure Storage Mover from an NFS share to a blob container: the mover, project, endpoints and job definition, with the agent registered from its Arc machine and granted Storage Blob Data Contributor when its IDs are given. Additive copy mode; Mirror, which deletes at the target what the source no longer has, is accepted by name. The run itself is started outside Terraform.
azure-storage-account
Storage account with containers/file shares, lifecycle rules, network rules, CMK encryption and private endpoint options - Azure's most-deployed resource done right.
azure-managed-lustre
Azure Managed Lustre with the blob containers that make the data outlive the file system, root squash naming the clients that keep root, a customer-managed key through a user-assigned identity, and the capacity checked against the SKU's step before the plan. No blob integration, root on every client and the platform key are each accepted by name; the file system is zonal.
ibm-backup-policy
Backup for VPC: a policy that selects volumes (or instances) carrying the tags you name, a daily plan that keeps snapshots thirty days and copies the user tags across, and a copy of each snapshot to a second region with an encryption key of yours there; a single region is accepted by name. A policy with no plan backs up nothing; the plan is created here.