Azure Container Security in 2026: A Practitioner's Guide to AKS, ACI, ACA, and ACR

By
Minimus
August 10, 2026
Diagram comparing official Claude Code container with 107 critical CVEs versus Minimus hardened container with zero critical CVEs

Azure container security is the working discipline of dividing risk across the four Microsoft services that actually run containers: Azure Kubernetes Service (AKS), Azure Container Apps (ACA), Azure Container Instances (ACI), and Azure Container Registry (ACR). Each service draws the shared-responsibility line at a different layer, and Microsoft Defender for Cloud telemetry consistently flags vulnerable container images across customer subscriptions where that line is misread.

This guide covers all four services in one place. It draws the boundary between Microsoft-managed platform security and customer-owned controls, and it maps each recommendation to a CIS benchmark identifier and an Azure CLI command. This guide explains how security responsibilities differ across AKS, Azure Container Apps, Azure Container Instances, and Azure Container Registry, with practical controls for identity, networking, image security, admission, and runtime protection.

Key Takeaways

  • Azure container security spans four Microsoft services (AKS, Azure Container Apps, Azure Container Instances, and Azure Container Registry), and each draws the shared-responsibility line at a different point. Microsoft manages the AKS control plane and maintains supported node images, while customers remain responsible for image content, workload configuration, identity, networking, secrets, and applying supported Kubernetes and node OS upgrades.
  • Microsoft Defender for Containers is the posture and runtime layer Azure ships with. It flags vulnerable packages and surfaces misconfigurations, but it does not eliminate package CVEs at build time. Hardened, minimal images close the build-time gap that posture cannot patch.
  • The CIS Microsoft Azure Foundations Benchmark v3.0.0 (October 2024) and the CIS Microsoft Azure Kubernetes Service Benchmark are the canonical control sets for Azure container workloads. NIST SP 800-190 sections 4.1 through 4.5 are the federal mapping for image, registry, orchestrator, container, and host controls.
  • The fastest single posture improvement on Azure is also the cheapest: turn off ACR anonymous pull, enforce Microsoft Entra ID with least-privileged roles, disable public network access on the registry, and require digest-pinned images from a hardened catalog. Every other control builds on that baseline.

What Azure Container Security Covers Across AKS, ACI, ACA, AND ACR

Azure Container Security is the prevention, detection, and remediation of risks across the four Microsoft container services: AKS (managed Kubernetes), ACA (serverless containers on Kubernetes plus the Kubernetes Event-Driven Autoscaler, KEDA), ACI (a single-container or container-group runtime), and ACR (an OCI-compliant registry). It is image- and workload-centric. It relies on a documented split between what Microsoft secures in the platform and what the customer owns at the image, identity, and network layers.

Each service has a different security model, and treating them as one surface is the most common Azure container misconfiguration:

Service What It Is Control Plane Owner Customer Responsibility
AKS Managed Kubernetes; Microsoft runs the control plane, customer owns the node pool VMs Microsoft Node OS upgrade channel, RBAC, NetworkPolicy, image content, and workload identity
ACA Serverless container PaaS on Kubernetes plus KEDA; no node access Microsoft (full) Image content, ingress configuration, managed-identity scope, and secrets
ACI Single-container or container-group runtime, per-second billing Microsoft (full) Image content, network exposure (public IP or VNET-injected), and managed-identity scope
ACR OCI registry with replication, Notation signing, and ACR Tasks Microsoft (storage and replication) Authentication mode, Microsoft Entra ID role assignments, signing keys, and network rules


The first practical implication: image content is always the customer's problem, regardless of which service runs the container. The hardened images foundation is the only control that closes the package-CVE half of the work across all four services at once.

The Azure Shared Responsibility Model for Containers, Service by Service

Microsoft's shared-responsibility model for Azure draws the line at different layers for each container service. The shorthand: the more managed the service, the more of the platform Microsoft secures, and the smaller the customer's remaining surface gets. The residual customer slice (image content, identity scope, network exposure, and secrets) is the same on every service.

Layer AKS ACA ACI ACR
Hypervisor and physical host Microsoft Microsoft Microsoft Microsoft
Host OS and kernel Microsoft (with customer-opt node upgrades) Microsoft Microsoft Microsoft
Kubernetes or orchestration control plane Microsoft Microsoft n/a n/a
Container runtime (containerd) Microsoft Microsoft Microsoft n/a
Image contents Customer Customer Customer Customer
Workload configuration (RBAC, network, identity) Customer Customer Customer Customer
Secrets and key material Customer (Key Vault) Customer Customer Customer
Network policy and ingress Customer Customer Customer Customer


