Azure Container Apps Jobs/Sandboxes: broker-only egress, DNS isolation and private image guarantees

Gijs Beerens 0 Reputation points
2026-10-20T20:29:33.6266667+00:00

We are qualifying a customer-operated Azure product. An untrusted Linux native-code worker needs only one private HTTPS broker. Platform image retrieval and managed-service dependencies must remain functional, but the worker must not send payloads to arbitrary destinations, including via DNS. We currently use a dedicated Container Apps Job with separate identity/network boundaries and are assessing Sandboxes only as a possible alternative.1. For dedicated Container Apps Jobs, what supported mechanism separates required platform DNS/egress from untrusted container egress? Can the workload be limited to its private broker while the platform retains its documented dynamic registry/identity/AKS dependencies? Please identify the supported configuration/API and enforcement boundary; environment-wide DNS/firewall recommendations alone do not establish this separation.

  1. For Sandboxes with Full inspection and default Deny applied at creation, are denied hostname requests rejected before any upstream DNS resolution? Are UDP/TCP DNS, platform-provided resolvers, direct Azure DNS and proxy-side resolution covered or exempted? Does customer VNet DNS observe every relevant lookup, including fallback? Please provide the supported resolver/ordering contract and recommended receiver-observed verification.
  2. Can the Sandbox disk-image importer reach an ACR with public networking disabled and trusted-service bypass None? Which network/VNet/Private Link configuration governs import, separately from runtime VNet attachment? If importing from an authenticated publicly reachable registry instead, can its pull-only managed identity remain unavailable inside the sandbox?
  3. Does disk-image creation accept an OCI repository@sha256 digest, and what readback/attestation binds the resulting disk ID to the actually resolved source manifest/config and immutable converted root filesystem? Which supported controls preserve that identity through execution, snapshots and updates?

References checked: Microsoft Learn Container Apps DNS and Sandbox egress/overview; sandboxGroups/vnetConnections API 2026-07-01; published Python SDK0.1.0b4 and JS SDK1.0.0-beta.1. Client schemas do not establish service enforcement ordering or content attestation. We are asking for supported guarantees, not reporting a demonstrated vulnerability.

Azure Container Apps
Azure Container Apps

An Azure service that provides a general-purpose, serverless container platform.

0 comments No comments

1 answer

Sort by: Newest
  1. Hemant Bharadwaj 340 Reputation points Microsoft Employee
    2026-10-20T21:19:25.6433333+00:00

    The documented controls differ between Container Apps Jobs and Container Apps Sandboxes.

    1. Container Apps Jobs

    For a workload-profile Container Apps environment, the supported outbound-control mechanism is a user-defined route on the environment’s infrastructure subnet, normally routing traffic through Azure Firewall or another network virtual appliance. This operates at the environment/subnet boundary—not as a separate platform-egress versus per-job-egress boundary.

    The firewall must allow the documented platform dependencies, such as Microsoft Artifact Registry/AKS endpoints and, where applicable, ACR and managed-identity endpoints. Therefore, I am not aware of a documented Container Apps Jobs API that permits required platform traffic to bypass policy while independently restricting one job to only its private broker within the same environment.

    For this requirement, isolate the untrusted job in its own workload-profile environment and subnet, route outbound traffic through Azure Firewall, and allow only the documented platform dependencies plus the private broker. Validate the design using firewall, DNS and broker-side logs.

    2. Sandbox egress and DNS

    Sandboxes provide a per-sandbox egress-policy engine. The policy can be supplied in the create request. With default_action = Deny and Full inspection:

    • Rules are evaluated in order and the first matching rule wins.
    • The default action applies if no rule matches.
    • A denied request is blocked before leaving the sandbox.
    • Non-HTTP traffic is blocked in Full inspection mode.

    However, the public documentation does not define a resolver-ordering contract or guarantee that no upstream DNS lookup occurs before a hostname is denied. It also does not guarantee that customer VNet DNS observes every lookup or fallback path. Consequently, those stronger DNS assertions should not be treated as supported guarantees without written confirmation from Azure support or the product group.

    3. Private ACR image import

    The runtime sandbox egress policy does not, by itself, document the networking path used by the disk-image import service. I could not find a published guarantee that an importer can reach an ACR with public networking disabled and trusted-service bypass set to None, nor that a pull-only import identity is unavailable inside the running sandbox. This should be validated with the specific Sandbox region/API version and confirmed through Azure support before relying on it as a security boundary.

    4. Digest and attestation

    The published egress-policy documentation does not provide an attestation binding a disk ID to an OCI manifest/config digest and converted root filesystem. Even if the image-creation API accepts a digest reference, that alone is not equivalent to a documented, verifiable content-attestation chain through snapshots and updates.

    In short: the documented enforceable options are environment-level UDR/firewall controls for Container Apps Jobs and per-sandbox HTTP egress policies for Sandboxes. The DNS-ordering, private-import and image-attestation guarantees requested here are not established by the cited public documentation, so they require a support case/product-level confirmation.

    References:

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.