A SIEM that Can Still Answer for Last Quarter
retention_in_days defaults to 30, against intrusions usually discovered months later - so the first question, when did this start, gets silence rather than an answer. daily_quota_gb is a trap both ways and has no safe default, so the module makes you choose. And onboarding Sentinel connects no data source at all.
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 "sentinel" {
source = "www.iac-bazaar.com/iac-bazaar/azure-sentinel/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-sentinel?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
Terraform module 1.0.0, static-verified on IaC Bazaar: [A SIEM that Can Still Answer for Last Quarter](https://www.iac-bazaar.com/catalog/azure-sentinel?utm_source=syndication&utm_medium=readme&utm_campaign=artifact)
```hcl
module "sentinel" {
source = "www.iac-bazaar.com/iac-bazaar/azure-sentinel/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-sentinel
A Sentinel workspace that can still answer questions about last quarter. Works
with Terraform and OpenTofu (>= 1.6), azurerm provider >= 4.0, < 5.0.
retention_in_days defaults to 30, and that is a logging default that became
a security control by accident. Intrusions are typically discovered months
after they begin. A SIEM that cannot look back past a month cannot answer the
first question anybody asks - "when did this start" - and the answer will not
be "we don't know", it will be silence, because the data is gone.
investigable_window_days is an output for exactly that reason.
daily_quota_gb is a trap in both directions, and there is no safe default.
Leave it unlimited and one misconfigured verbose source bills thousands over a
weekend. Set a cap and ingestion stops for the rest of the day once it is
reached - so the day something noisy is happening is precisely the day you stop
recording it. Both are defensible; neither is safe. This module refuses to
choose for you: you either set the cap and say so, or leave it off and say so.
That is the one place here where the friction is the point.
Onboarding Sentinel connects nothing. The onboarding resource turns Sentinel on for the workspace. It does not connect Entra ID sign-ins, Defender, Office, or a single firewall - those are separate resources. A workspace with Sentinel enabled and no connectors is a SIEM with no data, billed as a SIEM, and it reads as "SIEM: yes" in every compliance questionnaire. A precondition makes you state which situation you are in.
internet_query_enabled defaults to true, and query is the asymmetric one.
Ingestion from the internet is usually necessary, because agents and cloud
services send from outside your network. Query is different: the workspace is
where the evidence lives, and querying it is how an intruder learns what you can
see.
Uses local_authentication_enabled rather than local_authentication_disabled -
the provider marks the latter deprecated, and shipping a buyer a deprecated
attribute is a papercut they inherit.
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-grafana
API keys are long-lived, unscoped bearer tokens that read every dashboard and end up in CI variables; the login page is public by default; and the Essential SKU is a single instance with no SLA. Keys off, login over a private endpoint, Standard SKU zone-redundant, fixed outbound addresses for data-source allow lists, and the identity it reads with exported for its Monitoring Reader grant.
azure-monitor-baseline
Central Log Analytics workspace, diagnostic-settings-everywhere pattern, action groups and starter alert pack (metric + log + activity).
azure-flow-logs
enabled = false creates a flow log that logs nothing; a retention policy that is off keeps the JSON blobs until somebody deletes the storage account; and without Traffic Analytics nobody ever opens them. Every target is created enabled, retention defaults to 90 days, and Traffic Analytics is on whenever a workspace is given - raw blobs with no aggregation have to be asked for.
azure-application-insights
When the daily cap is hit everything after it is discarded until midnight and the dashboard goes flat, and the one email that says so has its own switch. Ingestion sampling stacks on the SDK's sampling and the metrics rescale. Both are refused without being named, and availability tests are created with the alerts that make an outage reach a person rather than a chart.
azure-activity-log
The subscription's Activity Log exported to a Log Analytics workspace, a storage account and/or an Event Hub, because Azure keeps it for ninety days and then forgets. All eight categories go; dropping Administrative, Security or Policy, the three an investigation asks for, is accepted by name. The workspace's retention is the workspace's setting; the years live in the storage account.
azure-uptime-check
Application Insights Standard tests with the metric alert that makes them tell somebody. Microsoft says a test without an alert rule only notifies the portal, recommends five locations and alerting at locations minus two, and retires URL ping tests on 30 September 2026. The module follows all three, checks certificate lifetime, and lets content, not only a 200, decide what up means.