标识绑定是 Azure Kubernetes 服务(AKS)的预览功能,它扩展了现有的 工作负荷标识功能 ,以解决用户分配托管标识(UAMIs)上联合标识凭据(FIC)的缩放限制。 对于 AKS 的工作负荷标识,单个 UAMI 不能超过 20 个 FIC。 大型 Kubernetes 平台部署可能跨越 20 多个群集(每个群集具有唯一的颁发者),或者有许多 <namespace, service-account> 组合需要映射到同一 UAMI,从而耗尽 FIC 配额。
标识绑定通过允许多个 AKS 群集使用每个 UAMI 的单个 FIC 共享同一 UAMI 来解决此限制。 此方法显著提高了可扩展性,并简化了需要 Microsoft Entra 身份验证的大规模 AKS 环境的操作。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
什么是标识绑定?
标识绑定是 一个 UAMI 和 一个 AKS 群集之间的资源映射,其中包含需要使用该标识进行Microsoft Entra 身份验证的工作负荷。
假设你有一个 UAMI,需要被运行在群集 MI-1、AKS-cluster-1、AKS-cluster-2和 AKS-cluster-3的工作负荷使用。 可以创建三个标识绑定,将 MI-1 映射到这些群集中的每一个:
-
标识绑定
IB-A映射到MI-1AKS-cluster-1. -
标识绑定
IB-B映射到MI-1AKS-cluster-2. -
标识绑定
IB-C映射到MI-1AKS-cluster-3.
即使在多个集群中需要相同的 UAMI,对于每个 UAMI 也只创建一个联邦身份凭证,从而解决之前的 20 个 FIC 限制问题。 创建标识绑定时,AKS 会自动为该 UAMI 创建一个单独的 FIC(或重用现有 FIC)。 下图说明了以前的工作负荷标识模型和新标识绑定模型之间的差异:
创建标识绑定并为群集授权 UAMI 后,您必须定义 ClusterRole 和 ClusterRoleBinding 对象,这些对象指定被允许使用该托管标识进行 Microsoft Entra 令牌获取的命名空间和服务帐户(可以是精细详细的或集体的)。
将标识绑定与 Azure 标识客户端库配合使用
若要将标识绑定用于应用程序工作负载,请执行以下步骤:
- 确保使用最低要求的 Azure 标识包。
- 使用
WorkloadIdentityCredential并选择加入该功能。 此功能在ManagedIdentityCredential或DefaultAzureCredential中不支持。
下表概述了最低包版本以及如何为每个受支持的语言启用标识绑定:
| 语言 | Package | 最低版本 | 如何启用 |
|---|---|---|---|
| .NET | Azure.Identity | v1.18.0-beta.2 或更高版本 |
WorkloadIdentityCredential 默认情况下禁用标识绑定模式。 将 WorkloadIdentityCredentialOptions.IsAzureKubernetesTokenProxyEnabled 设置为 true。 |
| Go | azidentity | v1.14.0-beta.3 或更高版本 | 将 WorkloadIdentityCredentialOptions.EnableAzureProxy 设置为 true。 |
| Java | azure-identity | v1.19.0-beta.1 或更高版本 | 在 enableAzureTokenProxy() 上调用 WorkloadIdentityCredentialBuilder。 |
| JavaScript | @azure/identity | 4.14.0-beta.2 或更高版本 | 在WorkloadIdentityCredentialOptions中设置enableAzureProxy到true。 |
| Python | azure-identity | 1.26.0b2 或更高版本 | 在 enable_azure_proxy=True 中设置 WorkloadIdentityCredential。 |
常见问题 (FAQ)
使用相同 UAMI 的群集是否需要具有相同标识(即命名空间和服务帐户相同)?
否。 标识绑定不需要命名空间/服务帐户相同。 由群集操作员来显式授权每个群集内的命名空间和服务帐户,这些帐户允许通过基于角色的访问控制(RBAC)使用托管标识。
是否可以为同一 UAMI 创建多个标识绑定?
是的。 AKS 为该 UAMI 维护的 OIDC 颁发者 URL 在所有引用同一托管标识的标识绑定中都是相同的。
创建标识绑定需要哪些权限?
所需的 Azure 资源管理器(ARM)权限:
Microsoft.ContainerService/managedClusters/identityBindings/*Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/*
注释
创建标识绑定时,AKS 会自动创建 FIC。 如果调用方缺少创建 FIC 资源的权限,则标识绑定创建将失败。
所需的 Kubernetes 权限:
- 能够创建
ClusterRole和ClusterRoleBinding对象(群集管理员或等效对象)。
删除 UAMI 的所有身份绑定后,自动创建的 FIC 会有什么变化?
今天,当删除引用 UAMI 的最后一个标识绑定时,FIC 不会进行自动垃圾回收。 只有在验证已删除该 UAMI 的所有标识绑定后,操作员才应手动清理 FIC,以避免中断剩余的依赖项。
标识绑定存在哪些网络先决条件?
以前,工作负载标识需要出口到login.partner.microsoftonline.cn,以便工作负载可以交换服务帐户令牌为Microsoft Entra访问令牌。 使用标识绑定时,令牌交换请求通过由 AKS 运行的集群特定标识绑定代理进行路由。 不需要直接访问 login.partner.microsoftonline.cn 进行令牌交换。