c1.7 Keep model access private with VPC endpoints
Reach Amazon Bedrock over private connectivity so inference traffic never traverses the public internet and only approved networks can call the API.
Implementation guidance
How to implement on AWS
Create interface VPC endpoints (AWS PrivateLink) for Amazon Bedrock and restrict access with endpoint policies, so only workloads in your VPC can invoke the model API. Combine with security groups that allow only necessary traffic.
Keep inference traffic off the public internet
By default, calling Amazon Bedrock goes to a public service endpoint. With AWS PrivateLink you create an interface VPC endpoint so your workloads reach Bedrock over private connectivity inside your VPC — no internet gateway, NAT, or public IP involved. Traffic stays on the AWS network, and you can require that only approved networks reach the model API.
Bedrock exposes separate endpoints for the control plane and the data plane; the runtime (invocation) service is com.amazonaws.<region>.bedrock-runtime. Create the interface endpoint for that service in the subnets your workloads run in, with a security group that only allows the app tier.
Lock the endpoint down with an endpoint policy
An endpoint policy is a resource-based policy on the VPC endpoint itself. Even if an identity has broad IAM permissions elsewhere, the endpoint policy caps what can pass through this endpoint — so a leaked credential used from outside your network cannot invoke the model. This example allows only invoke actions on approved models:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowInvokeApprovedModelsThroughEndpoint",
"Effect": "Allow",
"Principal": "*",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": [
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"
]
}
]
}
Complete the private path
- Turn off the public route: use a security group and network design so the app tier can only reach Bedrock through the endpoint.
- Pair this with the IAM control's
aws:SourceVpcecondition so invocation policies also require the approved endpoint — defense in depth from both the network and the identity side. - Enable private DNS on the endpoint so the standard Bedrock SDK/endpoint hostname resolves to the private interface automatically, with no code change.
Naming note: create the endpoint in every Region where you invoke Bedrock, and reference the matching com.amazonaws.<region>.bedrock-runtime service name.How it fits together
Acceptance criteria
Bedrock is invoked through a PrivateLink endpoint; endpoint policy restricts callers; no public path to the model API remains.
Practical implementation
How this control is implemented in each reference architecture:
A PrivateLink interface endpoint for Bedrock in the Generative AI account keeps inference traffic off the public internet, with an endpoint policy that admits only the app's role.
- Create an interface VPC endpoint (AWS PrivateLink) for Amazon Bedrock in the Generative AI account's VPC.
- Attach an endpoint policy that allows only the approved invoke role and model ARNs, and use security groups to permit only traffic from the application path.
- Bind the invoke IAM policy to the endpoint with an aws:SourceVpce condition so calls that do not traverse the private endpoint are denied.
How to validate: Bedrock is invoked through the PrivateLink endpoint; the endpoint policy restricts callers; an off-VPC call (no aws:SourceVpce match) is denied; no public route to the API remains.
Avoid: Reaching Bedrock over a NAT gateway to the public endpoint. Use PrivateLink so traffic stays on the AWS network and can be bound to your VPC with a condition key.
A PrivateLink endpoint in the account's VPC keeps model traffic private, and an aws:SourceVpce condition binds invocation to it.
- Create an interface VPC endpoint for Amazon Bedrock in the account's VPC and route the generative AI tier through it.
- Restrict the endpoint with an endpoint policy and security groups so only the model-invocation role and app subnets can use it.
- Add an aws:SourceVpce condition to the invoke policy so calls that bypass the private endpoint are denied.
How to validate: Bedrock is reached via the PrivateLink endpoint; a call outside the endpoint is denied by the condition; no public path remains.
Avoid: Leaving the workload on a public route to Bedrock because 'it is encrypted anyway'. Private connectivity plus a source-endpoint condition removes an entire exposure class.
Threats addressed
- Model API reachable from unintended networks.
- Inference traffic exposed on the public internet.
AWS services
Pricing
Interface endpoints are billed per endpoint per Availability Zone per hour, plus a per-GB data processing charge. There is no additional Bedrock charge for using PrivateLink; you pay the normal model invocation cost. See Use interface VPC endpoints (AWS PrivateLink) with Amazon Bedrock.
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 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 1, Network security enhancement
AI Security Maturity Model