Two takeaways drop out of the table. First, the customer owns image content on every Azure container service. Microsoft does not patch a vulnerable Java runtime inside your image, no matter how managed the platform is. Second, the "PaaS is more secure" argument holds for the platform; it does not hold for the image. ACA and ACI are more managed than AKS. Customers remain responsible for image content, identity, secrets, and application-level networking across all three services, but AKS exposes significantly more infrastructure and Kubernetes configuration controls than ACA or ACI.

Threat Landscape Unique to Azure Container Workloads

Azure-specific container risks cluster into three groups: registry exposure, AKS-cluster identity sprawl, and PaaS multi-tenant network gaps. Each has named CVEs or Microsoft advisories behind it.

ACR Registry Risks

Anonymous pull misconfigurations remain one of the most common Azure container findings in Defender for Cloud's container-posture telemetry. A misconfigured ACR allows any unauthenticated client on the internet to pull every image in the registry, including private application images that may contain hard-coded credentials, internal API endpoints, or compliance-restricted artifacts. Microsoft has shipped warning UI in the Azure portal since 2023, but the misconfiguration persists in inherited subscriptions and IaC templates copied from public examples.

AKS-Specific Risks

The most consequential AKS identity migration of the past two years is the AAD Pod Identity v1 retirement, announced by Microsoft in 2022 and tracked in the AKS deprecation timeline on Microsoft Learn. Workloads still using Pod Identity v1 must migrate to Microsoft Entra Workload ID (the supported replacement) to keep receiving security patches. Workloads still using Azure AD Pod Identity should migrate to Microsoft Entra Workload ID to remain on Microsoft’s supported identity model.

The other recurring AKS risk is the runc container-escape class of vulnerabilities. The runc container escape advisory walks the Leaky Vessels family (CVE-2024-21626 and three related CVEs disclosed January 31, 2024). The flaw lets a malicious image escape to the host node by exploiting how runc handles the working-directory file descriptor. AKS nodes inherit the patch through node image upgrades; clusters on stale node images stay vulnerable.

ACI and ACA Risks

ACI and ACA are multi-tenant managed platforms. Microsoft documents the isolation guarantees, but two practitioner-side risks recur:

  • Public IP exposure by default. ACI containers can be deployed with a public IP and no inbound network rule unless the customer explicitly configures VNET integration or restricts ingress. Application endpoints end up on the public internet without anyone intending them to.
  • Managed-identity over-permissioning. ACA and ACI do not have a Kubernetes RBAC layer, so the managed identity is the only authorization surface. Over-broad role assignments at the subscription level (commonly seen with Contributor on managed identities) become full-tenant escalation paths the moment the container is compromised.

Microsoft Defender for Containers: What It Catches and What It Misses

Microsoft Defender for Containers is the container plan inside Microsoft Defender for Cloud. It covers four capability families, billed per vCore per month on supported AKS and Azure Arc-enabled clusters (current pricing on the Defender for Cloud pricing page in the Azure portal).

Capability What It Does Coverage Gap
Agentless posture Scans cluster configuration and image inventory without an agent No runtime visibility; no in-pod process telemetry
Sensor-based runtime detection Defender DaemonSet streams syscall and process events from each node Requires the sensor to be deployed; cost scales per vCore
Vulnerability assessment Microsoft Defender Vulnerability Management scans images in ACR and on cluster nodes Reports CVEs; does not patch or rebuild the image
Container hardening recommendations Maps cluster and image findings to CIS AKS Benchmark controls Recommendation only; remediation is customer work


The capability map is documented in Microsoft Defender for Containers introduction. What that page does not state plainly is the build-time gap: Defender flags vulnerable packages but does not eliminate them. A typical Defender finding on a public python:3.12-slim base image surfaces 50-plus CVEs the day the image is pushed. Defender's recommendation is "use a more secure base image," and the actual remediation is a base-image swap.

Defender for Containers also has compliance-coverage limits. Some advanced features and FedRAMP High residency paths are not available in every Azure region, and Defender for Containers itself is not the FedRAMP-evidence layer for image content. That obligation lives in the image catalog and the supply-chain artifact pipeline (Software Bill of Materials, or SBOM, plus signed attestations).

