AKS 네트워크 정책 설정 점검

지원되는 정책 엔진과 실제 NetworkPolicy 규칙으로 필요한 파드 통신만 허용하세요.

설명

Kubernetes 네트워크 정책은 워크로드 간 통신을 필요한 범위로 제한하는 수단입니다. 정책을 적용하는 네트워크 구성과 실제 NetworkPolicy 리소스를 함께 마련해야 하며, 정책 엔진을 선택하는 것만으로 통신이 자동 제한되지는 않습니다.

잠재적 영향

  • 불필요한 파드 간 접근이 허용될 수 있습니다.
  • 침해된 워크로드에서 다른 서비스로 접근할 수 있는 범위가 커질 수 있습니다.

해결 방법

  • 네트워크 플러그인과 데이터 플레인에 맞는 지원 정책 엔진을 선택하세요. AzureRM은 azure, calico, cilium을 지원하므로 각 조합의 요구 사항을 확인하세요.
  • 파드 선택자와 인바운드·아웃바운드 규칙을 정의하고 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 정책 엔진을 선택합니다. 이 설정만으로 개별 파드의 허용 통신이 정의되지는 않습니다.

참조