Skip to main content
compliance · aws

SageMaker notebooks running outside any customer VPC

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

No subnet on a SageMaker notebook means the instance runs on a SageMaker-managed network where none of your security groups, route tables, or VPC endpoints apply. ZopNight flags in-service notebooks whose subnetId is confirmed empty at discovery; attachment happens only at creation, so remediation is a rebuild into 1 chosen subnet.

Signal and threshold

How ZopNight evaluates SageMaker notebooks running outside any customer VPC.
Field Value
Rule IDsRC-1619
Categorycompliance
Severitymedium
Metricnone — pure configuration read
Sourcesagemaker_compliance.go

A workload your network model does not contain

Every diagram of your VPC (the security groups, the inspected egress, the private S3 access through endpoints) describes traffic from resources inside it. A notebook created without a subnet is not in that diagram. Its traffic originates from a SageMaker-managed network, so the controls your organisation reasons with simply do not apply to one of the most data-heavy interactive workloads you run. That mismatch, not any specific packet, is the finding.

How the condition is proven

The discoverer records subnetId from the notebook description only when the describe call succeeds; a present-but-empty value is the API’s own statement that no VPC attachment exists, and that is the only state that fires. Failed describes leave the field absent and the rule silent. The status gate matters too: only in-service notebooks are flagged, because a stopped or failed instance is the deletion-review rule’s territory.

Enumerate the unattached fleet

Terminal window
aws sagemaker list-notebook-instances --query 'NotebookInstances[].NotebookInstanceName' --output text \
| xargs -n1 -I{} aws sagemaker describe-notebook-instance --notebook-instance-name {} \
--query '[NotebookInstanceName,SubnetId,DirectInternetAccess]' --output text

Rows with an empty subnet column are this finding; the third column tells you whether the sibling internet-access finding fires alongside.

Rebuilding into the VPC properly

VPC placement is a creation-time property, so the remediation is a replacement instance in a private subnet with a purpose-built security group. Plan the notebook’s dependencies before the move: S3 access flows through a gateway endpoint, the SageMaker API and Runtime need interface endpoints (or NAT), and package installs need either NAT egress or an internal mirror. A notebook moved into a VPC without those paths “breaks” on day one and generates pressure to move it back out. That is the failure mode that keeps this finding alive in fleets.

Severity in context

Rated medium rather than high: the managed network is not an open door, and the exposure is governance rather than direct reachability. Combined with direct internet access enabled, though, the pair describes a data-rich instance with ungoverned egress. Resolve them in the same rebuild, and encode VPC attachment in the template that creates notebooks so the class dies at the source.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·