Research & Analysis · Cloud security · 18 min read

Do Private Endpoints Prevent Cloud Data Exfiltration?

Sources checked against the cited passages; awaiting my final read before this is indexed.

Private endpoints can restrict how a workload reaches a cloud service, and some bind that connection to a specific resource. They do not, by themselves, establish that every permitted transfer has an approved recipient, appropriate data or legitimate purpose. To prevent unauthorized disclosure, you must also constrain the identities, operations, destination resources and alternate service paths that can move the data. Then verify those constraints at the actual transfer boundary.

I would reject “the workload has no internet route” as a complete answer to an exfiltration question. A transfer can remain on a provider's infrastructure while crossing into another organization's account. Conversely, an approved business transfer may legitimately leave the organization's network. The decision is which information may reach which recipient under which conditions, not whether the route looks private on an architecture diagram.

This paper examines that decision through NIST guidance, original security-design principles and current provider documentation. It develops a proposed recipient-and-path review, not a tested universal cloud-control pattern. The worked analytics design is fictional. No cloud account was accessed, no transfer was executed and no product is assigned an empirical protection score. The purpose is to distinguish useful connectivity controls from the wider assurance claim they are often asked to carry.

Define the disclosure boundary before selecting an endpoint

Start with the protected information and the consequence you intend to prevent. “Restrict outbound traffic” is a network objective. “Prevent row-level customer records from reaching resources outside the approved processing environment” is an information-flow objective. The second statement requires a definition of the approved environment, the data transformations that may change the rule and the identities able to initiate or delegate a transfer.

NIST SP 800-53 distinguishes information-flow control from ordinary access control: AC-4 concerns where information may travel within and between systems, rather than only who may access it (Joint Task Force, 2020, AC-4). A workload can therefore have a legitimate read permission without having unrestricted authority to transmit what it reads. The architecture needs to represent that distinction at a point capable of enforcing it.

I would specify a recipient contract for each important flow: source dataset, initiating identity, requested operation, receiving resource, owning account or tenant, permitted data form, purpose and accountable owner. Include the expected route and evidence source, but don't let those substitute for the recipient. A destination hostname identifying a cloud service may describe a large shared platform, not the particular business recipient you intended to authorize.

The appropriate implementation depends on the service model. NIST SP 800-210 explains that IaaS, PaaS and SaaS expose different access-control concerns and components (Hu et al., 2020). A customer may control a virtual-machine route directly while relying on a managed application's permissions and export configuration elsewhere. Apply the same information-flow objective across those environments, but don't pretend the customer can inspect or configure an identical network boundary in all three.

Separate the questions that private connectivity can answer

Three questions should appear separately in the design review. Can this workload reach the service? Can this identity perform the operation? Is this recipient permitted to receive this data? A private endpoint can materially improve the first answer and, depending on the mechanism, help constrain the target resource. It does not necessarily evaluate the third question's business meaning or the data being released.

Amazon S3 gateway endpoints provide a concrete example. AWS documents that they allow S3 access from a VPC without an internet gateway or NAT device (Amazon Web Services [AWS], n.d.-c). That is a valuable path property. It does not imply that the endpoint is exclusively a route to one approved bucket. Review the endpoint policy and the relevant identity and resource permissions before treating it as a recipient boundary.

AWS separately states that endpoint policies do not replace identity-based or resource-based policies and that the default endpoint policy grants full access through the endpoint (AWS, n.d.-b). Full endpoint access is not the same as anonymous access to every resource: other authorization requirements still apply. The relevant risk is that a broadly authorized identity and a permissive receiving resource may combine with the open endpoint policy to allow a transfer you never intended.

Azure illustrates a different scope. Microsoft's PaaS design guidance distinguishes service endpoints from private endpoints mapped to specific resource instances (Microsoft, 2026a). That resource binding is useful, but the conclusion must remain local to the path: this endpoint reaches this resource. The workload may have other endpoints, a managed export operation, a different execution environment or credentials usable somewhere else. Inspect those possibilities before extending the endpoint's property to the whole application.

There is also a separate inbound-exposure question. Microsoft's private-endpoint overview says that creating a private endpoint does not necessarily restrict public network access to the associated service (Microsoft, 2026b). Confirm the service's public-access configuration independently. A private path that works does not establish that the public path is disabled, and closing public access does not establish that every authorized private recipient is appropriate.

Bind permission to the destination that matters

A service allowlist, an organization boundary and an exact resource restriction solve different problems. Allowing an object-storage service may include many unrelated owners. Allowing every resource in your organization can still permit disclosure to an internally inappropriate project. Restricting one resource may be necessary for a sensitive pipeline but insufficient if the receiving application can forward its contents. Choose the scope from the information rule, not from whichever policy is easiest to express.

