Skip to content

AKS in Azure Government: Federal Migration Guide

Status: Authored 2026-04-30 Audience: Federal CISOs, ISSOs, platform engineers, and ATO assessors evaluating AKS for federal workloads on Azure Government. Scope: FedRAMP High, IL4/IL5, STIG hardening, FIPS 140-2, container compliance, image provenance, and agency-specific deployment patterns.


1. AKS availability in Azure Government

Regions and impact levels

Azure Government region AKS availability Impact levels Notes
US Gov Virginia GA IL2, IL4, IL5 Primary region for most federal AKS deployments
US Gov Texas GA IL2, IL4, IL5 Secondary / DR region
US Gov Arizona GA IL2, IL4, IL5 Alternative primary
US DoD Central GA IL2, IL4, IL5, IL6 DoD-specific workloads
US DoD East GA IL2, IL4, IL5, IL6 DoD-specific workloads

Service availability in Azure Government

AKS feature Commercial Azure Azure Government Notes
AKS managed control plane GA GA Full parity
Azure CNI Overlay GA GA Full parity
Azure CNI + Cilium GA GA Full parity
Private clusters GA GA Recommended for federal
Entra ID integration GA GA Azure Gov Entra ID
Workload Identity GA GA Full parity
Defender for Containers GA GA Full parity
Container Insights GA GA Full parity
Managed Prometheus GA GA Full parity
Managed Grafana GA GA Full parity
Key Vault Secrets Provider GA GA Full parity
Azure Policy for K8s GA GA Full parity
Flux GitOps extension GA GA Full parity
KEDA addon GA GA Full parity
Istio addon GA GA (Preview) Check current status
AKS Automatic Preview Limited Check availability
GPU node pools (NC/ND) GA GA (limited SKUs) Check region availability

2. FedRAMP High inheritance

What AKS inherits

AKS on Azure Government inherits Azure Government's FedRAMP High Provisional Authorization to Operate (P-ATO). This means:

  • Physical and environmental controls (PE family): inherited from Azure Government data centers
  • Personnel security (PS family): inherited from Microsoft operations staff screening
  • Media protection (MP family): inherited from Azure Government data handling
  • System and communications protection (SC family): partially inherited (encryption at rest, encryption in transit)
  • Audit and accountability (AU family): partially inherited (Azure Activity Log, Azure Monitor)

Customer responsibilities for AKS

NIST 800-53 control family Customer responsibility AKS implementation
AC (Access Control) Configure RBAC, Entra ID integration, Conditional Access Entra ID groups mapped to K8s RBAC; disable local accounts; PIM for admin access
AU (Audit) Configure audit logging, retention, alerting Container Insights logs to Log Analytics; AKS audit logs; 90-day minimum retention
CA (Assessment) Continuous monitoring, vulnerability management Defender for Containers scans; Azure Policy compliance reports
CM (Config Management) Baseline configurations, change control GitOps (Flux/ArgoCD); Azure Policy for K8s; Pod Security Standards
IA (Identification/Auth) Strong authentication for users and services Entra ID with MFA; Workload Identity for pods; certificate-based auth
IR (Incident Response) Incident detection and response procedures Defender for Containers alerts; Container Insights; Azure Sentinel
RA (Risk Assessment) Vulnerability scanning, risk analysis Defender vulnerability scanning; ACR image scanning
SA (System Acquisition) Supply chain risk management Image provenance (Notation); approved registries (Azure Policy)
SC (Sys/Comm Protection) Encryption, network segmentation TLS everywhere; network policies; private clusters; Private Link
SI (System Integrity) Software integrity verification, malware protection Image signing (Notary v2); Defender runtime protection; FIPS modules

Evidence mapping for ATO packages

