Back to Checks
Neptune cluster has IAM authentication enabled
neptune_cluster_iam_authentication_enabled
Service: neptuneSeverity: medium
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:AwsRdsDbCluster
Neptune DB clusters are evaluated for IAM database authentication.
If this setting is enabled, the cluster supports IAM-based authentication. If disabled, the cluster requires traditional database credentials instead.
Risk
Disabled IAM database authentication weakens confidentiality and integrity of the database.
- Static or embedded DB credentials can be stolen or reused, enabling unauthorized queries and data exfiltration
- Attackers may bypass centralized access controls, escalate privileges, and move laterally without IAM-based audit trails
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks neptune_cluster_iam_authentication_enabledRecommendation
Adopt IAM database authentication and centralized identity management to remove static DB credentials and improve auditability.
- Enforce least privilege for database roles
- Use short-lived credentials, centralized rotation and logging
- Apply defense-in-depth and integrate DB access with IAM for accountability
Remediation
CLI
aws neptune modify-db-cluster --db-cluster-identifier <DB_CLUSTER_ID> --enable-iam-database-authentication --apply-immediatelyTerraform
resource "aws_neptune_cluster" "example_resource" {
cluster_identifier = "<DB_CLUSTER_ID>"
iam_database_authentication_enabled = true # Enable IAM authentication instead of static DB credentials
}NativeIaC
Resources:
NeptuneCluster:
Type: AWS::Neptune::DBCluster
Properties:
DBClusterIdentifier: <DB_CLUSTER_ID>
IamAuthEnabled: true # Enable IAM authentication instead of static DB credentialsOther
1Sign in to the AWS Management Console and open Amazon Neptune > Databases
2Select the DB cluster and choose **Actions** > **Modify**
3In **Authentication**, enable **IAM DB authentication** and check **Apply immediately**
4Click **Continue** then **Modify DB cluster**
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.neptune.neptune_client import neptune_client
class neptune_cluster_iam_authentication_enabled(Check):
def execute(self):
findings = []
for cluster in neptune_client.clusters.values():
report = Check_Report_AWS(metadata=self.metadata(), resource=cluster)
report.resource_id = cluster.name
report.status = "FAIL"
report.status_extended = f"Neptune Cluster {cluster.name} does not have IAM authentication enabled."
if cluster.iam_auth:
report.status = "PASS"
report.status_extended = (
f"Neptune Cluster {cluster.name} has IAM authentication enabled."
)
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/securityhub/latest/userguide/neptune-controls.html#neptune-7
- https://docs.aws.amazon.com/config/latest/developerguide/neptune-cluster-iam-database-authentication.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/Neptune/iam-db-authentication.html#
- https://hub.steampipe.io/plugins/turbot/terraform/queries/neptune/neptune_cluster_iam_authentication_enabled