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

为何为启用RBAC的AKS配置Terraform Kubernetes数据源属性会报未授权错误

错误原因

你当前的配置使用了AKS普通kubeconfig中的静态客户端证书进行认证,但你的AKS集群启用了Azure AD集成RBAC后,这类静态证书默认没有被分配集群操作权限,你所属AD组的管理员权限仅对Azure AD身份生效,静态证书认证无法关联到你的AD账号权限,因此触发未授权错误。

解决方案

方案一:使用Azure AD身份认证(推荐,符合RBAC权限管理规范)

这种方式直接复用你当前已登录的Azure CLI身份进行AKS认证,权限和你所属的AD组完全匹配,无需依赖静态集群凭证。

前置要求

  • 本地已安装kubelogin认证插件
  • 已通过az login完成Azure账号登录,登录账号属于集群管理员AD组

修改kubernetes provider配置如下:

provider "kubernetes" {
  host                   = data.azurerm_kubernetes_cluster.k8s.kube_config.0.host
  cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.k8s.kube_config.0.cluster_ca_certificate)

  exec {
    api_version = "client.authentication.k8s.io/v1beta1"
    command     = "kubelogin"
    args = [
      "get-token",
      "--login",
      "azurecli",
      "--server-id",
      "6dae42f8-4368-4678-94ff-3960e28e3630"
    ]
  }
}

方案二:使用集群本地管理员凭证

如果你的AKS集群没有禁用本地管理员账户(即创建时local_account_disabled参数为false),可以直接拉取管理员级别的静态凭证进行认证,这种方式不需要依赖Azure AD认证,但是权限是集群最高权限,不推荐用于生产环境日常操作。

修改kubernetes provider配置如下:

provider "kubernetes" {
  host                   = data.azurerm_kubernetes_cluster.k8s.kube_admin_config.0.host
  client_certificate     = base64decode(data.azurerm_kubernetes_cluster.k8s.kube_admin_config.0.client_certificate)
  client_key             = base64decode(data.azurerm_kubernetes_cluster.k8s.kube_admin_config.0.client_key)
  cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.k8s.kube_admin_config.0.cluster_ca_certificate)
}
验证步骤

修改配置后重新执行terraform apply即可正常创建命名空间。如果仍有报错,可以先执行az aks get-credentials -g <你的AKS资源组名> -n <你的AKS集群名>获取集群kubeconfig,再执行kubectl auth can-i create namespace验证当前账号是否有对应权限,返回yes则说明权限正常,配置无误即可运行成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:48:03