# Example: ATO evidence artifact mapping
controls:
    AC-2: # Account Management
        implementation: "Entra ID groups with automated provisioning"
        evidence:
            - "Azure RBAC role assignments export"
            - "Entra ID group membership report"
            - "kubectl get clusterrolebindings -o yaml"
    AC-6: # Least Privilege
        implementation: "Namespace-scoped RBAC, Pod Security Standards restricted"
        evidence:
            - "Azure Policy compliance report (PSS restricted)"
            - "kubectl get rolebindings -A -o yaml"
    AU-2: # Audit Events
        implementation: "Container Insights + AKS audit logs to Log Analytics"
        evidence:
            - "Log Analytics query: AKSAudit | summarize count() by Category"
            - "Diagnostic settings configuration export"
    SC-8: # Transmission Confidentiality
        implementation: "TLS 1.2+ for all ingress; mTLS via Istio; Private Link for PaaS"
        evidence:
            - "Ingress TLS configuration"
            - "Istio PeerAuthentication policies"
            - "Private endpoint configuration export"

3. DoD IL4 and IL5 deployment

IL4 configuration requirements

IL4 is the baseline for CUI (Controlled Unclassified Information) on Azure Government:

# IL4 AKS cluster configuration
az aks create \
  --resource-group rg-aks-il4 \
  --name aks-il4-govva \
  --location usgovvirginia \
  --kubernetes-version 1.30 \
  --network-plugin azure \
  --network-plugin-mode overlay \
  --network-dataplane cilium \
  --enable-private-cluster \
  --private-dns-zone system \
  --outbound-type userDefinedRouting \
  --enable-aad \
  --enable-azure-rbac \
  --disable-local-accounts \
  --enable-defender \
  --enable-workload-identity \
  --enable-oidc-issuer \
  --tier standard \
  --node-vm-size Standard_D8s_v5 \
  --node-count 3 \
  --zones 1 2 3

IL5 additional requirements

IL5 adds requirements beyond IL4 for higher-sensitivity CUI and National Security Systems:

Requirement Implementation
FIPS 140-2 validated cryptography --enable-fips-image on all node pools
Data-at-rest encryption with CMK Azure Disk encryption with customer-managed key in Key Vault
Enhanced logging Extended audit log categories; 1-year retention
Dedicated hosts (optional) Azure Dedicated Hosts for physical isolation
Approved images only Azure Policy: restrict to ACR + MCR images only
# IL5 additions: FIPS-enabled node pool
az aks nodepool add \
  --resource-group rg-aks-il5 \
  --cluster-name aks-il5-govva \
  --name fipspool \
  --enable-fips-image \
  --node-vm-size Standard_D8s_v5 \
  --node-count 3 \
  --zones 1 2 3

4. STIG-hardened deployments

DISA STIG baselines for Kubernetes

The DISA Kubernetes STIG provides security configuration guidance for Kubernetes clusters. AKS addresses many STIG requirements at the platform level.

STIG requirement AKS implementation Status
V-242376: API server must use TLS 1.2+ AKS API server uses TLS 1.2 Automatic
V-242377: API server must verify client certificates Entra ID authentication with certificate-based auth Configurable
V-242381: API server audit logging must be enabled AKS diagnostic settings for audit logs Configurable
V-242383: etcd must use TLS for communication AKS managed etcd uses TLS Automatic
V-242386: Limit use of privileged containers Pod Security Standards + Azure Policy Configurable
V-242387: Network policies must be implemented Azure NPM / Calico / Cilium Configurable
V-242393: Secrets must be encrypted at rest AKS etcd encryption at rest Automatic
V-242395: RBAC must be enabled AKS RBAC always enabled Automatic
V-242400: Anonymous authentication must be disabled AKS disables anonymous auth by default Automatic

CIS Kubernetes Benchmark

AKS provides Azure Policy initiative for CIS Kubernetes Benchmark compliance:

# Assign CIS benchmark policy initiative
az policy assignment create \
  --name "aks-cis-benchmark" \
  --display-name "CIS Microsoft Azure Kubernetes Service Benchmark" \
  --policy-set-definition "0a914e76-4921-4c19-b460-a2d36003525a" \
  --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/rg-aks-prod/providers/Microsoft.ContainerService/managedClusters/aks-prod-eastus2" \
  --enforcement-mode Default

STIG-hardened container images

Use hardened base images from approved sources:

