AI Security Maturity Model·AWS v1.0.0

Drag to explore · pinch to zoom

Enhanced Network SecurityDefense-in-depth layer: Infrastructure Capability 1 · Model inferenceUse case: AI that answers 👤 CustomerAWS Shared Responsibility Model: who implements and operates this control. Customer = you own it; AWS = AWS operates it and you inherit it; Shared = both have obligations.

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.

Foundational
Enhanced
Advanced
Effort: Medium Impact: Medium GenAI scopesFrom the AWS Generative AI Security Scoping Matrix.: 3 · Pre-trained models

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:SourceVpce condition 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

Your VPC · no internet route Private subnet AI application no public IP Interface VPC endpoint PrivateLink Amazon Bedrock bedrock-runtime private service access AWS private network Public internet avoided — no IGW / NAT in the path Endpoint policy + aws:SourceVpce restrict which principals may call the model through this path.
The application runs in a private subnet with no public IP and reaches Amazon Bedrock through an interface VPC endpoint (PrivateLink), so traffic stays on the AWS network. There is no internet gateway or NAT in the path; an endpoint policy plus aws:SourceVpce restrict who may call the model.

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.

  1. Create an interface VPC endpoint (AWS PrivateLink) for Amazon Bedrock in the Generative AI account's VPC.
    Generative AI account AWS PrivateLink Amazon VPC Amazon Bedrock
  2. 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.
    Generative AI account AWS PrivateLink IAM
  3. Bind the invoke IAM policy to the endpoint with an aws:SourceVpce condition so calls that do not traverse the private endpoint are denied.
    Generative AI account IAM

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.

Generative AI OU (multi-account) →

A PrivateLink endpoint in the account's VPC keeps model traffic private, and an aws:SourceVpce condition binds invocation to it.

  1. Create an interface VPC endpoint for Amazon Bedrock in the account's VPC and route the generative AI tier through it.
    Generative AI tier (IAM role) AWS PrivateLink Amazon VPC Amazon Bedrock
  2. Restrict the endpoint with an endpoint policy and security groups so only the model-invocation role and app subnets can use it.
    Generative AI tier (IAM role) AWS PrivateLink IAM
  3. Add an aws:SourceVpce condition to the invoke policy so calls that bypass the private endpoint are denied.
    Generative AI tier (IAM role) IAM

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.

Single account (entry point) →

Threats addressed

  • Model API reachable from unintended networks.
  • Inference traffic exposed on the public internet.

AWS services

AWS PrivateLink Amazon VPC

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