Check ID: dms_instance_no_public_access
Provider: AWS
Service: dms
Severity: CRITICAL
Categories: internet-exposed
Resource type: AwsDmsReplicationInstance

What this check verifies

AWS DMS replication instances are evaluated for public exposure. Exposure is identified when PubliclyAccessible is enabled and an attached security group allows inbound traffic from any address. Private or allowlisted instances are not considered exposed.

Risk

Publicly reachable replication instances threaten:
  • Confidentiality: migration data and credentials can be intercepted or exfiltrated.
  • Integrity: attackers may alter tasks or inject records.
  • Availability: abuse or DDoS can stall replication and delay cutovers.

Recommendation

Adopt a private-only design:
  • Disable PubliclyAccessible; place instances in private subnets.
  • Enforce least privilege security groups (no 0.0.0.0/0); allow only required sources/ports.
  • Provide access via VPN, peering, or Direct Connect.
  • Layer controls (ACLs, monitoring) and restrict IAM to necessary actions.

Remediation

# DMS instance not publicly accessible
resource "aws_dms_replication_instance" "<example_resource_name>" {
  replication_instance_id    = "<example_resource_id>"
  replication_instance_class = "dms.t3.micro"
  publicly_accessible        = false  # Critical: disables public access to prevent Internet exposure
}

References

Where this check fires

This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable by Check ID = dms_instance_no_public_access. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks