创建群集时,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 条件。 |
后续步骤
- AKS 的访问和标识选项
- AKS 中的托管标识
- 将服务主体与 AKS 结合使用
- 适用于容器的 Azure 内置角色