在容器见解中配置实时数据

若要通过 Azure Kubernetes 服务 (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 群集

身份验证模型

实时数据功能使用与 kubectl 命令行工具等效的 Kubernetes API。 Kubernetes API 终结点使用自签名证书,你的浏览器无法验证该证书的有效性。 此功能使用内部代理通过 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 服务群集用户角色的授权和身份验证令牌。 当使用基于 Microsoft Entra SAML 的单一登录启用 AKS 时,它包含有关 Microsoft Entra ID 和客户端注册细节的信息。

此功能的用户需要具有 Azure Kubernetes 群集用户角色才能访问群集,以下载 kubeconfig 并使用此功能。 用户不需要具有群集的参与者访问权限即可使用此功能。

将 clusterMonitoringUser 用于启用了 Kubernetes RBAC 的群集

AKS 添加了一个名为 clusterMonitoringUser 的新的 Kubernetes 群集角色绑定,这样就不需要在启用 Kubernetes RBAC 授权后通过应用更多配置更改来允许 Kubernetes 用户角色绑定 clusterUser 对实时数据功能的访问。 此群集角色绑定具有现成的所有必需权限,可以访问 Kubernetes API 和用于使用实时数据功能的终结点。

若要通过此新用户使用实时数据功能,则必须是 AKS 群集资源上的 Azure Kubernetes 服务群集用户参与者角色的成员。 当启用了容器见解时,默认情况下,它配置为使用 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 授权时,将使用 clusterUser 和 clusterAdmin 访问 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 服务集成并按照步骤来配置 Microsoft Entra 身份验证。 在创建客户端应用程序的步骤中,该部分中的一个注释突出显示了你需要为容器见解创建的与步骤 3 中指定的 URL 匹配的两个重定向 URL。

重新配置客户端注册

  1. 在 Azure 门户中的“Microsoft Entra ID”>“应用注册”下,找到你在 Microsoft Entra ID 中 Kubernetes 群集的客户端注册

  2. 在左窗格中,选择“身份验证”。

  3. 将两个重定向 URL 作为 Web 应用程序类型添加到此列表。 第一个基 URL 值应为 https://afd.hosting.portal.chinacloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html。 第二个基 URL 值应为 https://monitoring.hosting.portal.chinacloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html

    注意

    如果在由世纪互联运营的 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 后,在“隐式授权”下选择“访问令牌”和“ID 令牌”选项。 保存更改。

只能在新 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 绑定

后续步骤

现在,你已设置了身份验证,接下来可以从群集中实时查看指标以及事件和日志了。