Repository navigation
Allowlist nvcr.io for docker update jobs - #302
Merged
v-robaiken merged 1 commit intoOct 12, 2026
Merged
Conversation
rajathagasthya
marked this pull request as ready for review
October 7, 2026 21:06
Hosted Dependabot docker version updates for images on nvcr.io (the NVIDIA NGC container registry) fail under proxy-egress-enforce: the allowlist 403s nvcr.io before the request reaches the registry, and the updater reports it as `private_source_authentication_failure`. Public NGC images need no sign-in, so there is no `registries:` credential a user could configure for them. Add nvcr.io and layers.nvcr.io as exact hosts on the `docker` anchor, so docker_compose and devcontainers inherit them: * /v2/ advertises `Bearer realm="https://nvcr.io/proxy_auth"`. The token service is on the same host and issues a guest token with pull access to public repositories only. * Blob requests 307-redirect to layers.nvcr.io, NVIDIA's CloudFront distribution. It serves only URLs signed by nvcr.io and returns 403 for unsigned requests. Exact only: tenancy is path-based (nvcr.io/<org>/<team>/<image>), and private org images still need an NGC API key under `registries:`. Signed-off-by: Rajath Agasthya <ragasthya@nvidia.com>
rajathagasthya
force-pushed
the
rajathagasthya/allowlist-nvcr-io
branch
from
October 9, 2026 15:33
e1c9b9e to
dd5f4b0
Compare
v-robaiken
approved these changes
Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What are you trying to accomplish?
Hosted Dependabot
dockerversion updates for images onnvcr.io(NVIDIA's NGC container registry) fail sinceproxy-egress-enforcewas enabled. The proxy returns 403 before the request reaches the registry, and the updater reports it asprivate_source_authentication_failure:Public NGC images need no sign-in, so there is no
registries:credential a user could add for them. The NGC Catalog User Guide (section 2.4, "Accessing NGC Software") states: "Pulling public software from the NGC Catalog does not require sign-in."This adds
nvcr.ioandlayers.nvcr.ioas exact hosts to thedocker: &docker_registriesanchor, sodocker_composeanddevcontainersinherit them.Anything you want to highlight for special attention from reviewers?
The request chain (checked anonymously):
/v2/answers401withwww-authenticate: Bearer realm="https://nvcr.io/proxy_auth",service="registry". The token service is on the same host.proxy_authreturns a guest token without credentials (iss: authn.nvidia.com,sub: sf:guestclient). The token grantspullonly, even whenpush,pullis requested. For a repository that is not public, the token'saccesslist is empty.tags/listandmanifests/<tag>return200with that token.blobs/<digest>returns307tolayers.nvcr.iowith a CloudFront signed URL (Expires,Key-Pair-Id,Signature).layers.nvcr.ioreturns403for unsigned requests.Why
layers.nvcr.iois included. The observe-mode logs only shownvcr.io(proxy_authandtags/list), because the docker updater reads tags and manifests. I added the blob host to follow the rule inTestEgressAllowlist_PublicVendorOCIRegistriesAllowed(registry, token service, and blob redirect target), the same as the Elastic and Chainguard entries. It only serves URLs thatnvcr.iosigns, so it is not a general download host. I can remove it if you prefer to add only observed hosts.Why the exact form is safe. Tenancy is path-based (
nvcr.io/<org>/<team>/<image>). Private NGC org images on the same host still need an NGC API key, which users configure underregistries:. This is the same model as Docker Hub,ghcr.io, and.quay.io, which are already on the list.Ownership evidence. TLS certificate for both hosts:
subject=CN=nvcr.io, SANnvcr.io, *.nvcr.io,issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M04.nvcr.ioresolves to public AWS addresses, andlayers.nvcr.ioresolves to CloudFront addresses. The token issuer isauthn.nvidia.com. The NGC Catalog User Guide (section 2.11.2.1) namesnvcr.ioas the NGC container registry.How will you know you've accomplished your goal?
Reproduction: a real job in
NVIDIA/mig-parted(run), where the proxy logs* egress not allowlisted nvcr.iofornvidia/cuda,nvidia/distroless/go, andnvidia/cloud-native/k8s-mig-manager. The same job passed on 2026-09-29 underproxy-egress-observe(run), and has failed every day since 2026-09-30.Regression coverage in
internal/handlers/egress_allowlist_test.go,TestEgressAllowlist_PublicVendorOCIRegistriesAllowed:tags/listandmanifestspaths from the failing job, the same-host token endpoint, and alayers.nvcr.ioblob path.https://evil.nvcr.io/v2/andhttps://evil.layers.nvcr.io/registry/. These start to pass if either entry is widened to a leading dot.Checklist