You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何连接Azure Kubernetes API并获取普通用户身份认证令牌?

问题根因说明

开启AAD集成和RBAC的AKS集群,ListClusterUserCredentials返回的kubeconfig默认不会携带静态身份令牌,而是配置了AAD身份认证的exec插件规则,需要用户主动完成AAD身份验证后动态生成令牌,这和ListClusterAdminCredentials返回的长期静态管理员令牌逻辑完全不同,设计上就是避免普通用户拿到高权限的长期凭证。

可行解决方案

方案1:通过kubectl自动获取令牌(适合命令行场景)

  • 普通用户先安装kubectl和Azure CLI工具,执行az login登录自身的AAD普通账号
  • 执行az aks get-credentials --resource-group <资源组名> --name <集群名>,自动拉取对应用户身份的kubeconfig到本地
  • 执行任意kubectl命令(比如kubectl get pods),会自动触发AAD认证流程,完成后本地会缓存有效期通常为1小时的访问令牌,你可以在本地kubeconfig文件中找到user.exec字段生成的token值,这个令牌可以直接用于调用Kubernetes API。

方案2:手动调用AAD接口获取令牌(适合直接调用API的场景)

不需要依赖kubectl或者Azure CLI,普通用户可以直接通过AAD的OAuth2接口申请AKS集群的访问令牌:

  • 先确认AAD租户ID、AKS集群的全局默认应用ID(固定为6dae42f8-4368-4678-94ff-3960e28e3630)
  • 普通用户通过AAD密码授权、设备码授权等流程,向https://login.microsoftonline.com/<租户ID>/oauth2/v2.0/token发起请求,申请scope为6dae42f8-4368-4678-94ff-3960e28e3630/.default的访问令牌
  • 拿到返回的access_token字段后,直接在调用Kubernetes API的时候加到请求头Authorization: Bearer <access_token>即可完成身份认证

注意:该令牌的权限完全由该用户在AKS RBAC中的绑定角色决定,不会超出你分配的只读等权限范围,无需担心越权问题。

权限配置校验

如果拿到令牌后调用API返回403 Forbidden,需要确认你已经给该普通用户绑定了对应的AKS RBAC角色,比如只读权限可以绑定view集群角色,示例命令:

kubectl create clusterrolebinding <绑定名> --clusterrole=view --user=<用户的AAD主体名,通常为邮箱地址>

内容的提问来源于stack exchange,提问作者Erylis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:27:04