AKS 감사 로그 수집 점검

조사에 필요한 Kubernetes API 감사 이벤트를 수집하고 실제 수신과 보존을 확인하세요.

설명

감사 로그는 권한 변경, 리소스 조작, 비정상적인 API 호출을 조사할 때 핵심 증거가 됩니다. kube-audit는 API 감사 이벤트를 수집하고 kube-audit-admin은 get·list 이벤트를 제외한 범위를 수집합니다. 필요한 작업의 기록이 없으면 사고 경위를 추적하기 어렵습니다.

잠재적 영향

  • 보안 사고 후 누가 어떤 Kubernetes API 작업을 수행했는지 확인하기 어려울 수 있습니다.
  • 권한 오남용이나 의심스러운 제어 플레인 활동에 대한 대응이 늦어질 수 있습니다.

해결 방법

  • AKS 클러스터를 대상으로 하는 azurerm_monitor_diagnostic_setting의 enabled_log에 조사 요구에 맞는 kube-audit 또는 kube-audit-admin을 지정하세요. 읽기 작업까지 필요하면 제외 범위를 고려하세요.
  • Log Analytics 등 승인된 대상으로 전송하고 실제 수신, 보존 기간과 접근 권한을 확인하세요. 수집만으로 경보가 생성되는 것은 아니므로 필요한 탐지와 대응도 구성하세요.

예시

AKS와 진단 설정의 일부입니다. 노드 풀, ID와 로그 대상 등 생략한 리소스는 별도로 준비하세요.

변경 전

hcl
resource "azurerm_kubernetes_cluster" "example" {
  name                = "example-aks"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks"
}

resource "azurerm_monitor_diagnostic_setting" "example" {
  name                       = "aks-diagnostics"
  target_resource_id         = azurerm_kubernetes_cluster.example.id
  log_analytics_workspace_id = azurerm_log_analytics_workspace.example.id

  enabled_log {
    category = "kube-apiserver"
  }
}

변경 후

hcl
resource "azurerm_kubernetes_cluster" "example" {
  name                = "example-aks"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks"
}

resource "azurerm_monitor_diagnostic_setting" "example" {
  name                       = "aks-diagnostics"
  target_resource_id         = azurerm_kubernetes_cluster.example.id
  log_analytics_workspace_id = azurerm_log_analytics_workspace.example.id

  enabled_log {
    category = "kube-audit"
  }
}

설명:

  • 변경 전: API 서버 운영 로그를 선택합니다. 필요한 감사 범주가 다른 진단 설정에 있는지도 확인해야 합니다.
  • 변경 후: kube-audit 범주를 선택해 API 감사 이벤트를 지정한 로그 대상으로 전송합니다.

참조