AKS 服务权限参考

创建群集时,AKS 会代表用户生成或修改在创建和运行群集时所需的资源,例如 VM 和 NIC。 此标识与群集的标识权限不同,后者是在群集创建过程中创建的。

有关用于授予这些权限的内置角色,请参阅 用于容器的 Azure 内置角色。 有关向服务主体授予自定义虚拟网络所需的权限的工作示例,请参阅 将服务主体与 AKS 配合使用。 有关四种 AKS 标识方案的方向,请参阅 AKS 的访问和标识选项

创建和管理群集权限的身份

创建和操作群集的身份需要以下权限。

许可 原因
Microsoft.Compute/diskEncryptionSets/read 必需读取磁盘加密集 ID。
Microsoft.Compute/proximityPlacementGroups/write 必需用于更新邻近放置组。
Microsoft.Network/applicationGateways/read
Microsoft.Network/applicationGateways/write
Microsoft.Network/virtualNetworks/subnets/join/action
配置应用程序网关和加入子网时必需。
Microsoft.Network/virtualNetworks/subnets/join/action 使用自定义 VNET 为子网配置网络安全组时必需。
Microsoft.Network/publicIPAddresses/join/action
Microsoft.Network/publicIPPrefixes/join/action
在标准负载均衡器上配置出站公共 IP 时必需。
Microsoft.OperationalInsights/workspaces/sharedkeys/read
Microsoft.OperationalInsights/workspaces/read
Microsoft.OperationsManagement/solutions/write
Microsoft.OperationsManagement/solutions/read
Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
需要创建和更新 Log Analytics 工作区以及 Azure 容器监控。
Microsoft.Network/virtualNetworks/joinLoadBalancer/action 在配置基于 IP 的负载均衡器后端池时是必需的。

AKS 群集标识权限

以下权限由 AKS 群集标识使用,该标识随 AKS 群集创建并与该群集相关联。 使用每个权限的原因如下:

