Back to Checks
Neptune cluster storage is encrypted at rest
neptune_cluster_storage_encrypted
Service: neptuneSeverity: high
OfficialBuilt-inVerified
Categories:encryption
Resource Type:Other
Neptune DB cluster is evaluated for encryption at rest. Indicating the cluster's underlying storage is not encrypted.
Risk
Unencrypted Neptune storage reduces confidentiality of stored data and metadata and increases attack surface.
Possible impacts:
- Unauthorized access or data exfiltration from underlying volumes or snapshots
- Greater blast radius from leaked or shared snapshots
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks neptune_cluster_storage_encryptedRecommendation
Provision all new Neptune DB clusters with encryption at rest and prefer Customer-Managed Keys (CMK) for key ownership and auditability.
Enforce least privilege on KMS keys, implement key lifecycle practices (rotation, revocation) and ensure backups/snapshots remain encrypted to prevent exposure.
Remediation
Terraform
resource "aws_neptune_cluster" "example_resource" {
cluster_identifier = "<cluster-id>"
storage_encrypted = true # Enable encryption at rest for data protection
}NativeIaC
Resources:
EncryptedNeptuneCluster:
Type: AWS::Neptune::DBCluster
Properties:
DBClusterIdentifier: !Sub ${DBClusterIdentifier}
StorageEncrypted: true # Enable encryption at rest for data protectionCheck 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_storage_encrypted(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} is not encrypted at rest."
)
if cluster.encrypted:
report.status = "PASS"
report.status_extended = (
f"Neptune Cluster {cluster.name} is encrypted at rest."
)
findings.append(report)
return findings