A Dashboard that Reads One Account
account_access_type ORGANIZATION lets a workspace query observability data in accounts whose owners never approved it, and SERVICE_MANAGED means AWS wrote those data-source policies. Current account, a role you wrote, and an endpoint narrowed to a prefix list rather than the whole internet.
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 "grafana" {
source = "www.iac-bazaar.com/iac-bazaar/aws-grafana/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.
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-grafana
An Amazon Managed Grafana workspace that reads one account, from a network you
name, with policies you wrote. Works with Terraform and OpenTofu (>= 1.6),
AWS provider >= 6.0, < 7.0.
account_access_type = ORGANIZATION turns a dashboard tool into an org-wide
reader. Combined with SERVICE_MANAGED permissions, AWS attaches read
policies across every account in the organizational units you list - so a
workspace somebody set up to chart one service can query CloudWatch, X-Ray and
Prometheus in accounts its owner has never heard of. CURRENT_ACCOUNT here, and
a precondition refuses the wider scope unless
accept_organization_wide_access states it.
permission_type = SERVICE_MANAGED means AWS writes the data-source
policies. It is convenient, and it is a set of permissions nobody on your side
reviewed. CUSTOMER_MANAGED here, taking a role you wrote and can read, with a
precondition that refuses it without one.
Without network_access_control the workspace endpoint answers from
anywhere. Authentication still applies, so this is not an open door - it is a
login page for your entire observability estate, published. A precondition
refuses it unless accept_internet_reachable_console says so, and a second
refuses a network_access block with neither a prefix list nor a VPC endpoint,
which would leave the workspace reachable from nowhere at all.
Smaller things: there is no local user database in Amazon Managed Grafana, so
authentication_providers is the whole of who can sign in; data_sources is
kept narrow because each entry is read permission attached for the workspace's
benefit; and grafana_version is worth pinning, since the AWS default moves and
takes your dashboards with it.
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-config
Recorder, delivery channel, service role and managed rules. Starting the recorder is a separate resource people leave out, so a stopped recorder looks identical to a running one until an investigation finds an empty timeline.
aws-prometheus
Alerting needs BOTH an alert manager definition and a rule group namespace; with either missing the workspace stores metrics and raises nothing while every dashboard reports it healthy. Without logging_configuration a throttled remote_write likewise produces no metrics, no error and no alert.
aws-cloudtrail
Multi-region trail with log file validation always on, a bucket that blocks public access, versions, encrypts and denies non-TLS, a policy pinned to this trail, optional CloudWatch delivery and opt-in data events.
aws-cloudwatch
A self-contained CloudWatch observability bundle - an encrypted log group with retention, a metric alarm, and a dashboard - that stands up from just a name and points at any real metric.
aws-security-lake
Organization security logs normalised to OCSF in S3, with the storage-class transitions that decide what it costs, optional replication, and subscribers whose external id is validated as the confused-deputy guard it is.