Azure AKS 用户凭据登录到 K8 仪表板和 RBAC 内置角色

Azure AKS User Credentials Login to K8 Dashboard and RBAC Built-in Roles

根据 documentation,Azure Kubernetes 服务集群用户角色允许访问 Microsoft。ContainerService/managedClusters/listClusterUserCredential/action API 仅调用。

我的用户是对 AKS 群集具有 Azure Kubernetes Service Cluster User Role 权限的 AD 组的一部分,并且所有群集角色和群集角色绑定都已通过 kubectl 应用。

我可以通过以下步骤仔细检查并验证对仪表板的访问权限和权限是否有效:

 1. az login
 2. az aks get-credentials --resource-group rg --name aks
 3. kubectl proxy
 4. Open web connection
 5. Get prompt on terminal to login via device code flow
 6. Return to web connection on dashboard
 7. I can correctly verify that my permissions apply, 
 i.e. deleting a job does not work and this falls in line with my
    kubectl clusterrole bindings to the Azure AD group.

然而,当我尝试使用 az aks browse 命令像这样自动打开浏览器时,即没有 kubectl proxy:

 1. az login
 2. az aks get-credentials --resource-group rg --name aks
 3. az aks browse --resource-grouprg --name aks

我不断收到以下错误:

The client 'xxx' with object id 'yyyy' does not have authorization to perform action 
'Microsoft.ContainerService/managedClusters/read' over scope 
'/subscriptions/qqq/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/aks' 
or the scope is invalid. If access was recently granted, please refresh your credentials.

一个 dirty 解决方案是在该 AD 组的 AKS 集群上应用 Reader 角色 - 然后这个问题就消失了,但为什么 az aks browse 需要 Microsoft.ContainerService/managedClusters/read 权限为什么 Azure Kubernetes Service Cluster User Role 中没有包含它?

这里发生了什么?

目前,命令

az aks browse --resource-grouprg --name aks 不适用于较新版本的 AKS,您可以在此处找到完整的详细信息。

https://github.com/MicrosoftDocs/azure-docs/issues/23789

此外,您当前的问题也可能是您的用户 XXX 没有 Subscription/ResourceGroup 级别的正确 IAM 访问级别。