Neptune DB clusters should have IAM database authentication enabled
IAM database authentication lets you authenticate to Neptune using IAM roles and temporary credentials instead of static passwords. This eliminates the need to store or rotate long-lived database credentials, reduces the blast radius of a credential leak, and integrates Neptune access into your existing IAM policy structure. You get CloudTrail logging of authentication events for free.
Without IAM authentication, Neptune access depends on VPC-level network controls alone. Any client that can reach the cluster endpoint can query or mutate graph data with no identity verification beyond network reachability.
Retrofit consideration
Enabling IAM authentication on an existing cluster does not cause downtime, but all client applications must be updated to use IAM-based SigV4 signing for connections. Existing non-IAM connections continue to work, so you must also verify that applications actually adopt the new auth method.
Implementation
Choose the approach that matches how you manage Terraform.
Use AWS provider resources directly. See docs for the resources involved: aws_neptune_cluster.
resource "aws_neptune_cluster" "this" {
backup_retention_period = 7
cluster_identifier = "pofix-abc123"
enable_cloudwatch_logs_exports = ["audit"]
neptune_subnet_group_name = "example-neptune-subnet-group"
skip_final_snapshot = true
iam_database_authentication_enabled = true
}
What this control checks
The control validates that the aws_neptune_cluster resource has iam_database_authentication_enabled set to true. When this argument is omitted, the AWS provider defaults it to false, which causes the control to fail. No additional resources or IAM policy attachments are evaluated, only the boolean flag on the cluster resource itself. Set iam_database_authentication_enabled = true on every aws_neptune_cluster to pass.
Common pitfalls
Default value is false
The
iam_database_authentication_enabledargument defaults tofalsewhen omitted. Unlike some other Neptune settings, there's no provider-level default override, so every cluster definition must explicitly set it totrue.Enabling IAM auth does not replace network controls
Setting
iam_database_authentication_enabled = trueenables IAM database authentication, but it doesn't restrict which network paths can reach the cluster endpoint. You still need restrictive security groups and subnet design, plus least-privilege IAM permissions (for example,neptune-db:connectscoped appropriately) so only approved principals from approved network locations can access the cluster.Client SDK changes required
Enabling the flag without updating clients means IAM auth exists on paper but is never exercised. Applications must sign Neptune HTTP or WebSocket requests with SigV4 using the
neptune-db:connectIAM action, and Gremlin and SPARQL clients need explicit SigV4 signing plugins.
Audit evidence
An auditor expects Config rule evaluation results showing all Neptune clusters passing the neptune-cluster-iam-db-auth managed rule. Supporting evidence includes CLI output from aws neptune describe-db-clusters with IAMDatabaseAuthenticationEnabled set to true for every cluster. CloudTrail logs showing SigV4-signed connection attempts to Neptune endpoints confirm that IAM authentication is actively used, not merely enabled.
Security Hub exports showing a passing status for this control across all accounts and regions in scope provide consolidated evidence for audit packages.
Framework-specific interpretation
PCI DSS v4.0: Requirements 7 and 8 together call for least-privilege access and strong, unique authentication for every system component in scope. For Neptune, IAM database authentication checks both boxes: it replaces static credentials with per-principal, time-limited tokens, and the authentication path runs through IAM rather than the network perimeter.
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
neptune_db_cluster_iam_authentication_enabledAWS Config Managed Rule:
NEPTUNE_CLUSTER_IAM_DATABASE_AUTHENTICATIONCheckov Check:
CKV_AWS_359Powerpipe Control:
aws_compliance.control.neptune_db_cluster_iam_authentication_enabledProwler Check:
neptune_cluster_iam_authentication_enabledAWS Security Hub Control:
Neptune.7KICS Queries:
88fd05e0-ac0e-43d2-ba6d-fc0ba60ae1a6,c91d7ea0-d4d1-403b-8fe1-c9961ac082c5
Last reviewed: 2026-03-09