Back to controls

Ensure Azure Container Registry public network access is disabled

Container registries should use private endpoints where possible to minimize internet exposure.

Category

Controls

High

Applies to

Microsoft Azure

Coverage

1 queries

Asset types

1 covered

Overview

Container registries should use private endpoints where possible to minimize internet exposure.

Remediation guidance

Azure Remediation

Service-wide fix (recommended): use Premium registries with Private Link, disable public access, and only keep trusted-service bypass enabled when there is a documented business need.

When to use service-wide remediation

Use the service-wide path when many registries are internet reachable or when teams still depend on public endpoints.

Azure portal

  1. Open the affected Container Registry.
  2. Go to Networking.
  3. On Public access, set Public network access to Disabled.
  4. Create or verify a Private endpoint for every network that must reach the registry.
  5. If the finding is caused by the trusted-services bypass, clear Allow trusted Microsoft services to access this container registry unless you explicitly need it.

Azure CLI

Disable public network access:

az acr update \
  --name <acr-name> \
  --resource-group <resource-group> \
  --public-network-enabled false

Disable trusted-services bypass if it is not required:

az acr update \
  --name <acr-name> \
  --resource-group <resource-group> \
  --allow-trusted-services false

Validate the network settings:

az acr show \
  --name <acr-name> \
  --resource-group <resource-group> \
  --query '{publicNetworkAccess:publicNetworkAccess,networkRuleBypassOptions:networkRuleBypassOptions}'

Operational notes

  • Private Link requires the Premium SKU.
  • If you disable public access, az acr build and some Azure DevOps scenarios can break unless you use a supported private connectivity design or self-hosted agents.
  • If Microsoft Defender for Cloud or another trusted service still needs access, document that exception instead of leaving bypass broadly enabled by default.

References

  • https://learn.microsoft.com/en-us/azure/container-registry/container-registry-private-link
  • https://learn.microsoft.com/en-us/azure/container-registry/allow-access-trusted-services

Query logic

These are the stored checks tied to this control.

Container registries with public network enabled

Connectors

Microsoft Azure

Covered asset types

ContainerRegistry

Expected check: eq []

{ containerRegistries(where: { OR: [ { publicNetworkAccess_NOT: "Disabled" }, { networkRuleBypassOptions_INCLUDES: "AzureServices" } ] }) { ...AssetFragment } }
Cyscale Logo
Cyscale is an agentless cloud-native application protection platform (CNAPP) that automates the contextual analysis of cloud misconfigurations, vulnerabilities, access, and data, to provide an accurate and actionable assessment of risk.

Stay connected

Receive new blog posts and product updates from Cyscale

By clicking Subscribe, I agree to Cyscale’s Privacy Policy


© 2026 Cyscale Limited

LinkedIn icon
Twitter icon
Facebook icon
crunch base icon
angel icon