AKS RBAC 비활성화

사용자와 서비스 계정에 필요한 Kubernetes 권한만 부여하세요.

설명

RBAC는 Kubernetes에서 누가 어떤 리소스를 보고 바꿀 수 있는지 정하는 기본 통제 수단입니다. 비활성화하면 사용자와 서비스 계정의 권한을 세밀하게 나누기 어렵습니다. 기능 활성화와 실제 역할·바인딩 설정은 함께 검토해야 합니다.

잠재적 영향

  • 사용자와 서비스 계정에 필요한 수준 이상 권한이 부여될 수 있습니다.
  • 네임스페이스와 리소스별 최소 권한 구성이 어려워질 수 있습니다.

해결 방법

  • role_based_access_control_enabled = true 또는 사용 중인 버전에 맞는 RBAC 설정을 활성화하세요. 기존 클러스터는 Terraform의 교체 계획과 운영 영향도 확인하세요.
  • 선택한 Kubernetes RBAC 또는 AKS용 Azure RBAC 방식에 맞춰 사용자·그룹·서비스 계정의 역할을 최소화하세요. 불필요한 관리자 바인딩을 제거하고 허용·거부되는 작업을 시험하세요.

예시

RBAC를 비교하며 네트워크 프로필에는 필요한 Azure CNI 플러그인을 명시했습니다. 리소스 그룹과 배포 환경에 필요한 나머지 설정은 별도로 준비하세요.

변경 전

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"

  role_based_access_control_enabled = false

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

  identity {
    type = "SystemAssigned"
  }

  tags = {
    Environment = "Production"
  }

  network_profile {
    network_plugin = "azure"
    network_policy = "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"

  role_based_access_control_enabled = true

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

  identity {
    type = "SystemAssigned"
  }

  tags = {
    Environment = "Production"
  }

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

설명:

  • 변경 전: Kubernetes RBAC를 비활성화합니다.
  • 변경 후: Kubernetes RBAC를 활성화합니다. 기존의 과도한 역할이나 바인딩을 자동으로 정리하지는 않습니다.

참조