Azure Kubernetes Service(AKS)的身分識別繫結

身分綁定是 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 對應到多個 AKS 叢集,同時使用單一 FIC,另一張則顯示工作負載身分識別對應。

在建立身分識別繫結,且 UAMI 已授權給叢集後,您必須定義 ClusterRole 和 ClusterRoleBinding 物件,指定為了取得 Microsoft Entra 權杖而使用該受控身分識別時所允許的命名空間與服務帳戶 (精細指定或集體指定)。

在 Azure Identity 客戶端函式庫中使用身份綁定

要在您的應用程式工作負載中使用身份綁定,請遵循以下步驟:

  1. 確保你使用的是最低要求的 Azure Identity 套件。
  2. 使用 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 伺服器虛擬網路整合的叢集上,身份綁定尚未被支援。