AKS ネットワークポリシー設定の確認

対応するポリシーエンジンと実際の NetworkPolicy ルールで、必要な Pod 通信だけを許可してください。

説明

Kubernetes のネットワークポリシーは、ワークロード間の通信を必要な範囲に制限する仕組みです。ポリシーを適用するネットワーク構成と実際の NetworkPolicy リソースが必要であり、エンジンを選ぶだけで通信が自動的に制限されるわけではありません。

想定される影響

  • 不要な Pod 間通信が許可されたままになる場合があります。
  • 侵害されたワークロードから他のサービスへ到達できる範囲が広がる場合があります。

対処方法

  • ネットワークプラグインとデータプレーンに対応するポリシーエンジンを選んでください。AzureRM は azure、calico、cilium をサポートしているため、選ぶ組み合わせの要件を確認してください。
  • Pod セレクターと受信・送信ルールを定義し、DNS など必要な通信を許可してください。必要な通信が成功し、不要な通信が遮断されることをテストしてください。

例

必須の network_plugin を指定した Azure CNI の例です。Azure ネットワークポリシーエンジンを選んだ後、ワークロードに合う NetworkPolicy リソースを別途定義してください。

変更前

hcl
resource "azurerm_kubernetes_cluster" "example" {
  name                = "example-aks1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks1"

  default_node_pool {
    name       = "default"
    node_count = 1
    vm_size    = "Standard_D2_v2"
  }

  identity {
    type = "SystemAssigned"
  }

  network_profile {
    network_plugin = "azure"
  }
}

変更後

hcl
resource "azurerm_kubernetes_cluster" "example" {
  name                = "example-aks1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks1"

  default_node_pool {
    name       = "default"
    node_count = 1
    vm_size    = "Standard_D2_v2"
  }

  identity {
    type = "SystemAssigned"
  }

  network_profile {
    network_plugin = "azure"
    network_policy = "azure"
  }
}

補足:

  • 変更前: ポリシーエンジンを指定しません。実際のネットワーク機能とワークロードの通信制限を確認する必要があります。
  • 変更後: Azure のポリシーエンジンを選びます。この設定だけで、個々の Pod の許可通信が定義されるわけではありません。

参考資料