説明
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 を明示的に有効にします。実際の権限は、付与したロールとバインドによって決まります。