Back to Checks
DMS endpoint has SSL enabled
dms_endpoint_ssl_enabled
Service: dmsSeverity: high
OfficialBuilt-inVerified
Categories:encryption
Resource Type:AwsDmsEndpoint
AWS DMS endpoints have their SSL/TLS mode inspected; any value other than none denotes encrypted connections between the replication instance and databases.
Supported modes include require, verify-ca, and verify-full.
Risk
Without TLS, data in transit can be read or altered, affecting:
- Confidentiality via packet sniffing and credential leakage
- Integrity through MITM tampering of migration streams
- Availability from session hijack or task disruption
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks dms_endpoint_ssl_enabledRecommendation
Configure endpoints to use SSL/TLS at least require; prefer verify-ca or verify-full where supported. Manage trusted CA material and rotate regularly. Apply defense in depth with private connectivity and strict IAM, and enforce this posture via policy-as-code and continuous validation.
Remediation
CLI
aws dms modify-endpoint --endpoint-arn <endpoint-arn> --ssl-mode requireTerraform
# Terraform: Set SSL on a DMS endpoint
resource "aws_dms_endpoint" "<example_resource_name>" {
endpoint_id = "<example_resource_name>"
endpoint_type = "source"
engine_name = "sqlserver"
server_name = "<server_name>"
port = 1433
username = "<username>"
password = "<password>"
ssl_mode = "require" # CRITICAL: enables SSL (not "none"), fixing the finding
}NativeIaC
# CloudFormation: Set SSL on a DMS endpoint
Resources:
<example_resource_name>:
Type: AWS::DMS::Endpoint
Properties:
EndpointIdentifier: <example_resource_name>
EndpointType: source
EngineName: sqlserver
ServerName: <server_name>
Port: 1433
Username: <username>
Password: <password>
SslMode: require # CRITICAL: enables SSL (not "none"), fixing the findingOther
1In the AWS DMS console, go to Endpoints
2Select the non-compliant endpoint and choose Modify
3Set SSL mode to Require (or Verify-ca/Verify-full if required by your engine and certificate is available)
4If Verify-ca/Verify-full is selected, choose the appropriate CA certificate
5Save changes, then Test connection to confirm
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.dms.dms_client import dms_client
class dms_endpoint_ssl_enabled(Check):
def execute(self):
findings = []
for endpoint in dms_client.endpoints.values():
report = Check_Report_AWS(metadata=self.metadata(), resource=endpoint)
if endpoint.ssl_mode == "none":
report.status = "FAIL"
report.status_extended = f"DMS Endpoint {endpoint.id} is not using SSL."
else:
report.status = "PASS"
report.status_extended = f"DMS Endpoint {endpoint.id} is using SSL with mode: {endpoint.ssl_mode}."
findings.append(report)
return findings