AKS & Container Networking参照資料確認: 2026-09-11

Advanced Container Network Security

AKSのcontainer network securityをKubernetes NetworkPolicy、Cilium、ACNSのFQDN/L7 policy、encryption、Azure-side controlsの多層防御として設計する。

この記事の目次

Advanced Container Network Securityを理解するための前提

AKS networkingは変化が速いため、旧方式とcurrent recommendationを区別して記載しています。実装直前には下記Microsoft Learnのcurrent constraints / region / version supportを再確認してください。

Kubernetes NetworkPolicyはpod traffic segmentationの基本controlであり、namespace/pod selectorとport/protocolでeast-westを最小化する。 current AKS guidanceではCiliumがmanaged NetworkPolicyの中心で、eBPF data planeでpolicy enforcementを行う。

Advanced Container Networking ServicesのContainer Network SecurityはAzure CNI Powered by Cilium clusterで利用するsecurity feature set。 ACNS securityはFQDN-based filteringやLayer 7 policyなど、IP/portだけでは表現しにくいegress/application intentを扱える。

hostNetwork pod、DNS、health probe、control-plane/registry/monitoring dependenciesはdefault-deny導入時に明示的なexception設計が必要。 Azure NSG/FirewallとKubernetes policyを二重に置く場合、どちらがblockしたかをflow logs/metricsとpacket walkで特定できるobservabilityを同時に用意する。

通信経路と責任境界

調査原則: Kubernetes objectが正しいことはAzure data pathの正常性を保証せず、Azure resourceがHealthyであることもpod-to-pod/pod-to-serviceの成功を保証しません。source・destination・protocol・port・時刻を固定して両layerを照合します。

アドレスと識別情報の考え方

Address / identityWhere it lives運用上の意味
Workload selectornamespace/pod labelspolicy対象を明示。label driftはsecurity drift。
Destination identitypod selector / CIDR / FQDNdynamic SaaS等ではIP allowlistだけでなくFQDN policyを評価。
Azure identitysubnet/service tag/public IP等NSG/Firewall guardrailのscope。Kubernetes policyとは別layer。
Egress sourcenode/NAT/Firewall public IPexternal allowlistとpolicyのsource identityを整合させる。
重要: IPアドレスそのものとworkload/service identityを混同しません。autoscale・reschedule・SNAT・load balancingでaddressは変化するため、Kubernetes metadataとAzure resource identityを合わせて記録します。

設計判断

判断軸確認する問い設計として固定すること
Default posturenamespaceごとdefault-denyにするか段階導入しDNS/telemetry/health dependenciesをexplicit allow。
Egress identityIP allowlistで足りるかSaaS等dynamic destinationはFQDN filteringを検討。
L7method/path/protocol-aware policyが必要か必要なserviceだけACNS L7を使いcomplexityを限定。
Encryptionin-cluster traffic encryption requirementsupported Cilium/ACNS capabilityとperformance/operational impactを評価。
Azure controlNSG/Firewallとpod policyの責任者platform guardrailとworkload policyのownershipを分離。

実装・移行の順序

  1. traffic inventoryからnamespace/service単位のrequired flowを作る。
  2. audit/observe期間でactual DNS/flowを取得し、implicit dependencyを洗い出す。
  3. non-prod namespaceにdefault-deny + explicit DNS/required flowを適用する。
  4. FQDN/L7等advanced policyは必要なegress/applicationだけに限定して追加する。
  5. negative test(禁止通信が失敗)とpositive business testを同じrelease gateにする。
  6. Azure NSG/FirewallとCilium policyのblock evidenceを一つのincident runbookへ統合する。

運用で残しておく情報

観点残すべき運用証拠
Policy inventorynamespaceごとのNetworkPolicy有無とpod selector coverageを確認。
DNS dependencypolicy適用podがcluster DNSへUDP/TCP 53を到達できるか確認。
Flow evidenceallowed/dropped flowをACNS logs/Hubble metricsで確認。
Ownershipplatform denyとapplication denyをchange record上で区別。

変更前に確認する

Control state

AKS networkProfile、Kubernetes object、Azure associationをread-onlyで採取し、desired configurationを固定する。

Data plane

同じ5-tupleで実通信し、forward path・return path・source translation・policy decisionを証明する。

Observability

DNS/TCP/flow/drop/backend health等、障害点に対応するsignalを同一時刻で収集する。

Negative test

allowだけでなく、禁止すべき通信が明示的に失敗することもsecurity acceptanceへ含める。

Read-only / discovery commands
kubectl get networkpolicy -A
kubectl get pods -A --show-labels
kubectl get svc,endpointslices -A
az aks show -g <rg> -n <cluster> --query networkProfile.networkDataplane -o tsv

Common failure modes

症状疑うboundary確認・是正
default-deny後DNS不可DNS egress allow不足CoreDNS/NodeLocal DNS selector/IPとUDP/TCP 53を確認。
policyが効かないpodselector mismatch/hostNetworklabelsとhostNetworkを確認。
FQDN allowが不安定DNS path/TTL/policy semanticsDNS observationとresolved endpoint flowを時系列で比較。
Azure側denyと誤認Cilium policy dropACNS/Hubble flowとNSG/Firewall logを同時刻で照合。

Change safety / rollback

一括変更を避ける: security policyは「適用できた」ではなく、禁止通信が確実に失敗し必要通信だけ成功することをacceptanceにする。最初から全namespaceへ一括default-denyを配布しない。

Official sources