Share via


在容器深入解析中設定即時資料

若要從 Azure Kubernetes Service (AKS) 叢集使用容器深入解析來檢視即時資料,請設定驗證以授與 Kubernetes 資料的存取權。 此安全性設定可讓您直接在 Azure 入口網站中透過 Kubernetes API 即時存取您的資料。

此功能支援下列方法來控制記錄、事件和計量的存取:

  • 已啟用不具 Kubernetes 角色型存取控制 (RBAC) 授權的 AKS
  • 已使用 Kubernetes RBAC 授權啟用的 AKS
  • 已啟用 Microsoft Entra SAML 型單一登入的 AKS

這些指示需要 Kubernetes 叢集的系統管理存取權。 如果您要設定為使用 Microsoft Entra ID 進行使用者驗證,則也需要 Microsoft Entra ID 的系統管理存取權。

本文說明如何設定驗證,以控制從叢集存取即時資料功能:

  • 已啟用 Kubernetes RBAC 的 AKS 叢集
  • Microsoft Entra 整合式 AKS 叢集

驗證模型

即時資料功能利用 Kubernetes API,與 kubectl 命令列工具相同。 Kubernetes API 端點會利用瀏覽器將無法驗證的自我簽署憑證。 此功能會利用內部 Proxy 向 AKS 服務驗證憑證,確保流量受到信任。

Azure 入口網站會提示您驗證 Microsoft Entra ID 叢集的登入認證。 其會在叢集建立期間 (在本文中會重新設定),將您重新導向至用戶端註冊設定。 此行為類似於 kubectl 所需的驗證流程。

注意

叢集的授權是由 Kubernetes 以及與其一起設定的安全性模型來管理。 存取此功能的使用者需要下載 Kubernetes 設定 (kubeconfig) 的權限,類似於執行 az aks get-credentials -n {your cluster name} -g {your resource group}

如果已啟用 Azure RBAC 且 AKS 叢集未啟用 Kubernetes RBAC 授權,此設定檔包含 Azure Kubernetes Service 叢集使用者角色的授權和驗證權杖。 其中包含使用 Microsoft Entra SAML 型單一登入啟用 AKS 時,Microsoft Entra ID 和用戶端註冊詳細資料的相關資訊。

此功能的使用者需要 Azure Kubernetes 叢集使用者角色,才能存取此叢集,以下載 kubeconfig 並使用此功能。 使用者需要叢集的參與者存取權,即可利用此功能。

使用 clusterMonitoringUser 搭配已啟用 Kubernetes RBAC 的叢集

為了不必套用其他設定變更,即可在啟用 Kubernetes RBAC 授權之後,允許 Kubernetes 使用者角色繫結 clusterUser 存取即時資料功能,AKS 已新增名為 clusterMonitoringUser 的新 Kubernetes 叢集角色繫結。 此叢集角色繫結現成具有所有必要的權限,可存取 Kubernetes API 和端點以利用即時資料功能。

若要以這個新使用者身分來利用即時資料功能,您在 AKS 叢集資源上必須是 Azure Kubernetes Service 叢集使用者參與者角色的成員。 容器深入解析啟用時,預設會設定為使用 clusterMonitoringUser 進行驗證。 如果 clusterMonitoringUser 角色繫結不存在於叢集上,則會改用 clusterUser 進行驗證。 參與者可讓您存取 clusterMonitoringUser (如果存在),而 Azure Kuberenetes 服務叢集使用者可讓您存取 clusterUser。 這兩個角色中的任何一個都提供足以使用此功能的存取權。

AKS 是在 2020 年 1 月發行這個新的角色繫結,因此在 2020 年 1 月之前建立的叢集沒有這個繫結。 如果您有在 2020 年 1 月之前建立的叢集,您可以在叢集上執行 PUT 作業,以將新的 clusterMonitoringUser 新增至現有的叢集。 或者,您可以在於叢集上執行 PUT 作業之叢集上執行任何其他作業,例如更新叢集版本。

未啟用 Kubernetes RBAC 的 Kubernetes 叢集

如果 Kubernetes 叢集不是使用 Kubernetes RBAC 授權所設定,或已與 Microsoft Entra 單一登入整合,則您不需遵循這些步驟。 您在非 RBAC 設定中預設已具有系統管理權限。

設定 Kubernetes RBAC 授權

啟用 Kubernetes RBAC 授權時,會使用 clusterUserclusterAdmin 來存取 Kubernetes API。 此設定類似於在沒有系統管理選項的情況下執行 az aks get-credentials -n {cluster_name} -g {rg_name}。 為此,這表示 clusterUser 必須被授與 Kubernetes API 中端點的存取權。

