설명
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 정책 엔진을 선택합니다. 이 설정만으로 개별 파드의 허용 통신이 정의되지는 않습니다.