Image source Hardening level Use case
Microsoft CBL-Mariner CIS L1 hardened AKS node OS (default)
Iron Bank (DoD) DISA STIG hardened DoD container workloads
Chainguard Minimal + CVE-free Secure base images
Red Hat UBI STIG hardened RHEL-based workloads
Azure Linux (CBL-Mariner 3) CIS L1 hardened AKS node OS (next-gen)
# Use Iron Bank images (DoD)
# 1. Mirror from Iron Bank to ACR
az acr import \
  --name csainaboxacr \
  --source registry1.dso.mil/ironbank/opensource/postgres/postgresql:15.7 \
  --image ironbank/postgres:15.7 \
  --username "$IRONBANK_USER" --password "$IRONBANK_PAT"

# 2. Azure Policy: require approved registries
# See security-migration.md for policy configuration

5. FIPS 140-2 crypto modules

Enable FIPS on AKS node pools

# Create FIPS-enabled node pool
az aks nodepool add \
  --resource-group rg-aks-prod \
  --cluster-name aks-prod-eastus2 \
  --name fipspool \
  --enable-fips-image \
  --node-vm-size Standard_D8s_v5 \
  --node-count 3 \
  --zones 1 2 3

# Verify FIPS is enabled on nodes
kubectl get nodes -l agentpool=fipspool -o jsonpath='{.items[0].status.nodeInfo.kernelVersion}'
# Should show FIPS-enabled kernel

# Verify FIPS mode on a node
kubectl debug node/aks-fipspool-12345 -it --image=mcr.microsoft.com/cbl-mariner/busybox:2.0 -- cat /proc/sys/crypto/fips_enabled
# Output: 1

FIPS considerations for containers

  • Node-level FIPS: the Linux kernel and system libraries use FIPS-validated crypto modules
  • Container-level FIPS: container applications must also use FIPS-validated crypto libraries
  • Common FIPS-validated libraries: OpenSSL (FIPS Object Module), BoringSSL (BoringCrypto), NSS
# Example: FIPS-compliant Python application
FROM mcr.microsoft.com/cbl-mariner/python:3.11
# CBL-Mariner includes FIPS-validated OpenSSL
RUN tdnf install -y openssl-fips-provider
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

6. Container image provenance

Notation (Notary v2) for image signing

# Install Notation CLI
az acr notation install

# Generate signing key (or use Azure Key Vault)
notation key generate-test "federal-signing-key"

# Sign an image
notation sign \
  --key "federal-signing-key" \
  csainaboxacr.azurecr.io/team/api:v2.3.1

# Verify signature
notation verify csainaboxacr.azurecr.io/team/api:v2.3.1

# Deploy Ratify on AKS for admission control
helm install ratify ratify/ratify \
  --namespace gatekeeper-system \
  --set featureFlags.RATIFY_CERT_ROTATION=true \
  --set provider.tls.cabundle="$(cat ca-cert.pem | base64)"

Enforce signed images

# Gatekeeper constraint: require signed images
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sImageRequireSignature
metadata:
    name: require-signed-images
spec:
    match:
        kinds:
            - apiGroups: [""]
              kinds: ["Pod"]
        excludedNamespaces:
            - kube-system
            - gatekeeper-system
            - velero
    parameters:
        verifier: notation
        trustPolicy: "federal-trust-policy"

7. Azure Policy for container compliance

Federal policy initiatives

# NIST SP 800-53 Rev 5 for containers
az policy assignment create \
  --name "aks-nist-800-53" \
  --display-name "NIST SP 800-53 Rev. 5 for AKS" \
  --policy-set-definition "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  --scope "/subscriptions/$SUBSCRIPTION_ID" \
  --enforcement-mode Default

# FedRAMP High for containers
az policy assignment create \
  --name "aks-fedramp-high" \
  --display-name "FedRAMP High for AKS" \
  --policy-set-definition "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  --scope "/subscriptions/$SUBSCRIPTION_ID" \
  --enforcement-mode Default

Custom federal policies

# Require FIPS-enabled node pools for sensitive namespaces
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequireFIPSNodes
metadata:
    name: require-fips-sensitive
