身分綁定是 Azure Kubernetes Service (AKS) 的一項功能,可延伸現有的工作負載身分功能,以解決使用者指派受控識別 (UAMI) 上同盟身分認證 (FIC) 的擴展性限制。 在 AKS 的工作負載識別中,單一 UAMI 最多只能有 20 個 FIC。 大型 Kubernetes 平台部署可能涵蓋超過 20 個叢集(每個叢集有獨特的發行者),或包含多種 <namespace, service-account> 組合,需映射至同一 UAMI,耗盡 FIC 配額。
身份綁定透過允許多個 AKS 叢集共用同一 UAMI,使用每個 UAMI 的單一 FIC,來解決此限制。 此方法大幅提升了擴展性,並簡化了需要 Microsoft Entra 認證的大型 AKS 環境的操作。
什麼是身份綁定?
身份綁定是指 一個 UAMI 與 一個 AKS 叢集之間的資源映射,這些叢集的工作負載需要以該身份進行 Microsoft Entra 認證。
假設您有 UAMI MI-1,在叢集 AKS-cluster-1、AKS-cluster-2 和 AKS-cluster-3 執行的工作負載需要它。 你可以建立三個身分綁定來將 MI-1 映射到這些叢集中的每一個:
-
身份綁定
IB-A映射MI-1到AKS-cluster-1。 -
身份綁定
IB-B映射MI-1到AKS-cluster-2。 -
身份綁定
IB-C映射MI-1到AKS-cluster-3。
即使多個叢集需要相同的 UAMI,每個 UAMI 也只會建立 一個 聯邦身份憑證,以解決先前 20 個 FIC 的限制。 當你建立身份綁定時,AKS 會自動建立(或重用)該 UAMI 的單一 FIC。 以下圖示說明先前工作負載身份模型與新身份綁定模型之間的差異:
在建立身分識別繫結,且 UAMI 已授權給叢集後,您必須定義 ClusterRole 和 ClusterRoleBinding 物件,指定為了取得 Microsoft Entra 權杖而使用該受控身分識別時所允許的命名空間與服務帳戶 (精細指定或集體指定)。
在 Azure Identity 客戶端函式庫中使用身份綁定
要在您的應用程式工作負載中使用身份綁定,請遵循以下步驟:
- 確保你使用的是最低要求的 Azure Identity 套件。
- 使用
WorkloadIdentityCredential並選擇使用此功能。 此功能無法在ManagedIdentityCredential或DefaultAzureCredential中支援。
下表說明了每個支援語言的最低套件版本及如何啟用身份綁定:
| 語言 | Package | 最低版本 | 如何啟用 |
|---|---|---|---|
| .NET |
Azure.Identity 或 Azure.Core |
僅限 v1.18.0-beta.3 或 v1.55.0 或更新版本 |
WorkloadIdentityCredential 身份綁定模式預設為停用。 將 WorkloadIdentityCredentialOptions.IsAzureProxyEnabled 設定為 true。 |
| Go | azidentity | v1.14.0-beta.3 或更新版本 | 將 WorkloadIdentityCredentialOptions.EnableAzureProxy 設定為 true。 |
| JAVA | azure-identity | v1.19.0-beta.2 或更新版本 | 在 enableAzureProxy() 上呼叫 WorkloadIdentityCredentialBuilder。 |
| JavaScript | @azure/identity | 4.14.0-beta.2 或更新版本 | 設定enableAzureProxy為true在WorkloadIdentityCredentialOptions。 |
| Python | azure-identity | 1.26.0b2 或更新版本 | 在 enable_azure_proxy=True 中設定 WorkloadIdentityCredential。 |
備註
.NET 的身份識別綁定的支援僅限於 Azure.Identity v1.18.0-beta.3,或作為替代方案,使用 Azure.Core v1.55.0 或更新版本。 目前沒有其他版本的 Azure.Identity 包含此功能。
常見問題集 (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.microsoftonline.com,工作負載才能交換服務帳戶權杖來獲取 Microsoft Entra 存取權杖。 透過身份綁定,令牌交換請求會經過由 AKS 操作的叢集專用身份綁定代理。 不需要直接通道到login.microsoftonline.com來進行代幣交換。
身份綁定有哪些限制?
在配置有 API 伺服器虛擬網路整合的叢集上,身份綁定尚未被支援。