AKS クラスターの Kubernetes RBAC 設定の確認

AKS で Kubernetes RBAC を有効にし、ロールとバインドで必要な操作だけを許可します。

説明

Kubernetes RBAC は、ロールとバインドによって利用者やサービスアカウントの操作権限を制御します。AKS で無効になっていると、ロールに基づく権限制限を適用できません。テンプレートに設定がない場合は、実際のクラスターの状態を確認してください。

想定される影響

利用者やサービスアカウントが必要以上の操作を行えると、想定した範囲を超えてクラスターリソースを変更したり、データにアクセスしたりする可能性があります。

対処方法

クラスター構成に properties.enableRBAC: true を明示し、必要な Role、ClusterRole とバインドだけを付与してください。既存クラスターの実際の設定と管理者権限を確認し、一般利用者やサービスアカウントで操作の許可・拒否を試験してください。この設定は、aadProfile.enableAzureRBAC で選択する Azure RBAC による認可方式とは別です。

例

サポートされる API とマネージド ID を使ってクラスターを作成する例です。adminUserName と sshPublicKey に実際のアカウント名と公開鍵を指定し、対象リージョンで利用できる VM サイズを選んでください。Kubernetes のバージョンには、サービスがサポートする既定値を使用します。

変更前

bicep
param adminUserName string
param sshPublicKey string
param nodeVmSize string = 'Standard_D2s_v3'

resource aksCluster1 'Microsoft.ContainerService/managedClusters@2024-10-01' = {
  name: 'aksCluster1'
  location: resourceGroup().location
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    dnsPrefix: 'dnsprefix'
    agentPoolProfiles: [
      {
        name: 'agentpool'
        count: 2
        vmSize: nodeVmSize
        osType: 'Linux'
        mode: 'System'
      }
    ]
    linuxProfile: {
      adminUsername: adminUserName
      ssh: {
        publicKeys: [
          {
            keyData: sshPublicKey
          }
        ]
      }
    }
  }
}

RBAC の使用を明示していない構成です。省略されていることだけで、実際に無効だと判断しないでください。

変更後

bicep
param adminUserName string
param sshPublicKey string
param nodeVmSize string = 'Standard_D2s_v3'

resource aksCluster1 'Microsoft.ContainerService/managedClusters@2024-10-01' = {
  name: 'aksCluster1'
  location: resourceGroup().location
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    enableRBAC: true
    dnsPrefix: 'dnsprefix'
    agentPoolProfiles: [
      {
        name: 'agentpool'
        count: 2
        vmSize: nodeVmSize
        osType: 'Linux'
        mode: 'System'
      }
    ]
    linuxProfile: {
      adminUsername: adminUserName
      ssh: {
        publicKeys: [
          {
            keyData: sshPublicKey
          }
        ]
      }
    }
  }
}

RBAC を明示的に有効にします。実際の権限は、付与したロールとバインドによって決まります。

参考資料