启用Azure RBAC的AKS集群创建ClusterRoles无需escalate权限方案问询
限制产生的原因
- K8s原生安全机制约束:K8s RBAC默认存在权限提升防护规则,禁止用户创建权限范围超出自身当前持有权限的ClusterRole/Role,避免普通用户通过创建高权限角色实现未授权提权,只有明确持有
escalate权限的主体可以不受该规则约束。 - Azure RBAC与K8s RBAC的映射逻辑:启用Azure RBAC的AKS集群会将K8s侧的所有操作校验前置到Azure ARM权限层,K8s原生的
clusterroles/escalate权限对应到ARM层面的权限标识就是Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action,当你的操作触发K8s侧的escalate校验时,AKS会同步校验你是否持有对应的ARM权限。 - 最小权限场景的触发逻辑:你配置的是最小权限自定义角色,角色本身持有的权限范围远低于你需要创建的ClusterRole的权限范围,因此天然触发了escalate权限校验要求。
可替代escalate权限的方案
- 预配置全量匹配权限:给自定义角色预先配置所有你需要创建的ClusterRole中包含的全部对应权限,只要自定义角色本身的权限范围完全覆盖你要创建的所有ClusterRole的权限范围,就不会触发escalate校验,无需配置该权限即可正常创建ClusterRole。
- 拆分权限创建范围:将ClusterRole创建任务按权限域拆分,配置多个专用的最小权限角色,每个角色仅负责创建对应权限域的ClusterRole,且每个角色预先配置对应权限域的全量权限,即可实现所有角色都无需配置escalate权限。
- 改用K8s原生RBAC授权:不通过Azure ARM自定义角色分配ClusterRole创建权限,直接在AKS集群内给对应的AAD用户/服务主体绑定K8s原生ClusterRole,只要绑定的原生角色权限范围完全覆盖需要创建的ClusterRole的权限范围,就不需要配置Azure层面的escalate权限。
内容的提问来源于stack exchange,提问作者KernelPanic1978
相关产品推荐
相关产品推荐

