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