What you'll learn: how a managed model service is built from six parts you configure (caller identity, private path, keys, logs, region, capacity), what Amazon Bedrock, Azure OpenAI in Microsoft Foundry Models and Google's Gemini Enterprise Agent Platform each document for them as of 2026-10-23, and what does not port when you move between them.
At a glance
Figure 1. The anatomy of a managed model service on any cloud
How to read this: solid arrows are the request path, dashed arrows are logs, the red dashed arrow is the route the design closes, and the right-hand box is the region boundary that keys and logs must stay inside.
- A managed model service moves the model host to the provider. Identity, network path, keys, logs and region stay yours to configure.
- Use a private endpoint plus an egress rule, so the public route is closed and not just unused.
- Use workload identity (short-lived tokens issued to the running workload) instead of a stored key.
- Customer-managed keys protect stored data, not a prompt on its way to the model.
- Audit logs of who changed the service are on by default. Who called is on by default only on AWS. Logs of what was said are off by default.
- Cross-region routing has three documented levels per cloud. Choose the narrowest one the rule allows.
The real-world problem
Composite scenario, not a real company. A regional clinic network adds a visit-summary drafter that calls a managed model. The pilot works from a laptop with a long-lived key and a public address. Security asks four questions: which network path, which identity, which key and which log, and nobody can answer them for production.
After this page you will be able to
- Name the six configuration surfaces of a managed model service and the cloud setting that controls each.
- Choose between a private endpoint, a network rule and a service perimeter for a given exposure.
- Replace a stored key with workload identity and state how the exposure window shrinks.
- Explain what a customer-managed key does and does not protect, from each provider's page.
- Pin inference to a region or a geography, and name the evidence that proves it.
Prerequisites and cross-links
- Security and threat modeling: trust boundaries, scoped credentials and the egress allow-list.
- Governance and responsible AI: the audit trail, retention and residency as regulation.
- Models, routing and inference: the model gateway and adapters. Background: AI gateways in the enterprise.
- Reliability and scaling: who owns retries, quotas and fallbacks.
- New terms: private endpoint, workload identity, customer-managed key, envelope encryption, control plane, data plane, data residency.
Everything provider-specific on this page is "as of 2026-10-23" and comes from the provider's own documentation pages, linked where used. Google's pages are titled "Gemini Enterprise Agent Platform" (older /vertex-ai/ links redirect), so this page uses that title. Azure's Entra ID, encryption-at-rest and monitoring pages are the "(classic)" portal versions. No prices appear: check the provider pages.
Core concepts
Managed model service versus self-hosted
| Layer | Managed model service | Self-hosted model |
|---|---|---|
| Model weights and inference software | The provider deploys and runs them | You deploy and patch them |
| Network path to the endpoint | Shared: the provider offers private options, you choose them | You build it |
| Identity and permissions | You decide who may call | You decide who may call |
| What data you send, and classification | You | You |
| Log content (prompts, answers) | You choose whether to record it | You choose whether to record it |
| Capacity and quotas | The provider sets and enforces them | You buy and schedule GPUs |
How to read this: moving to a managed service moves the model rows to the provider and leaves the identity, data and log rows with you.
Each provider states the split in its own words, as of 2026-10-23.
- AWS: "Your responsibility is determined by the AWS service that you use" (security). Model providers have no access to the deployment accounts, so none to Bedrock logs or customer prompts (data protection).
- Azure: "For all cloud deployment types, you own your data and identities" (shared responsibility; its AI page names three layers: AI platform, AI application, AI usage).
- Google: "customers always remain responsible for their access policies and data" (shared fate).
Check yourself: which row of the table do all three providers leave with you, whatever the service model?
Identity and permissions, and the data you choose to send. Each quote above names data, identities or access policies as the customer's side.
Control plane and data plane
Figure 2. Two paths into the same service
How to read this: administrators change the service through one path and callers use it through another, so the permissions, tokens and logs of the two paths are separate things to configure.
Each provider documents the split, and it shows up in three places.
| Where the split shows | AWS | Azure | |
|---|---|---|---|
| Separate endpoints or tokens | bedrock (control plane) and bedrock-runtime (endpoints) |
A different token audience for management and for inference (doc); the inference roles "don't grant control plane access" | Admin Activity versus Data Access audit logs (doc) |
| Log category | CloudTrail records InvokeModel and Converse as management events (doc) |
Resource logs need a diagnostic setting (doc) | Data Access logs are off by default |
How to read this: each row is a way the plane split appears in practice, as of 2026-10-23.
AWS writes inference calls into the management-event category. Do not assume a category name tells you what a log contains.
Private networking
Figure 3. A private endpoint, private DNS and a closed public route
How to read this: the workload resolves the service name to an address inside your network and connects to it, and the red path is what the network rule and the missing internet route must close.
| Job | AWS | Azure | |
|---|---|---|---|
| Private path to the endpoint | An interface VPC endpoint with AWS PrivateLink (doc) | A private endpoint over Azure Private Link (doc) | Private Service Connect endpoints for Google APIs, the private method the overview's table lists for Gemini and Claude (doc) |
| Default exposure | The default endpoint policy "allows full access to Amazon Bedrock through the interface endpoint" | "By default, Foundry Tools resources accept connections from clients on any network" | Public names resolve to publicly routable addresses |
| Limit who may use it | An endpoint policy (principals, actions, resources) | Firewall and virtual network rules, "Selected Networks and Private Endpoints" | A service perimeter with VPC Service Controls (doc) |
How to read this: each row is one job and the product name each provider's page uses, as of 2026-10-23. The mappings are close, not identical.
A path and a perimeter are different jobs. Google says VPC Service Controls "can help you mitigate the risk of data exfiltration" with a service perimeter, and lists requests for online inferences and Gemini models among the artifacts that cannot leave it. It also says Private Service Connect for Google APIs and Private Google Access "don't eliminate public internet accessibility for Agent Platform APIs".
Check yourself: a private endpoint exists, but the app subnet still has an internet route and the service still accepts public connections. Is the data private?
No. The private path exists, but nothing forces the app to use it. Disable or deny the public path and remove the internet route, so the only way to the service is the private one.
Workload identity instead of long-lived keys
| AWS | Azure | ||
|---|---|---|---|
| Preferred for a workload | IAM roles with temporary credentials (IAM best practices) | A managed identity with a role on the resource (doc) | A service account attached to the resource, or Workload Identity Federation (doc) |
| What the docs say about stored keys | Bedrock long-term API keys are "Recommended only for exploration"; short-term keys last "up to 12 hours" (API keys) | A service principal needs "a client secret or certificate that you rotate" | "Service account keys are a security risk if not managed correctly" (service accounts) |
How to read this: the first row is the credential the docs prefer for running code, the second is what each says about the stored alternative, as of 2026-10-23.
Customer-managed keys
| What the page lists as protected by a customer-managed key | |
|---|---|
| AWS (Data encryption) | Model customization jobs and their custom models, agents, knowledge-base data-source ingestion jobs, vector stores, model evaluation jobs, and S3 and Secrets Manager data used with them |
| Azure (encryption at rest) | Data persisted by the service, "specifically training data and fine-tuned models" |
| Google (CMEK) | A list of resources such as datasets, models, endpoints, batch prediction jobs and indexes; not durable caching (zero data retention) |
How to read this: the right column is what each page names, as of 2026-10-23. None of the three lists a live prompt in transit as something the key encrypts.
A key you hold governs stored artifacts, and revoking it stops access to them. A prompt in transit is protected by transport encryption and the private path.
Logging and audit
| Layer | What it answers | Default, as of 2026-10-23 |
|---|---|---|
| Management audit log | Who changed the service, from where | On: AWS CloudTrail is enabled when the account is created; Azure's activity log is collected automatically; Google's Admin Activity audit logs cannot be disabled |
| Call metadata | Which principal called which operation, when | AWS: recorded by CloudTrail. Google: Data Access logs are off until enabled, and its audit page lists predict and rawPredict, not generateContent. Azure: resource logs need a diagnostic setting |
| Content log | What the prompt and the answer said | Off: AWS invocation logging "is disabled by default"; Google request-response logging (Preview) is disabled by default; Azure's monitoring reference lists a RequestResponse resource-log category without describing its contents |
How to read this: each row is a deeper layer of logging, and the content layer is opt-in on the pages read.
Check yourself: an auditor asks who called the model last Tuesday, and content logging was never enabled. Can you answer?
Usually yes, from the management or call-metadata layer, if it was on. You cannot answer what was said.
Regions, data residency and routing of inference
Figure 4. Choose the narrowest routing the rule allows
How to read this: start at the top, answer yes or no, and stop at the first box. The last step is the same for all three.
| Level | AWS | Azure | |
|---|---|---|---|
| Narrowest documented | In-Region: "Your requests never leave the AWS Region you specify"; cross-Region routing needs an inference profile | "Standard": processed in the customer-specified geography, and "might be processed between regions within that geography for operational purposes" | Locational endpoint: ML processing stays "within the broader multi-regional or country jurisdiction" |
| A geography | Geographic cross-Region profile (such as US, EU, APAC): requests "stay within that geography" | Data Zone deployments (US, EU or APAC), processed within the data zone | Multi-region endpoints: "ML processing stays within that specific geographical region" |
| Anywhere | Global cross-Region profile: "routed worldwide" | Global deployment types: any Azure region | The global endpoint: "don't provide any data residency guarantees" |
How to read this: each row is a routing level, and each cell quotes or restates the provider page for it, as of 2026-10-23. Sources: AWS and cross-Region, Azure, Google.
Only AWS documents a level that is one Region: Azure's and Google's narrowest levels are a geography and a jurisdiction. Only AWS's pages read name an audit field for the processing region. Two documented details change the design:
- AWS: input prompts and output results "might move outside of your source Region" under geographic profiles, and CloudTrail logs the request in the source Region with the processing Region in
additionalEventData.inferenceRegion. - Azure: for Global and Data Zone deployments, data stored at rest, "including the abuse monitoring data store", stays in the customer-designated geography. Only the location of processing is affected (data privacy).
A policy check follows. AWS's IAM example for a US geographic profile allows one inference profile and the foundation model in the source Region and in each destination Region. With the three destination Regions in that example, that is 1 profile + 3 models = 4 resources to allow.