在 Azure Kubernetes Service (AKS) 上建立 OpenID Connect 提供者

OpenID Connect (OIDC) 會擴充 OAuth 2.0 授權通訊協定,以用作 Microsoft Entra ID 所發行的另一個驗證通訊協定。 您可以使用 OIDC,在您的 Azure Kubernetes Service (AKS) 叢集上透過稱為「識別碼權杖」的安全性權杖,在啟用 OAuth 的應用程式之間啟用單一登入 (SSO)。 透過 AKS 叢集,您可以啟用 OpenID Connect (OIDC) 簽發者,讓 Microsoft Entra ID 或其他雲端提供者進行身分識別與存取管理平台,以探索 API 伺服器的公開簽署金鑰。

AKS 會自動且定期輪替金鑰。 如果您不想等候,可以立即手動輪替金鑰。 OIDC 提供者所簽發之權杖的最大存留期為一天。

警告

啟用現有叢集上的 OIDC 簽發者會將目前的服務帳戶權杖簽發者變更為新的值,將導致停機時間並重新啟動 API 伺服器。 如果在您啟用 OIDC 簽發者之後,使用服務權杖的應用程式 Pod 仍處於失敗狀態,建議您手動重新啟動 Pod。

在本文中,了解如何建立、更新和管理叢集的 OIDC 簽發者。

重要

一旦在叢集上啟用 OIDC 簽發者,便無法將其停用。

必要條件

  • Azure CLI 2.42.0 版或更新版本。 執行 az --version 來尋找您的版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI
  • AKS 支援 1.22 版和更新版本的 OIDC 簽發者。

使用 OIDC 簽發者建立 AKS 叢集

可以使用 az aks create 命令建立 AKS 叢集,並搭配 --enable-oidc-issuer 參數來使用 OIDC 簽發者。 下列範例會建立名稱為 myAKSCluster 的叢集,其在 myResourceGroup 中包含一個節點:

az aks create -g myResourceGroup -n myAKSCluster --node-count 1 --enable-oidc-issuer

使用 OIDC 簽發者更新 AKS 叢集

可以使用 az aks update 命令搭配 --enable-oidc-issuer 參數來更新 AKS 叢集,以使用 OIDC 簽發者。 下列範例會更新名為 myAKSCluster 的叢集:

az aks update -g myResourceGroup -n myAKSCluster --enable-oidc-issuer 

顯示 OIDC 簽發者 URL

若要取得 OIDC 簽發者 URL,請執行 az aks show 命令。 取代叢集名稱和資源群組名稱的預設值。

az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

根據預設,簽發者會設定為使用基底 URL https://{region}.oic.prod-aks.azure.com,其中 {region} 的值符合 AKS 叢集部署所在的位置。

輪替 OIDC 金鑰

若要輪替 OIDC 金鑰,請執行 az aks oidc-issuer 命令。 取代叢集名稱和資源群組名稱的預設值。

az aks oidc-issuer rotate-signing-keys -n myAKSCluster -g myResourceGroup

重要

輪替金鑰之後,舊金鑰 (key1) 會在 24 小時後到期。 這表示舊金鑰 (key1) 和新金鑰 (key2) 在 24 小時內都有效。 如果您想要讓舊金鑰 (key1) 立即失效,則需要輪替 OIDC 金鑰兩次,然後使用投射的服務帳戶權杖重新啟動 Pod。 然後 key2 和 key3 有效,而 key1 無效。

檢查 OIDC 金鑰

取得 OIDC 簽發者 URL

若要取得 OIDC 簽發者 URL,請執行 az aks show 命令。 取代叢集名稱和資源群組名稱的預設值。

az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

輸出應該如以下所示:

https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/

根據預設,簽發者會設定為使用基底 URL https://{region}.oic.prod-aks.azure.com/{uuid},其中 {region} 的值符合 AKS 叢集部署所在的位置。 值 {uuid} 代表 OIDC 金鑰,這是為每個叢集隨機產生的 GUID,是不可變的。

取得探索文件

若要取得探索文件,請複製 URL https://(OIDC issuer URL).well-known/openid-configuration 並在瀏覽器中開啟。

輸出應該如以下所示:

{
  "issuer": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/",
  "jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
  "response_types_supported": [
    "id_token"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ]
}

取得 JWK 集合文件

若要取得 JWK 集合文件,請從探索文件複製 jwks_uri,並將其貼到瀏覽器的網址列中。

輸出應該如以下所示:

{
  "keys": [
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    },
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    }
  ]
}

在金鑰輪替期間,探索文件中還存在另一個金鑰。

下一步