许可 原因
Microsoft.ContainerService/managedClusters/*
创建用户和运行群集时必需
Microsoft.Network/loadBalancers/delete
Microsoft.Network/loadBalancers/read
Microsoft.Network/loadBalancers/write
为 LoadBalancer 服务配置负载均衡器时必需。
Microsoft.Network/publicIPAddresses/delete
Microsoft.Network/publicIPAddresses/read
Microsoft.Network/publicIPAddresses/write
为 LoadBalancer 服务查找和配置公共 IP 时必需。
Microsoft.Network/publicIPAddresses/join/action 为 LoadBalancer 服务配置公共 IP 时必需。
Microsoft.Network/networkSecurityGroups/read
Microsoft.Network/networkSecurityGroups/write
为 LoadBalancer 服务创建或删除安全规则时必需。
Microsoft.Compute/disks/delete
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/locations/DiskOperations/read
配置 AzureDisk 时必需。
Microsoft.Storage/storageAccounts/delete
Microsoft.Storage/storageAccounts/listKeys/action
Microsoft.Storage/storageAccounts/read
Microsoft.Storage/storageAccounts/write
Microsoft.Storage/operations/read
为 AzureFile 或 AzureDisk 配置存储帐户时必需。
Microsoft.Network/routeTables/read
Microsoft.Network/routeTables/routes/delete
Microsoft.Network/routeTables/routes/read
Microsoft.Network/routeTables/routes/write
Microsoft.Network/routeTables/write
需要为节点配置路由表和路由。
Microsoft.Compute/virtualMachines/read 查找 VMAS 中的虚拟机的信息(例如区域、容错域、大小和数据磁盘)时必需。
Microsoft.Compute/virtualMachines/write 将 AzureDisk 附加到 VMAS 中的虚拟机时必需。
Microsoft.Compute/virtualMachineScaleSets/read
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read
Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read
查找虚拟机规模集中的虚拟机的信息(例如区域、容错域、大小和数据磁盘)时必需。
Microsoft.Network/networkInterfaces/write 将 VMAS 中的虚拟机添加到负载均衡器后端地址池时必需。
Microsoft.Compute/virtualMachineScaleSets/write 要将虚拟机规模集添加到负载均衡器的后端地址池中,并在虚拟机规模集中扩展节点。
Microsoft.Compute/virtualMachineScaleSets/delete 需要将虚拟机规模集从负载均衡器后端地址池中删除,并减少虚拟机规模集中的节点数量。
Microsoft.Compute/virtualMachineScaleSets/virtualmachines/write 必需附加 AzureDisks,并将虚拟机规模集中的虚拟机添加到负载均衡器。
Microsoft.Network/networkInterfaces/read 搜索 VMAS 中的虚拟机的内部 IP 和负载均衡器后端地址池时必需。
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read 搜索虚拟机规模集中的虚拟机的内部 IP 和负载均衡器后端地址池时必需。
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipconfigurations/publicipaddresses/read 查找虚拟机规模集中的虚拟机的公共 IP 时必需。
Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/read
验证另一个资源组中是否存在内部负载均衡器的子网时必需。
Microsoft.Compute/snapshots/delete
Microsoft.Compute/snapshots/read
Microsoft.Compute/snapshots/write
配置 AzureDisk 的快照时必需。
Microsoft.Compute/locations/vmSizes/read
Microsoft.Compute/locations/operations/read
必需查找虚拟机大小以确定 AzureDisk 卷限制。

其他 AKS 群集标识权限

使用特定属性创建群集时,你将需要群集标识以下额外权限。 不会自动分配这些权限,因此必须在创建群集标识之后将这些权限添加到该标识。

许可 原因
Microsoft.Network/networkSecurityGroups/write
Microsoft.Network/networkSecurityGroups/read
如果使用另一资源组中的网络安全组,则该项为必须。 为 LoadBalancer 服务配置安全规则时必需。
Microsoft.Network/virtualNetworks/subnets/read
Microsoft.Network/virtualNetworks/subnets/join/action
使用另一资源组(例如自定义 VNET)中的子网时必需。
Microsoft.Network/routeTables/routes/read
Microsoft.Network/routeTables/routes/write
如果使用的子网与不同资源组中的路由表相关联(例如,采用自定义路由表的自定义虚拟网络(VNET)),则需要此项配置。 若要验证是否已存在一个对应于另一资源组中的子网的子网,则需要此权限。
Microsoft.Network/virtualNetworks/subnets/read 如果使用另一资源组中的内部负载均衡器,则需要此权限。 验证资源组中是否已存在内部负载均衡器的子网时必需。
Microsoft.Network/privatednszones/* 使用另一资源组(例如自定义 privateDNSZone)中的专用 DNS 区域时必需。

AKS 节点映射标识

分配给 AKS 节点的 kubelet 托管标识用于从 Azure 容器注册表拉取映像。 所需的数据操作取决于注册表 的角色分配权限模式

配置有“RBAC 注册表权限”的注册表

许可 原因
Microsoft.ContainerRegistry/registries/pull/read 从 Azure 容器注册表拉取容器映像所必需的。 由 AcrPull 内置角色授予。

配置有“RBAC 注册表 + ABAC 存储库权限”的注册表

已启用 ABAC 的模式正在成为新的 Azure 容器注册表的默认值。 在此模式下,不遵循旧 AcrPull 角色,必须向 kubelet 标识授予启用 ABAC 的等效角色权限。 有关详细信息,请参阅 Azure 容器注册表中的 Azure ABAC 存储库权限

许可 原因
Microsoft.ContainerRegistry/registries/repositories/content/read
Microsoft.ContainerRegistry/registries/repositories/metadata/read
需要从存储库拉取容器映像并读取映像标记和元数据。 由 Container Registry Repository Reader 内置角色授予,该角色可以选择范围限定为使用 ABAC 条件的特定存储库。
Microsoft.ContainerRegistry/registries/catalog/repositories/read 仅当 kubelet 标识需要列出注册表中的所有存储库时才是必需的。 由 Container Registry Repository Catalog Lister 内置角色授予。 此角色不支持 ABAC 条件。

后续步骤