AWS provides condition keys that distinguish these contexts. aws:ResourceAccount concerns the account owning the requested resource; aws:ResourceOrgID concerns its organization; network-source keys concern the request path. Their availability varies by action and request context, with documented exceptions (AWS, n.d.-a). Those are examples of policy inputs, not interchangeable labels for trust. An account-owner condition cannot by itself express that only aggregate data may be sent to that account.

I would ask the policy author to demonstrate what happens when a required attribute is missing. Is the operation denied, handled by a narrower exception or accidentally allowed? What happens when a service calls another service on the workload's behalf? AWS documents that some network-specific context is redacted in service-to-service calls (AWS, n.d.-a). Copying a network condition into every policy can therefore break legitimate operations or encourage an overbroad exemption that defeats the intended restriction.

This is why I would review the effective policy combination rather than approve one reassuring policy document. Identify the identity grant, resource permission, endpoint boundary and any organizational restrictions that apply to the exact action. Provider evaluation rules are not identical across services or clouds. The acceptance artifact should state the evaluated principal and resource, the relevant restrictions and the observed result, rather than claim that one generic JSON pattern is universally safe.

Ownership itself can change. A new vendor account, a resource replacement, an organizational restructuring or an additional sharing relationship can make yesterday's approved destination inappropriate today. Tie approval to current resource identity and ownership evidence, and define the event that requires re-review. Avoid treating an old allowlist entry as permanent authorization for every future use of a familiar name.

State which compromise the boundary is meant to withstand

A workload with a compromised application process is a different test case from an administrator who can rewrite the controls. A third case is a credential used from outside the intended workload environment. I would state which of these the design addresses. Otherwise, the team can demonstrate a narrow route restriction while leadership reasonably interprets the result as protection against a broader form of unauthorized access.

For the external-credential case, review whether the protected resource enforces the required origin or context independently of the workload's outbound configuration. A route table on the legitimate workload does not govern a request originating elsewhere. The relevant evidence belongs at the resource and identity boundary. Use a separate authorized test environment and synthetic credentials to validate the decision; do not infer it from a successful test performed only inside the approved network.

For the compromised-process case, assume the process can exercise the authority legitimately available to it. Ask whether it can choose an arbitrary recipient, supply raw content to an approved exporter or delegate work to a more privileged service. Narrow destination permissions can reduce that authority, but they do not establish the integrity of every output. The release component's trust assumptions therefore belong beside the network assumptions in the review.

For the administrative case, identify the role capable of changing the boundary and the independent control over that role. A design may reasonably exclude a fully authorized provider administrator from its technical prevention claim while retaining governance and detection measures. The important point is to say so. An explicit threat-model limit is useful engineering information; leaving the assumed administrator outside the diagram makes the assurance claim difficult to interpret.

Follow the execution path when a managed service moves the data

An application can request a transfer without carrying the resulting bytes through its own network interface. A managed service may perform a copy, export, replication or delivery under a service identity and its own control plane. In a design review, I would draw the request path and the data path separately. Then identify which policy evaluates the source, the receiving resource and the service acting between them.

The distinction is visible in Google Cloud's terminology. Its VPC Service Controls documentation defines ingress and egress in relation to requests and resources, not simply the direction in which data bytes move (Google Cloud, n.d.-a). A client outside a perimeter reading a protected resource is an ingress request even though information would return outward. A copy involving resources on both sides can require egress treatment regardless of where the initiating client sits.

Google describes VPC Service Controls as a defense separate from IAM, intended to constrain access across a service perimeter for supported services (Google Cloud, n.d.-b). It is therefore useful to ask two questions: does the identity have the requested permission, and does the perimeter permit this exchange? Neither answer should be inferred from the other. Likewise, a successful private network connection does not establish either authorization decision.

Coverage must be checked at the service and interface actually used. Google's supported-products documentation lists integration status and service-specific limitations (Google Cloud, n.d.-c). The existence of a perimeter around a project is not evidence that every product, feature or method in that project is covered identically. Record the relevant limitation in the flow review and decide whether another control, a different workflow or a narrower assurance statement is necessary.

This is a cross-cloud reasoning method, not a claim that AWS endpoint policies, Azure private endpoints and Google service perimeters are equivalent products. They act at different boundaries with different conditions. Compare them against a common recipient requirement, then verify the selected provider's implementation. A feature-name comparison can obscure the very control gap the architecture is supposed to expose.

Review secondary outputs as recipients in their own right

Primary business exports are only part of the inventory. I would include telemetry, error reports, support bundles, temporary staging objects, backups, notebooks and third-party analysis calls. Each can receive information derived from the protected dataset. The review should ask what content actually leaves, who owns the receiver and whether the output is subject to the same restriction or a justified transformation.

