MS_AKSOutboundFirewall - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

AKSのアウトバウンドをAzure Firewallで制限する。

概要

  • AKS のアウトバウンドを Azure Firewall で制限する。
  • 最近は、アウトバウンドをエグレスと呼ぶらしい。

補足(用語): エグレス (egress) / イングレス (ingress) は
Kubernetes の文脈で定着した呼び方である。
Kubernetes には Ingress というリソース種別があるため、
「インバウンド=Ingress、アウトバウンド=Egress」という語彙が
そのまま使われるようになった。
Azureのアウトバウンド設計 で言う
アウトバウンド制御と、対象は同じである。

詳細

補足(原文が空欄のため、要点を補う)

なぜ AKS でアウトバウンド制限が問題になるか

AKS のノードは、クラスタとして成立するために外部通信を必要とする
したがって「アウトバウンドを全部閉じる」とクラスタが動かない。
必要な通信を把握したうえで許可リストを作るのがこの作業の本質である。

主に必要なもの:

宛先 目的
AKS の API サーバー(*.hcp.<リージョン>.azmk8s.io ノードとコントロール プレーンの通信
MCRmcr.microsoft.com*.data.mcr.microsoft.com システム コンポーネントのイメージ取得
management.azure.com ARM への操作
login.microsoftonline.com 認証
パッケージ リポジトリ(packages.microsoft.com 等) ノードの更新
ACR アプリのイメージ取得(閉域化するなら Private Endpoint)

構成の型

         ┌──────────── Hub VNET ────────────┐
         │  [ Azure Firewall ]              │
         └──────────▲───────────┬───────────┘
         VNET ピアリング         │ インターネット
         ┌──────────┴───────────▼───────────┐
         │  Spoke VNET(AKS ノード サブネット)│
         │   UDR: 0.0.0.0/0 → Firewall       │
         └──────────────────────────────────┘

手順の骨子は次のとおり。

  1. アウトバウンドの種類を userDefinedRouting にして AKS を作成する
    (既定は loadBalancer。これだと LB 経由で直接外に出る)。
  2. ノードのサブネットに UDR を設定し、
    既定ルート 0.0.0.0/0Azure Firewall に向ける。
  3. Firewall にアプリケーション ルール(FQDN)と
    ネットワーク ルール(TCP/UDP)を定義する。
    AzureKubernetesService の FQDN タグを使うと、
    AKS に必要な FQDN 群をまとめて許可できる。

落とし穴

  • 0.0.0.0/0 を Firewall に向けた時点で、
    ノードから API サーバーへの経路も Firewall を通る

    必要なネットワーク ルール(TCP 9000 など)を忘れると
    ノードが NotReady になる。
  • Azure Firewall
    **評価順序(ネットワーク → アプリケーション)**により、
    ネットワーク ルールで広く開けると FQDN 制御が効かなくなる。
  • Standard Load Balancer の SNAT ポート枯渇は、
    Firewall 経由にしても形を変えて残る
    (Firewall 側の SNAT ポート上限)。
    高トラフィックなら Firewall にパブリック IP を複数割り当てる。
  • クラスタのアップグレードや新規アドオンの導入で
    必要な FQDN が増えることがある。
    Firewall のログ(拒否イベント)を監視する運用が要る。

参考

Microsoft Learn


Tags: 移行, クラウド, コンテナ, Azure, AKS, IaC, セキュリティ, 通信技術

⚠️ **GitHub.com Fallback** ⚠️