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 を有効にします。既存の過剰なロールやバインディングが自動的に削除されるわけではありません。

参考資料