Azure Lighthouse委托订阅:如何不加入客户租户添加服务商用户到AKS集群?
解决Azure Lighthouse服务商用户访问AKS集群内资源的问题
以下是几种无需将服务商用户加入客户租户,就能访问委托订阅中AKS集群内资源的可行方案:
1. 跨租户Azure AD服务主体方案
在服务商租户创建服务主体,通过Azure Lighthouse赋予其客户AKS订阅的权限,再在AKS中绑定Kubernetes角色:
- 第一步:在服务商租户创建Azure AD应用(服务主体),记录其Object ID。
- 第二步:通过Azure Lighthouse,在客户租户的目标订阅中,给该服务主体分配
Azure Kubernetes Service Cluster User Role或Azure Kubernetes Service Cluster Admin Role权限。 - 第三步:在AKS集群中创建角色绑定,示例命令:
# 绑定服务主体到cluster-admin角色(按需调整为其他Kubernetes角色) kubectl create clusterrolebinding sp-cluster-access --clusterrole=cluster-admin --user="oid:<服务商服务主体Object ID>" - 服务商用户可以通过Azure CLI以该服务主体身份认证,或配置凭据后访问AKS集群。
2. 跨租户Azure AD安全组方案
用服务商租户的AD组统一管理访问权限,AKS支持跨租户AD组身份验证:
- 第一步:在服务商租户创建Azure AD安全组,将需要访问AKS的用户加入组,记录组的Object ID。
- 第二步:通过Azure Lighthouse,在客户租户的AKS订阅中,给这个跨租户组分配AKS集群的访问权限(如上述的Cluster User/Admin Role)。
- 第三步:在AKS集群中创建角色绑定,示例命令:
# 绑定跨租户AD组到指定Kubernetes角色 kubectl create clusterrolebinding ad-group-cluster-access --clusterrole=cluster-admin --group="<服务商AD组Object ID>" - 服务商用户登录自己的租户账号后,切换到客户订阅上下文,执行
az aks get-credentials获取集群凭据,即可直接用kubectl操作集群内资源。
3. Azure AD工作负载身份(适合自动化场景)
如果是自动化工具或应用需要访问AKS,可通过工作负载身份实现跨租户认证:
- 在客户租户的AKS集群中启用工作负载身份功能。
- 建立服务商租户服务主体与AKS中服务账号的信任关系,配置对应的角色绑定。
- 这种方式完全基于Azure AD的跨租户身份信任,无需在客户租户内创建额外身份,适合CI/CD流水线等自动化场景。
注意事项
- 配置角色绑定时必须使用身份的Object ID,避免跨租户名称冲突导致认证失败。
- 服务商用户操作前需确保已切换到客户租户的订阅上下文:
az account set --subscription <客户订阅ID>。 - 确认Azure Lighthouse的委托权限已正确覆盖AKS集群所在的资源组或订阅。
内容的提问来源于stack exchange,提问作者Jitu
相关产品推荐
相关产品推荐