An approved monitoring service is not automatically an approved destination for raw customer records. A debugging change that serializes an entire request body can alter the information flow without changing the configured hostname. In the proposed review, that change requires a content and purpose decision even if every packet follows the approved route. Destination restriction and content minimization are complementary because neither fully substitutes for the other.

Google's overview explicitly says VPC Service Controls is not designed to enforce comprehensive controls on metadata movement (Google Cloud, n.d.-b). That limitation matters when sensitive content is placed in names, descriptions or other fields treated as metadata. I would prohibit using operational metadata as an informal payload channel and inspect what the chosen services expose. This is a design concern to validate, not an assertion that every metadata field in every product is uncontrolled.

Encryption changes the confidentiality analysis but does not make the transfer disappear. A recipient receiving encrypted backup objects is still a destination that needs approval. Identify who controls decryption and recovery, which operations the receiver can perform and what happens if those authorities change. Conversely, an organization may deliberately approve a restricted encrypted-copy workflow. The review should preserve that distinction rather than equate every external copy with the same consequence.

An aggregate or redacted output also needs an independently defined release rule. A label saying “summary” does not demonstrate that the transformation removed the restricted information. The classification-enforcement paper addresses how handling categories become action rules. Here the narrower issue is whether the export mechanism binds the verified output to its approved recipient instead of accepting arbitrary data under an approved destination name.

Use a path review rather than counting security layers

I would model each plausible transfer as a path connecting the protected source to a recipient. A path may contain a workload, a service API, a staging resource and a delivery integration. For each prohibited path, identify the specific enforceable restriction that should stop it. For each required path, identify the evidence that the approved operation still works. This is a proposed architecture-review technique, not a formal proof that the graph contains every possible channel.

Saltzer and Schroeder's complete-mediation principle calls for checking authority for every access, including the implications of cached decisions and changing authority (Saltzer & Schroeder, 1975). Applied here, the question is whether all relevant transfer mechanisms encounter an appropriate check. Three controls on the normal application route cannot compensate for an unreviewed managed export that bypasses all three. More layers are useful only when their coverage and failure assumptions are understood.

NIST's cloud-native zero trust guidance similarly calls for application and service identity policies alongside underlying network parameters (Chandramouli & Butcher, 2023). I would use that distinction to identify the actor at each step. The identity that submits an export job may differ from the identity that reads the source or writes the output. A review that records only the original human requester can miss the permission actually controlling the transfer.

The following questions make the path review concrete. They ask for a control and evidence, not just a product name.

BoundaryQuestion to resolveEvidence that supports the answer
Source accessWho or what may obtain this dataset?Effective read permissions and tested identity mapping
Export operationWho may request or execute a transfer?Application/job authorization and service identity scope
RecipientWhich exact resource and owner may receive it?Destination restrictions and current ownership mapping
Data formWhich fields or transformation may be released?Validated export contract and output acceptance criteria
TransportWhich routes and endpoints may carry the operation?Actual resolution/routing and alternate-path review
Boundary changesWho can widen these permissions or create an exit?Effective administrative rights and change evidence

A failed control should also be traced through the graph. If the export broker is unavailable, does the application stop, queue work or switch to a direct upload? If a destination restriction cannot be evaluated, is there an explicit failure behavior? Those questions turn availability design into part of the disclosure analysis. An undocumented convenience fallback can create a new recipient path precisely when operators are under pressure.

Work through a fictional analytics export

Consider a fictional application that reads row-level records inside a managed processing environment. The approved workflow produces a reviewed aggregate and writes it to one reporting resource owned by an external analytics supplier. Raw rows must remain inside the approved processing environment. A separate backup workflow may write encrypted copies to a designated recovery account. These are three distinct recipient and data-form decisions, even if all use the same cloud storage service.

Assume the application reaches storage through private connectivity and has no general internet route. That fact narrows one class of path, but it does not decide whether the role can write raw rows to the supplier's resource, use another internal bucket as staging or invoke a managed export with a different destination. The proposed design gives the aggregate-release component a narrowly scoped output capability and governs backup authority separately.

I would review the following cases with harmless marker data and test destinations controlled by the organization. The table specifies required behavior; it reports no executed results.

Variation of the fictional workflowRequired decisionWhat a contrary result would reveal
Reviewed aggregate to the approved supplier resourceAllow through the release workflowDenial indicates the legitimate route or policy is incomplete
Raw rows to that same approved resourceDeny or prevent at the release boundaryRecipient approval is being mistaken for unrestricted content approval
Aggregate to another resource in the same supplier accountDeny unless separately authorizedAccount-level scope is broader than the intended recipient
Raw rows to an unapproved resource in the organization's own accountDeny under the stated data ruleOrganizational ownership alone is being treated as sufficient
Managed export job directed to an unapproved test resourceDeny at the applicable service/resource boundaryThe review covered the workload route but missed delegated transfer
Approved encrypted backup to the designated recovery resourceAllow under its separate contractControls cannot distinguish required recovery from unrelated export
Protected marker inserted into a diagnostic payloadExclude, redact or block under the logging contractTelemetry became an unreviewed content exit