Securing Azure Container Registry (ACR)

ACR hardening is the highest-impact single Azure container security task because every downstream service pulls from it. The four-step minimum:

  1. Disable anonymous pull. Run az acr update -n <registry> --anonymous-pull-enabled false. This maps to the registry-access controls in CIS Microsoft Azure Foundations Benchmark v3.0.0 section 5. Anonymous pull on a registry containing private images is a public-data-exposure event, not a configuration nit.
  2. Enforce Microsoft Entra ID authentication with least-privileged roles. Assign AcrPull (read-only) to consumers and AcrPush to CI/CD service principals. Do not grant Owner or Contributor at the registry scope, and disable the admin user (--admin-enabled false).
  3. Disable public network access and use Private Link. Run az acr update -n <registry> --public-network-enabled false, then attach a private endpoint into the AKS, ACA, or ACI VNET. This removes the registry from the public-internet path entirely.
  4. Require image signing and verification. Use Notation (the OCI-native signing tool from the Notary Project that supersedes ACR's older Docker Content Trust signing) plus a Notation policy in the consuming service. Image-signature verification can be enforced through documented admission-control patterns such as Ratify with Gatekeeper and Azure Policy on AKS.

Two operational add-ons pay back fast. Use ACR Tasks to automate image builds and rebuilds, and enable Microsoft Defender vulnerability assessment for supported images stored in ACR. A regional outage will not block image pulls during incident response if the registry is replicated where the cluster lives.

Securing AKS Clusters

AKS hardening is sequenced controls, not a single switch. The five steps below map to the CIS Microsoft Azure Kubernetes Service Benchmark and the Microsoft AKS security baseline:

  1. Enable Defender for Containers on the cluster in the Defender for Cloud plan settings. This deploys the Defender sensor and turns on agentless posture against the node pool.
  2. Use managed identities and Microsoft Entra Workload ID for every workload that needs an Azure resource. Stop using Service Principals embedded in pod environment variables, and remove every remaining Pod Identity v1 deployment.
  3. Enable the Azure Policy add-on for Kubernetes (Gatekeeper-based admission control). Turn on the built-in initiative "Kubernetes cluster pod security baseline standards" in Audit mode for one to two weeks, then flip to Deny.
  4. Apply CIS AKS Benchmark controls. Critical control families: 3.1 (RBAC and service accounts), 4.x (API server access), 5.x (workload security context), and 5.7 (network policies). The Azure Policy add-on ships built-in initiatives that map directly to these.
  5. Pair admission policy with hardened images. A Kyverno or Gatekeeper policy that restricts pods to a hardened-image registry allowlist is the enforcement bridge between the catalog and the cluster. The Kyverno admission policy walks the working policy and the audit-to-enforce rollout pattern.

Node OS upgrades close the runc, containerd, and kubelet CVE class. Enable the node-image auto-upgrade channel (--auto-upgrade-channel node-image) so node images patch on the Microsoft cadence, not on a forgotten ticket.

Securing Azure Container Instances and Container Apps

ACI and ACA share an isolation model and a hardening checklist, with one differentiator: ACA has built-in Dapr and KEDA integration, while ACI is single-container or container-group only. The recurring controls:

  • Use VNET integration and disable public ingress unless the workload genuinely needs internet exposure. For ACA, set ingress to internal: true. For ACI, deploy into a VNET subnet and skip the public IP assignment.
  • Scope managed identities to the resource, not the subscription. Assign system-assigned managed identity at the container or container-app level and grant only the specific Key Vault, Storage, or Service Bus role required.
  • Use Key Vault references for secrets, not environment variables. Both ACA and ACI support secret references that pull from Key Vault at container start, which keeps the secret out of the deployment template and the activity log.
  • For workloads handling regulated data, use Confidential ACI on AMD SEV-SNP. Confidential ACI is generally available in a subset of Azure regions (current region list in the Azure documentation). It uses AMD SEV-SNP hardware enclaves to keep container memory encrypted and unreadable by the underlying host.

Image-Layer Hardening for Azure Container Workloads

Defender for Containers, ACR hardening, and AKS RBAC reduce posture risk. They do not reduce the CVE count inside the image. That work happens at the image layer.

Public base images can inherit a substantial number of vulnerability findings from operating-system and runtime packages, depending on the image version, scanner, advisory feed, and scan date.

The base-image substitution pattern is the durable fix. Drop in a hardened, minimal image as the new FROM line, rebuild, and watch the CVE count fall by 90 percent or more for the same application functionality. For practitioners moving off Debian-based community images, the moving to distroless container images guide walks the swap pattern step by step. For Azure Government and DoD IL5 workloads, the variant must be FIPS 140-3 validated, which means the cryptographic modules in the image are tied to a current NIST CMVP certificate, not just labeled "FIPS-mode."

Organizations should measure the impact of base-image replacement using before-and-after scans of the same application, scanner, and image version. That happened in a single rebuild cycle. The remaining findings sat in required runtime packages tracked under a vendor SLA, not unowned debt.

Compliance Mapping for Azure Container Workloads

Azure container compliance work maps to three control sets that overlap. The table below is the practitioner view, not the auditor's full crosswalk.

Framework Container-Relevant Sections Where Azure-Native Coverage Stops
CIS Microsoft Azure Foundations Benchmark v3.0.0 (October 2024) Section 5 (ACR, AKS, ACI, and ACA controls) Image content; CIS controls cover registry and cluster config, not image package contents
CIS Microsoft Azure Kubernetes Service Benchmark RBAC, pod security context, NetworkPolicy, and secrets Same; image contents and base-image vulnerability backlog are out of scope
NIST SP 800-190 (Application Container Security Guide) Sections 4.1 through 4.5 (image, registry, orchestrator, container, and host) NIST is guidance, not enforcement; mapping evidence is the customer's job
FedRAMP High AC, CM, SI, and SC control families applied to container workloads Defender for Cloud is FedRAMP High authorized in Azure Government; image-content evidence is separate
DoD IL5 All FedRAMP High plus IL5-specific impact controls in Azure Government Secret Image content must come from an IL5-authorized supply chain (Iron Bank or equivalent)


For FedRAMP and IL5 workloads, the Defender-for-Containers evidence stops at posture and runtime; the image-supply-chain evidence comes from a hardened catalog with SBOMs, attestations, and a documented patch SLA. The FedRAMP container compliance guide walks the artifact mapping for federal audits.

Azure Container Security Best Practices Checklist

The 15-control checklist below is sequenced highest impact first. Each item maps to a specific Azure CLI flag, Bicep parameter, or CIS control.

  1. Disable anonymous pull on every ACR (az acr update --anonymous-pull-enabled false).
  2. Enforce Microsoft Entra ID authentication on ACR and disable the admin user (--admin-enabled false).
  3. Set ACR public network access to Disabled and attach a Private Endpoint per consuming VNET.
  4. Sign every production image with Notation (Notary Project) and require signature verification at pull time.
  5. Enable Defender for Containers on every AKS subscription and Azure Arc-enabled cluster.
  6. Enable AKS auto-upgrade for the node image channel (--auto-upgrade-channel node-image).
  7. Migrate every Pod Identity v1 workload to Microsoft Entra Workload ID before the next audit cycle.
  8. Enable the Azure Policy add-on for Kubernetes and start with the pod-security-baseline initiative in Audit mode.
  9. Restrict pods to a hardened-image registry allowlist via Kyverno or OPA Gatekeeper.
  10. Pin every production image by digest (@sha256:), not by tag.
  11. Use VNET integration and disable public ingress on ACA and ACI workloads by default.
  12. Scope managed identities at the resource level, never at the subscription level.
  13. Use Key Vault references for secrets in ACA, ACI, and AKS workloads.
  14. Replace public base images with FIPS 140-3 validated equivalents for regulated workloads.
  15. Maintain a 14-day patch cadence for high-severity CVEs and a 48-hour cadence for criticals on the CISA Known Exploited Vulnerabilities (KEV) list.

Common Azure Container Security Mistakes

Four mistakes I see most often in Azure container posture reviews:

  • Leaving ACR anonymous pull enabled because "the registry only has internal images." Internal-only is not a security control. If the registry is reachable from the internet and pull does not require authentication, the registry is public. Fix it before lunch.
  • Treating managed identity as a passwordless free pass. Managed identity removes credential storage, not authorization scope. A managed identity with Contributor at subscription scope is a tenant-takeover path the moment the container is compromised. Scope at the resource.
  • Skipping Defender for Containers because of cost without doing the math. At list price, Defender for Containers is in the low double digits per vCore per month. For a 100-node AKS cluster averaging 4 vCore per node, that works out to roughly $3,000 per month, less than the cost of a single incident-response retainer hour. The right answer is "scope it to the workloads that need it," not "skip it everywhere."
  • Believing Defender for Containers covers image hardening. It does not. Defender flags CVEs; it does not eliminate them. Image hardening is a separate control that lives at the build pipeline and the catalog.

How Minimus Complements Azure-Native Container Security

Minimus publishes hardened, minimal container images based on upstream distributions, rebuilt on a frequent cadence and designed as secure drop-in alternatives to common public base images, mirrorable into Azure Container Registry. Each Minimus image ships with a CycloneDX-style SBOM, a Cosign signature, vulnerability-status information including VEX-style exploitability context, and a published remediation policy that targets critical CVEs within 48 hours of upstream fix availability, with separate timelines for other severity levels as documented in the Trust Center. The build pipeline is aligned with SLSA Level 3 practices, and FIPS 140-3-ready image variants are based on currently validated cryptographic modules for Azure Government and DoD IL5 workloads. Where Defender for Containers reports CVEs in a public python:3.12-slim base, the Minimus equivalent on the same runtime ships with materially fewer CVEs, often an order of magnitude fewer compared with the public baseline.

For Azure container security programs, Minimus images plug into the build pipeline, mirror to ACR via private endpoint, and typically pass admission policy with minimal or no additional customization. Federal teams can pair the catalog with the Iron Bank FedRAMP container images distribution to inherit the IL5 supply-chain artifacts. Browse the catalog at images.minimus.io, read the verification and Notation-policy guides at docs.minimus.io, or get started on a 30-day proof.

FAQ — Azure Container Security Buyer Questions

What Is Azure Container Security?

Azure container security is the discipline of protecting workloads across the four Microsoft container services (AKS, Azure Container Apps, Azure Container Instances, and Azure Container Registry). It uses a documented split between Microsoft-managed platform controls and customer-owned image, identity, and network controls, and pairs Microsoft Defender for Containers (posture and runtime detection) with hardened image catalogs and admission policy for build-time CVE reduction.

Is Microsoft Defender for Containers Enough for Azure Container Security?

No, not by itself. Defender for Containers covers posture, runtime detection, and vulnerability assessment, but it does not eliminate package CVEs at build time and does not replace image-supply-chain controls. Defender flags a vulnerable base image; the actual remediation is a base-image swap and a rebuild. Most regulated programs pair Defender with a hardened image catalog and an admission policy that enforces the catalog.

How Do I Secure Azure Container Registry?

Disable anonymous pull, enforce Microsoft Entra ID authentication with least-privileged roles (AcrPull for consumers, AcrPush for CI/CD), turn off public network access and use Private Link, and require Notation image signatures at pull time. Those four steps map to CIS Microsoft Azure Foundations Benchmark v3.0.0 section 5 controls and remove the most common ACR exposure paths.

What Is the Difference Between AKS Security and Azure Container Apps Security?

AKS exposes Kubernetes RBAC, NetworkPolicy, admission control, and node-OS configuration as customer-owned controls. ACA hides all of those behind a managed-PaaS surface, leaving image content, ingress configuration, managed-identity scope, and secrets as the customer's slice. AKS gives more control and more responsibility; ACA gives less of both. Image-content risk is identical on both.

Does Azure Support FIPS 140-3 Container Images?

Azure supports running FIPS 140-3 validated container images on AKS, ACA, and ACI, but Azure does not produce a FIPS 140-3 image catalog itself. The FIPS 140-3 image variant must come from a vendor or internal pipeline that builds against a current NIST CMVP-certified cryptographic module. Defender for Cloud reports FIPS-mode posture; the image content is a customer-supply-chain control.

How Does the Azure Shared Responsibility Model Apply to Containers?

For every Azure container service, Microsoft owns the hypervisor, host OS, and orchestrator control plane; the customer owns image content, workload configuration, identity scope, secrets, and network policy. The more managed the service (ACA and ACI sit higher than AKS), the more of the platform Microsoft secures, but the customer-owned slice (image, identity, network, and secrets) is the same across all four services.

Minimus
Minimus
use minimus for free

Free minimized container images

The world’s largest selection of free, ~0 CVEs, compliant container images.
No login. No $. Just pull & go.