c2.4 Run customization privately in a VPC with no internet
Execute customization/training jobs inside a VPC with no internet access, reaching data only through S3 VPC endpoints, so training runs with private connectivity.
Implementation guidance
How to implement on AWS
Configure the Bedrock customization job (or SageMaker training job) with a VPC that has no internet access and an S3 VPC endpoint for the training/validation buckets. Use private subnets and security groups that restrict inbound and outbound traffic.
Keep training inside your network
A customization job downloads your training data and uploads metrics and the resulting model. By default that traffic can traverse the public AWS service path. Attaching a VPC configuration to the job pins all of that data movement to elastic network interfaces inside your VPC, so training data never leaves a network boundary you control. Combined with a VPC that has no internet route, the job can reach your S3 data only through a VPC endpoint — there is no path to the public internet to exfiltrate data over.
Give the job private subnets and a security group
Provide the customization job with a vpcConfig listing private subnets (two or more, in different AZs for redundancy) and a security group:
{
"vpcConfig": {
"subnetIds": ["subnet-0aaa1111", "subnet-0bbb2222"],
"securityGroupIds": ["sg-0ccc3333"]
}
}
Pass this as the --vpc-config parameter to create-model-customization-job. The subnets do not need a NAT gateway or internet access — all traffic exits through VPC endpoints.
Add an S3 endpoint so the job can reach its data
With no internet route, create an S3 gateway VPC endpoint in the VPC so the job can read training/validation data and write output privately. Lock it down with an endpoint policy that allows only the specific buckets involved:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::my-bedrock-training-data",
"arn:aws:s3:::my-bedrock-training-data/*",
"arn:aws:s3:::my-bedrock-custom-output",
"arn:aws:s3:::my-bedrock-custom-output/*"
]
}
]
}
Tie the network to the identity
Pair this with the customization service role (least-privilege) and the CMK control so the job is constrained on all three axes: who (role), what key (CMK), and which network path (VPC + S3 endpoint). A leaked role credential used from outside the VPC then has no route to the data.
Naming note: replace subnet, security-group, and bucket identifiers. Use private subnets with no internet gateway; verify the route table has no 0.0.0.0/0 route.
Acceptance criteria
Customization runs in a VPC with no internet gateway; data is reached via an S3 VPC endpoint; security groups restrict traffic.
Practical implementation
How this control is implemented in each reference architecture:
The customization job runs in a private, no-internet VPC in the Generative AI account and reaches its data only through an S3 VPC endpoint.
- Configure the Bedrock/SageMaker customization job with a VPC that has no internet gateway, using private subnets in the Generative AI account.
- Add an S3 VPC (gateway) endpoint so the job reaches the training buckets privately, and restrict inbound/outbound with security groups.
- Use a bucket policy condition (aws:SourceVpce) so the training data is only readable through that endpoint.
How to validate: The job runs in a VPC with no internet gateway; data is reached via the S3 VPC endpoint; security groups restrict traffic; off-endpoint bucket access is denied.
Avoid: Running training in a subnet with a NAT to the internet 'for package installs'. Pre-stage dependencies and keep training on a closed network to prevent exfiltration.
The customization job runs in a private VPC in the account with an S3 VPC endpoint and no internet path.
- Run the customization/training job in a private, no-internet VPC in the account.
- Reach the training buckets through an S3 VPC endpoint and restrict traffic with security groups.
- Bind bucket access to the endpoint with an aws:SourceVpce condition.
How to validate: Training runs with no internet gateway; data is reached via the S3 endpoint; off-endpoint access is denied.
Avoid: Training on a public subnet because it is simpler. Isolate the job network so training compute cannot reach or be reached from the internet.
Threats addressed
- Training jobs exposed to or exfiltrating over the public internet.
- Unintended network reach from training compute.
AWS services
Pricing
There is no extra Bedrock charge for running a job in a VPC. S3 gateway endpoints are free; if you also add interface endpoints (e.g. for KMS or CloudWatch), those bill per AZ-hour plus data processed. You still pay the normal customization job cost. See Restrict data access to your Amazon S3 data using a VPC.
Framework mappings
OWASP GenAI/LLM Top 10 (2026)
- LLM02 Sensitive Information Disclosure
NIST AI Risk Management Framework (AI 100-1)
- MANAGE.1 AI risks are prioritized, responded to and managed
AWS Security Hub — AI Security Best Practices
- SageMaker.1 Amazon SageMaker notebook instances should not have direct internet access
- SageMaker.2 SageMaker notebook instances should be launched in a custom VPC
- SageMaker.5 SageMaker models should have network isolation enabled
- SageMaker.16 SageMaker models should use private registry in VPC for primary containers
- SageMaker.19 SageMaker models should use private registry in VPC for multi-container inference pipelines
- SageMaker.11 SageMaker data quality job definitions should have network isolation enabled
- SageMaker.12 SageMaker model bias job definitions should have network isolation enabled
- SageMaker.14 SageMaker monitoring schedules should have network isolation enabled
- SageMaker.20 SageMaker model explainability job definitions should have network isolation enabled
- SageMaker.25 SageMaker model quality job definitions should have network isolation enabled
- SageMaker.9 SageMaker data quality job definitions should have inter-container traffic encryption enabled
- SageMaker.10 SageMaker model explainability job definitions should have inter-container traffic encryption enabled
- SageMaker.13 SageMaker model quality job definitions should have inter-container traffic encryption enabled
- SageMaker.15 SageMaker model bias job definitions should have inter-container traffic encryption enabled
- SageMaker.22 SageMaker monitoring schedules should have inter-container traffic encryption enabled
AWS Well-Architected Generative AI Lens (Security)
- GENSEC01-BP02 Implement private network communication between foundation models and applications
Learning resources
References
- AWS SRA for AI — Capability 2, Network security
AI Security Maturity Model