下列範例步驟將示範如何從這個 YAML 設定範本設定叢集角色繫結。

  1. 複製並貼上這個 YAML 檔案,然後將其儲存為 LogReaderRBAC.yaml

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
       name: containerHealth-log-reader
    rules:
        - apiGroups: ["", "metrics.k8s.io", "extensions", "apps"]
          resources:
             - "pods/log"
             - "events"
             - "nodes"
             - "pods"
             - "deployments"
             - "replicasets"
          verbs: ["get", "list"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
       name: containerHealth-read-logs-global
    roleRef:
       kind: ClusterRole
       name: containerHealth-log-reader
       apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: User
      name: clusterUser
      apiGroup: rbac.authorization.k8s.io
    
  2. 若要更新設定,請執行此命令 kubectl apply -f LogReaderRBAC.yaml

注意

如果您已將舊版 LogReaderRBAC.yaml 檔案套用至叢集,請複製並貼上步驟 1 中顯示的新程式碼來加以更新。 然後執行步驟 2 所示的命令,將其套用至叢集。

設定 Microsoft Entra 整合式驗證

設定為使用 Microsoft Entra ID 進行使用者驗證的 AKS 叢集,會利用存取此功能之人員的登入認證。 在此設定中,您可以使用 Microsoft Entra 驗證權杖來登入 AKS 叢集。

Microsoft Entra 用戶端註冊必須重新設定為允許 Azure 入口網站,以將授權頁面重新導向為受信任的重新導向 URL。 然後,會透過 ClusterRolesClusterRoleBindings 直接向來自 Microsoft Entra ID 的使用者授與相同 Kubernetes API 端點的存取權。

如需 Kubernetes 中進階安全性設定的詳細資訊,請檢閱 Kubernetes 文件

注意

如果您要建立已啟用 Kubernetes RBAC 的新叢集,請參閱整合 Microsoft Entra ID 與 Azure Kubernetes Service,並遵循步驟來設定 Microsoft Entra 驗證。 在建立用戶端應用程式的步驟期間,請注意,該節會醒目提示您需要建立的兩個重新導向 URL,讓容器深入解析符合步驟 3 中所指定的。

用戶端註冊重新設定

  1. 在 Azure 入口網站的 [Microsoft Entra ID]> [應用程式註冊] 下,於 Microsoft Entra ID 中尋找 Kubernetes 叢集的用戶端註冊。

  2. 在左窗格上,選取 [驗證]

  3. 將兩個重新導向 URL 新增至此清單,作為 Web 應用程式類型。 第一個基底 URL 值應是 https://afd.hosting.portal.azure.net/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html。 第二個基底 URL 值應是 https://monitoring.hosting.portal.azure.net/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html

    注意

    如果您在由 21Vianet 運作的 Microsoft Azure 中使用這項功能,則第一個基底 URL 值應是 https://afd.hosting.azureportal.chinaloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html。 第二個基底 URL 值應是 https://monitoring.hosting.azureportal.chinaloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html

  4. 在註冊重新導向 URL 之後,請在 [隱含授與] 下選取 [存取權杖] 和 [識別碼權杖] 選項。 然後儲存您的變更。

您只能在新 AKS 叢集的初始部署期間,使用 Microsoft Entra ID 為單一登入設定驗證。 您無法針對已經部署的 AKS 叢集設定單一登入。

重要

如果您已使用更新的 URI 重新設定 Microsoft Entra ID 進行使用者驗證,請清除瀏覽器的快取,以確保已下載並套用更新的驗證權杖。

授與權限

每個 Microsoft Entra 帳戶都必須獲授權存取 Kubernetes 中的適當 API,才能存取即時資料功能。 授與 Microsoft Entra 帳戶的步驟類似於 Kubernetes RBAC 驗證一節中所述的步驟。 將 YAML 設定範本套用至叢集前,請將 ClusterRoleBinding 下的 clusterUser 取代為所需的使用者。

重要

如果您授與 Kubernetes RBAC 繫結的使用者在相同的 Microsoft Entra 租用戶中,請根據 userPrincipalName 指派權限。 如果使用者在不同的 Microsoft Entra 租用戶中,請改為查詢並使用 objectId 屬性。

如需設定 AKS 叢集 ClusterRoleBinding 的其他說明,請參閱建立 Kubernetes RBAC 繫結

下一步

現在已設定驗證,您可以從叢集即時檢視計量事件和記錄