spec:
    match:
        kinds:
            - apiGroups: [""]
              kinds: ["Pod"]
        namespaces:
            - il5-workloads
            - pii-processing
    parameters:
        requiredNodeLabel: "kubernetes.azure.com/fips_enabled"
        requiredNodeLabelValue: "true"

8. Agency-specific deployment patterns

Department of Defense (DoD)

  • Platform One / Big Bang: AKS clusters configured with DoD Big Bang baseline (Istio, Kiali, Jaeger, Twistlock/Prisma)
  • Iron Bank: container images from registry1.dso.mil mirrored to ACR
  • STIG automation: Azure Policy enforcing DISA Kubernetes STIG
  • cATO: continuous ATO with automated compliance monitoring

Intelligence Community (IC)

  • Air-gapped deployment: AKS on Azure Stack HCI for disconnected environments
  • Private clusters only: no public API server endpoints
  • Enhanced audit logging: all API server audit events to dedicated Log Analytics workspace
  • Zero-trust networking: default-deny network policies + Istio mTLS

Civilian agencies

  • Cloud Smart alignment: AKS adoption supports OMB M-19-26 cloud-smart strategy
  • FedRAMP inheritance: simplifies ATO package preparation
  • Shared services: AKS as platform for shared microservices (identity, notification, document management)
  • Data platform integration: CSA-in-a-Box on AKS for agency data analytics

9. Compliance monitoring and reporting

Continuous compliance with Azure Policy

# Check compliance state
az policy state list \
  --resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/rg-aks-prod/providers/Microsoft.ContainerService/managedClusters/aks-prod-eastus2" \
  --filter "complianceState eq 'NonCompliant'" \
  --query "[].{policy:policyDefinitionName, resource:resourceId, compliance:complianceState}" \
  -o table

Defender for Containers compliance

  • Continuous vulnerability assessment of ACR images
  • Runtime threat detection for AKS workloads
  • Compliance score in Microsoft Defender for Cloud
  • Export compliance data to Azure Sentinel for SIEM integration

Audit log retention

# Configure diagnostic settings with extended retention
az monitor diagnostic-settings create \
  --name aks-audit-logs \
  --resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/rg-aks-prod/providers/Microsoft.ContainerService/managedClusters/aks-prod-eastus2" \
  --workspace "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/rg-monitor/providers/Microsoft.OperationalInsights/workspaces/law-federal" \
  --logs '[
    {"category": "kube-apiserver", "enabled": true},
    {"category": "kube-audit", "enabled": true},
    {"category": "kube-audit-admin", "enabled": true},
    {"category": "kube-controller-manager", "enabled": true},
    {"category": "kube-scheduler", "enabled": true},
    {"category": "cluster-autoscaler", "enabled": true},
    {"category": "guard", "enabled": true}
  ]'

10. Federal migration checklist

  • AKS deployed in Azure Government region (US Gov Virginia / Texas / Arizona)
  • Private cluster enabled (no public API server endpoint)
  • Entra ID integration enabled; local accounts disabled
  • FIPS-enabled node pools for IL5 / FIPS-required workloads
  • Azure Policy initiatives assigned (NIST 800-53, CIS, STIG)
  • Defender for Containers enabled (vulnerability scanning + runtime protection)
  • Audit logs flowing to Log Analytics with 1-year retention
  • Container images sourced from approved registries (ACR, Iron Bank, MCR)
  • Image signing configured (Notation / Notary v2)
  • Network policies enforced (default-deny baseline)
  • Secrets in Azure Key Vault (not K8s Secrets)
  • Workload Identity configured (no stored credentials)
  • ExpressRoute configured for hybrid connectivity (if applicable)
  • Egress controlled via Azure Firewall
  • ATO package documentation updated with AKS-specific controls
  • CSA-in-a-Box compliance YAMLs applied (FedRAMP, CMMC, HIPAA)

Maintainers: CSA-in-a-Box core team Last updated: 2026-04-30 Related: Security Migration | Why AKS | Best Practices