Azure上K8s各类主体权限分配差异及相关主体咨询
两个身份的权限场景差异
azurerm_kubernetes_cluster.[name].identity.0.principal_id
这个是AKS集群控制平面托管身份的主体ID,由AKS的控制面管理进程使用,专门用来执行Azure资源侧的集群管理操作,需要分配的权限通常包括:
- 资源组下创建负载均衡、公网IP、路由表等网络资源的权限
- 管理节点虚拟机规模集、数据磁盘生命周期的权限
- ACR拉取权限(如果开启了AKS与ACR的官方集成,控制面会自动将拉取权限同步给节点侧)
- Azure CNI、Key Vault CSI驱动等网络、存储集成组件的控制面操作权限
azurerm_kubernetes_cluster.[name].kubelet_identity[0].object_id
这个是AKS集群节点侧kubelet进程的托管身份主体ID,作用于所有集群节点上的kubelet服务,适用场景包括:
- kubelet拉取容器镜像(如果没有开启ACR官方集成,单独给这个身份分配ACR拉取权限即可生效)
- 节点上运行的系统组件(比如日志、监控采集代理)访问Azure资源的身份凭证
- 未分配独立Pod身份的工作负载,默认会继承该身份的权限访问Azure资源
注意:如果你的AKS使用用户自行分配的托管身份而非系统自动生成的托管身份,上述两个身份的权限逻辑完全一致,只是对应你预先创建的身份ID。
AKS其他常用相关身份主体
除了上述两个核心身份外,不同场景下你还可能需要给以下身份分配权限:
- 节点池独立托管身份:如果你给特定节点池单独配置了托管身份,对应主体为
azurerm_kubernetes_cluster_node_pool.[name].identity[0].principal_id,该节点池内的节点kubelet会优先使用这个身份,而非集群全局的kubelet身份 - Workload Identity:给单个Pod分配的独立托管身份,权限仅作用于对应Pod,是生产环境工作负载访问Azure资源的推荐方案,符合最小权限原则
- 附加组件托管身份:开启Azure Monitor、Application Gateway Ingress、Key Vault CSI Provider等官方附加组件时,每个组件会生成独立的托管身份,需要按需给这些身份分配对应资源的访问权限,比如Key Vault CSI组件的身份需要Key Vault的机密读取权限
内容的提问来源于stack exchange,提问作者mibollma
相关产品推荐
相关产品推荐

