설명
AKS 제어 플레인은 클러스터 전체를 제어하는 핵심 관리 인터페이스입니다. 퍼블릭 API 엔드포인트의 접근 범위가 넓으면 외부의 연결 시도가 늘어날 수 있습니다. 퍼블릭 엔드포인트가 인증 없는 접근을 뜻하지는 않으며, 프라이빗 클러스터도 인증과 최소 권한 설정이 필요합니다.
잠재적 영향
- 클러스터 API가 외부 스캔과 공격 시도의 대상이 될 수 있습니다.
- 접근 제한을 잘못 변경하면 관리 도구와 배포 작업이 중단될 수 있습니다.
해결 방법
- 내부 접근만 필요한 클러스터는
private_cluster_enabled = true를 검토하고 관리 네트워크의 라우팅과 DNS를 먼저 구성하세요. VPN이나 ExpressRoute 등 필요한 연결을 시험하세요. - 퍼블릭 API가 필요하면 승인된 IP 범위로 제한하고 인증·RBAC를 유지하세요. Terraform 계획에서 클러스터 교체 여부를 확인하고 기존 워크로드와 관리 경로의 전환을 준비하세요.
예시
API 노출 설정만 비교하는 발췌입니다. 노드 풀과 ID 등 나머지 필수 구성은 생략했습니다. 비공개 경로와 DNS를 준비하기 전에 기존 클러스터에 적용하지 마세요.
변경 전
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"
private_cluster_enabled = false
}
변경 후
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"
private_cluster_enabled = true
}
설명:
- 변경 전: 프라이빗 클러스터를 사용하지 않습니다. 실제 퍼블릭 API 접근 제한과 인증은 별도로 확인해야 합니다.
- 변경 후: API 서버의 비공개 접근을 사용합니다. 이 설정이 애플리케이션의 LoadBalancer나 Ingress까지 비공개로 만드는 것은 아닙니다.