The approved-output component must not be allowed to accept an arbitrary caller-supplied file merely because its destination is fixed. Bind the release to the actual output of the validated transformation, with enough identity and version evidence to detect substitution. That is an application-design requirement in this example. A network endpoint cannot establish that a file contains only the approved aggregate.

Nor should the backup exception become a general-purpose transfer capability. Its service identity, source scope, destination and permitted operations need their own constraints. The workload-identity paper addresses responsibility for issuance and retirement. Here the critical dependency is that someone cannot reuse the backup actor's broader authority to bypass the reporting workflow's narrower content rule.

Verify the recipient and result, not just the connection

Before a negative test is informative, establish that the synthetic source and test destination are valid and that the intended operation can work under an authorized configuration. Then vary one decision input at a time: recipient resource, owning account, operation, executing identity or path. If every test fails because the destination is unavailable, the exercise has not demonstrated selective enforcement of the data rule.

Observe both sides where the service permits it. Correlate the initiating request, evaluated identity, requested destination, policy result and receiving-resource state using non-sensitive identifiers. A successful job-submission response may mean only that processing was accepted; a denied connection may precede a retry through another route. Verify the relevant completion state and whether the harmless marker actually reached the receiver. Do not equate packet counts with an intelligible record of authorization.

Logging must be configured for the operation being tested. AWS CloudTrail documentation says trails and event data stores do not log data events by default and identifies object-level operations such as S3 reads and writes as data events (AWS, n.d.-d). A collection of administrative events therefore need not contain the transfer evidence you expect. Confirm event selection, resource coverage and access to the resulting records before relying on an absence of events.

The evidence system should not recreate the disclosure problem. Prefer synthetic markers and metadata sufficient to identify the tested action; restrict any necessary payload evidence. Record what the logs cannot show, including inaccessible provider processing or unsupported operations. If a receiving application performs another transfer outside the observed boundary, state that limitation instead of extending the first transfer's passing result to the entire downstream chain.

Repeat the relevant tests after changes to identities, endpoint policies, destination ownership, managed integrations or data transformations. Microsoft also documents the DNS integration required for private endpoints (Microsoft, 2026a). Test name resolution and the resulting path from the actual execution environments, including workers and administration paths, rather than assuming that a developer's laptop represents them. A changed resolver or fallback configuration should trigger a path review, not just a connectivity check.

Protect the authority that can redraw the boundary

A control can be effective against an application role while remaining alterable by a deployment role available to the same operator. I would identify who can change destination permissions, endpoint policy, routing, export-job configuration, identity grants and the logging that would reveal those changes. This is not a claim that every application role can make those changes. It is a question the effective administrative-rights review must answer.

Where feasible, separate routine deployment from approval of a wider data recipient. A deployment can change application code without automatically gaining permission to send protected records to a new account. The exception process should identify the dataset, recipient, operation, duration, owner and compensating evidence. A broad temporary permission that persists after the original need ends should appear as an unresolved boundary change, not normal operating context.

Test a proposed configuration change as well as the current data operation. An application role that is denied a transfer should not be able to grant itself the missing authority through another permitted control-plane action. Use harmless, authorized tests in an appropriate environment and retain the expected decision. A current denial is valuable evidence; a clear account of who can reverse it is what makes that evidence usable for a continuing assurance claim.

There are costs and limits. Exact-resource restrictions require maintenance; managed-service exceptions can be complex; strong failure behavior may interrupt legitimate processing. I would begin with the highest-consequence flows and expand from documented experience. The choice is not a universal maximum-restriction policy. It is a defensible combination of permitted business movement, prohibited recipients and explicit residual paths that the owner understands.

The thirteen cited works supply principles, control objectives and selected provider behavior. They do not validate this entire review method or prove that a finite test finds every disclosure channel. Some controls share an administrative dependency; some services expose limited evidence; permitted recipients may mishandle information after receipt. Keep those limits in the conclusion. Private connectivity is a useful component whose value is strongest when its precise scope is known.

If your cloud design equates private endpoints with exfiltration prevention, request a cloud data-egress architecture assessment. I would help trace the critical recipients and managed transfers, identify the actual enforcement points and build a controlled test of both approved and prohibited movement. The outcome to work toward is a boundary you can explain and verify—not a private route carrying an undefined promise.

References