安全集群


Red Hat Advanced Cluster Management for Kubernetes 2.15

使用基于角色的访问控制和证书保护集群。

摘要

确保用户可以访问执行特定角色所需的资源。

第 1 章 保护集群

您可能需要手动创建和管理集群上的访问控制。要做到这一点,您必须配置 Red Hat Advanced Cluster Management for Kubernetes 的身份验证服务 要求,以便将工作负载加载到 Identity and Access Management (IAM)。

使用基于角色的访问控制和身份验证来识别用户关联的角色和集群凭证。要创建和管理集群凭证,请通过访问存储它们的 Kubernetes secret 来访问凭证。有关访问和凭证的详情,请查看以下文档:

需要的访问权限:集群管理员

1.1. 基于角色的访问控制

Red Hat Advanced Cluster Management for Kubernetes 支持的基于角色的控制访问(RBAC)。您的角色决定了您可以执行的操作。RBAC 基于 Kubernetes 中的授权机制,类似于 Red Hat OpenShift Container Platform。如需有关 RBAC 的更多信息,请参阅 OpenShift Container Platform 文档中的 RBAC 概述。

备注: 如果用户角色访问不可用,则控制台中的 Action 按钮会被禁用。

1.1.1. 角色概述

有些产品资源是基于集群范围的,有些则是命名空间范围。您必须将集群角色绑定和命名空间角色绑定应用到用户,以使访问控制具有一致性。查看 Red Hat Advanced Cluster Management for Kubernetes 支持的以下角色定义表列表:

Expand
表 1.1. 角色定义表

角色

定义

cluster-admin

这是 OpenShift Container Platform 的默认角色。具有集群范围内的绑定到 cluster-admin 角色的用户,是一个 OpenShift Container Platform 超级用户,其具有所有访问权限。

open-cluster-management:cluster-manager-admin

具有集群范围内的绑定到 open-cluster-management:cluster-manager-admin 角色的用户,是一个 Red Hat Advanced Cluster Management for Kubernetes 超级用户,其具有所有访问权限。此角色允许用户创建 ManagedCluster 资源。

open-cluster-management:admin:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:admin:<managed_cluster_name> 角色的用户,具有对名为 <managed_cluster_name>ManagedCluster 资源的管理员访问权限。当用户具有受管集群时,会自动创建此角色。

open-cluster-management:view:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:view:<managed_cluster_name> 角色的用户,可以访问名为 <managed_cluster_name>ManagedCluster 资源。

open-cluster-management:managedclusterset:admin:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:admin:<managed_clusterset_name> 角色的用户,具有对名为 <managed_clusterset_name>ManagedCluster 资源的管理员访问权限。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的管理员访问权限,这些资源具有受管集群集标签:cluster.open-cluster-management.io/clusterset=<managed_clusterset_name>。使用集群集时会自动生成角色绑定。请参阅创建 ManagedClusterSet 以了解如何管理该资源。

open-cluster-management:managedclusterset:view:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:view:<managed_clusterset_name> 角色的用户,可以访问名为 <managed_clusterset_name>' 的 ManagedCluster 资源。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的查看访问权限,这些资源具有受管集群集标签: cluster.open-cluster-management.io,clusterset=<managed_clusterset_name>。有关如何管理受管集群设置资源的详情,请参阅创建 ManagedClusterSet

open-cluster-management:subscription-admin

具有 open-cluster-management:subscription-admin 角色的用户,可以创建 Git 订阅将资源部署到多个命名空间中。资源在订阅的 Git 仓库中的 Kubernetes 资源 YAML 文件中指定。备注:当一个非 subscription-admin 用户创建订阅时,无论资源中的指定命名空间是什么,所有资源都会部署到订阅命名空间中。如需更多信息,请参阅应用程序生命周期 RBAC 部分。

admin, edit, view

admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的 open-cluster-management 资源,而集群范围的绑定到同一角色可以访问整个集群范围的 open-cluster-management 资源。

open-cluster-management:managedclusterset:bind:<managed_clusterset_name>

带有 open-cluster-management:managedclusterset:bind:<managed_clusterset_name> 角色的用户具有可以查看被称为 <managed_clusterset_name> 的受管集群资源的权限。用户可以将 <managed_clusterset_name> 绑定到一个命名空间。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的查看访问权限,这些资源具有以下受管集群集标签:cluster.open-cluster-management.io/clusterset=<managed_clusterset_name>。请参阅创建 ManagedClusterSet 以了解如何管理该资源。

重要:

  • 任何用户都可以从 OpenShift Container Platform 创建项目,这为命名空间授予管理员角色权限。
  • 如果用户无法访问集群的角色,则不会显示集群名称。集群名称可能显示有以下符号: -

1.1.2. 控制台和 API RBAC 表

要了解组件的基于角色的访问控制,请查看以下控制台和 API RBAC 表:

Expand
表 1.2. 应用程序生命周期的控制台 RBAC 表
资源AdminEditView

Application

创建、读取、更新、删除

创建、读取、更新、删除

读取

Channel

创建、读取、更新、删除

创建、读取、更新、删除

读取

Subscription

创建、读取、更新、删除

创建、读取、更新、删除

读取

Expand
表 1.3. 应用程序生命周期的 API RBAC 表
APIAdminEditView

applications.app.k8s.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

channels.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

deployables.apps.open-cluster-management.io (已弃用)

创建、读取、更新、删除

创建、读取、更新、删除

读取

helmreleases.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

placements.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

placementrules.apps.open-cluster-management.io (已弃用)

创建、读取、更新、删除

创建、读取、更新、删除

读取

subscriptions.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

configmaps

创建、读取、更新、删除

创建、读取、更新、删除

读取

secrets

创建、读取、更新、删除

创建、读取、更新、删除

读取

命名空间

创建、读取、更新、删除

创建、读取、更新、删除

读取

Expand
表 1.4. 用于监管的控制台 RBAC 表
资源AdminEditView

策略(policy)

创建、读取、更新、删除

读取、更新

读取

PlacementBindings

创建、读取、更新、删除

读取、更新

读取

放置

创建、读取、更新、删除

读取、更新

读取

PlacementRules (已弃用)

创建、读取、更新、删除

读取、更新

读取

PolicyAutomations

创建、读取、更新、删除

读取、更新

读取

Expand
表 1.5. 用于监管的 API RBAC 表
APIAdminEditView

policies.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

placementbindings.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

policyautomations.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

Expand
表 1.6. Observability 的 API RBAC 表

API

Admin

Edit

View

multiclusterobservabilities.observability.open-cluster-management.io

create、read、update 和 delete

读取、更新

读取

searchcustomizations.search.open-cluster-management.io

create, get, list, watch, update, delete, patch

-

-

policyreports.wgpolicyk8s.io

get、list、watch

get、list、watch

get、list、watch

1.1.3. 其他资源

1.2. 实施基于角色的访问控制

Red Hat Advanced Cluster Management for Kubernetes 基于角色的访问控制(RBAC)可帮助您在控制台级别和 API 级别验证角色。您可以根据用户访问角色权限启用或禁用控制台中的操作。

multicluster engine operator 是一个前提条件,Red Hat Advanced Cluster Management 的集群生命周期功能。要使用 multicluster engine operator 管理集群 RBAC,请参阅集群生命周期multicluster engine for Kubernetes operator Role-based access control 文档中的 RBAC 指导信息。

查看以下部分以了解有关 Red Hat Advanced Cluster Management 特定生命周期的 RBAC 的更多信息:

1.2.1. 为集群管理启用 RBAC

对于集群管理操作,您需要访问受管集群和 hub 集群。如果要创建多个集群角色绑定,您可以使用 clusterRoleBindings 字段在单个 ClusterPermission 资源中创建多个集群角色绑定。

完成以下步骤,创建一个 ClusterPermission 资源来创建多个集群角色绑定:

  1. 要创建具有许多集群角色绑定的 ClusterPermission 资源,请运行以下命令:

    oc create clusterpermission clusterpermission-multiple-clusterrolebindings -n <cluster-name>
    Copy to Clipboard Toggle word wrap

    您的资源可能类似以下带有指定的 clusterRoleBindings 字段的 YAML:

    apiVersion: rbac.open-cluster-management.io/v1alpha1
    kind: ClusterPermission
    metadata:
      name: clusterpermission-multiple-clusterrolebindings
    spec:
      clusterRoleBindings:
        - name: multi-crb-binding1
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: argocd-application-controller-1
          subject:
            kind: User
            name: user1
        - name: multi-crb-binding2
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: argocd-application-controller-3
          subjects:
            - kind: User
              name: user2
            - kind: Group
              name: group1
    Copy to Clipboard Toggle word wrap

1.2.2. 为应用程序生命周期启用 RBAC

当您创建应用程序时,subscription 命名空间会被创建,配置映射会在 subscription 命名空间中创建。您还必须有权访问 channel 命名空间。如果需要应用订阅,则必须是订阅管理员。有关管理应用程序的更多信息,请参阅作为订阅管理员创建允许和拒绝列表

查看以下应用程序生命周期 RBAC 操作:

  • 使用名为 username 的用户在所有受管集群中创建和管理应用程序。您必须创建一个集群角色绑定,并将其绑定到 username。运行以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>
    Copy to Clipboard Toggle word wrap

    此角色为所有资源和操作分配超级用户访问权限。作为超级用户,您可以为应用程序和具有此角色的命名空间中的所有应用程序资源创建命名空间。

  • 创建将资源部署到多个命名空间的应用程序。您必须创建一个集群角色绑定到 open-cluster-management:subscription-admin 集群角色,并将其绑定到名为 username 的用户。运行以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
    Copy to Clipboard Toggle word wrap
  • 使用用户名 用户创建和管理 cluster-name 受管集群中的应用程序。您必须输入以下命令创建一个到 open-cluster-management:admin:<cluster-name> 集群角色绑定的集群角色绑定,并将其绑定到 username

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
    Copy to Clipboard Toggle word wrap

    此角色具有对受管集群 cluster-name 上所有 application 资源的读写访问权限。如果需要访问其他受管集群,请重复此操作。

  • 输入以下命令,创建一个到使用 admin 角色的 application 命名空间的命名空间角色绑定,并把它绑定到 username

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
    Copy to Clipboard Toggle word wrap

    此角色具有对 application 命名空间中的所有 application 资源的读和写的访问权限。如果需要访问其他应用程序,或者应用部署到多个命名空间,请重复此操作。

  • 您可以创建将资源部署到多个命名空间的应用程序。输入以下命令创建到 open-cluster-management:subscription-admin 集群角色的集群角色绑定,并将其绑定到 username

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
    Copy to Clipboard Toggle word wrap
  • 要使用名为 username 的用户查看在一个名为 cluster-name 的受管集群中的应用程序,请创建一个集群角色绑定到 open-cluster-management:view: 集群角色,并将其绑定到 username。输入以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
    Copy to Clipboard Toggle word wrap

    此角色具有对受管集群 cluster-name 上所有 application 资源的读访问权限。如果需要访问其他受管集群,请重复此操作。

  • 使用 view 角色创建到 application 命名空间的命名空间角色绑定,并将它绑定到 username。输入以下命令:

    oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
    Copy to Clipboard Toggle word wrap

    此角色具有对 application 命名空间中的 所有 application 资源的读访问权限。如果需要访问其他应用程序,请重复此操作。

1.2.3. 为监管启用 RBAC

对于监管操作,您需要访问创建策略的命名空间,以及访问应用策略的受管集群。受管集群还必须是绑定到命名空间的 ManagedClusterSet 的一部分。要继续了解 ManagedClusterSet,请参阅 ManagedClusterSets Introduction

在选择了命名空间后,如 rhacm-policies,带有一个或多个绑定的 ManagedClusterSets,并在您有权在命名空间中创建 放置 对象后,查看以下操作:

  • 要使用 Policy,PlacementBinding, 和 PolicyAutomation edit 访问创建名为 rhacm-edit-policyClusterRole,请运行以下命令:

    oc create clusterrole rhacm-edit-policy --resource=policies.policy.open-cluster-management.io,placementbindings.policy.open-cluster-management.io,policyautomations.policy.open-cluster-management.io,policysets.policy.open-cluster-management.io --verb=create,delete,get,list,patch,update,watch
    Copy to Clipboard Toggle word wrap
  • 要在 rhacm-policies 命名空间中创建策略,请使用之前创建的 ClusterRole 将命名空间 RoleBinding (如 rhacm-edit-policy )创建到 rhacm-policies 命名空间。运行以下命令:

    oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
    Copy to Clipboard Toggle word wrap
  • 要查看受管集群的策略状态,您需要有权查看 hub 集群上的受管集群命名空间中的策略。如果您没有 查看 访问权限,如通过 OpenShift 视图 ClusterRole,请创建一个 ClusterRole,如 rhacm-view-policy,使用以下命令查看策略的访问权限:

    oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
    Copy to Clipboard Toggle word wrap
  • 要将新 ClusterRole 绑定到受管集群命名空间,请运行以下命令来创建命名空间 RoleBinding

    oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
    Copy to Clipboard Toggle word wrap

1.2.4. 为 Observability 启用 RBAC

要查看受管集群的可观察性指标,您必须具有对 hub 集群中该受管集群的 view 访问权限。查看以下可观察功能列表:

  • 访问受管集群指标。

    如果没有将用户分配给 hub 集群上的受管集群的 view 角色,则拒绝用户访问受管集群的指标。运行以下命令,以验证用户是否有在受管集群命名空间中创建 managedClusterView 角色:

    oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>
    Copy to Clipboard Toggle word wrap

    作为集群管理员,在受管集群命名空间中创建一个 managedClusterView 角色。运行以下命令:

    oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
    Copy to Clipboard Toggle word wrap

    然后,通过创建角色绑定来将角色应用到用户。运行以下命令:

    oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user>  -n <managedClusterName>
    Copy to Clipboard Toggle word wrap
  • 搜索资源。

    要验证用户是否可以访问资源类型,请使用以下命令:

    oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
    Copy to Clipboard Toggle word wrap

    备注: <resource-type> 必须是复数。

  • 要在 Grafana 中查看可观察性数据,则必须在受管集群相同的命名空间中有一个 RoleBinding 资源。

    查看以下 RoleBinding 示例:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
     name: <replace-with-name-of-rolebinding>
     namespace: <replace-with-name-of-managedcluster-namespace>
    subjects:
     - kind: <replace with User|Group|ServiceAccount>
       apiGroup: rbac.authorization.k8s.io
       name: <replace with name of User|Group|ServiceAccount>
    roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: view
    Copy to Clipboard Toggle word wrap

如需更多信息,请参阅角色绑定策略。请参阅 Observability 高级配置 来配置可观察性。

技术预览: Red Hat Advanced Cluster Management for Kubernetes 支持精细的基于角色的访问控制(RBAC)。您可以在受管集群的命名空间级别和集群级别管理和控制权限。在不向整个受管集群授予权限的情况下,向集群中的虚拟机命名空间授予权限。

了解如何从控制台设置精细的 RBAC。

需要的访问权限:集群管理员

要了解 OpenShift Container Platform 默认和虚拟化角色和权限,请参阅 OpenShift Container Platform 文档中的 授权

如需了解更多与 Red Hat Advanced Cluster Management 基于角色的访问 相关的信息,请参阅实施基于角色的访问控制。

先决条件

请参阅以下要求以开始使用精细的基于角色的访问控制:

  • 您需要在 hub 集群上安装 Red Hat OpenShift Virtualization 的最新 verrsion。如需更多信息,请参阅 虚拟化 - 安装
  • 要了解 OpenShift Container Platform 默认和虚拟化角色和权限,请参阅 OpenShift Container Platform 文档中的 授权
  • 有关如何启用基于角色的访问控制的详情,请参阅实施基于角色的访问控制

您可以通过精细的基于角色的访问控制来分配用户来管理虚拟机。如果不允许 user-role 访问权限,则控制台中禁用了操作。在 上滑动 YAML 选项以查看您在 YAML 编辑器中输入的数据。

您可以为 OpenShift Virtualization 授予以下角色的访问权限:

  • kubevirt.io:view: only view resources
  • kubevirt.io:edit: 修改资源
  • kubevirt.io:admin: view, modify, delete resources; grant permissions

要为用户分配权限,请完成以下步骤:

  1. 进入 MultiClusterHub 自定义资源以编辑资源并启用该功能。

    1. local-cluster 视图中,点 Operators > Installed Operators > Advanced Cluster Management for Kubernetes
    2. MultiClusterHub 选项卡编辑资源。
    3. 在 上滑动 YAML 选项以查看 YAML 编辑器中的数据。
    4. MultiClusterHub 自定义资源 spec.overrides.components 字段中,将 fine-grained-rbac-preview 设置为 true 以启用该功能。在 YAML 编辑器中将 configOverrides 规格改为 enabled: true 并保存您的更改。请参阅以下启用 细粒度-rbac-preview 的示例
        - configOverrides: {}
          enabled: true
          name: fine-grained-rbac-preview
    Copy to Clipboard Toggle word wrap
  2. 使用 environment=virtualization 标记 local-cluster。运行以下命令:

    oc label managedclusters local-cluster environment=virtualization
    Copy to Clipboard Toggle word wrap
  3. 可选: 如果启用了可观察性服务,请在 hub 集群上创建额外的 RoleBinding 资源,以便用户可以在 Grafana 中查看虚拟机详情。
  4. 点击 User Management > Identities,从控制台导航到 Identities 页面。
  5. 要在 hub 集群中查看现有用户或组,请选择 UsersGroups 选项卡。
  6. 要查看您现有的角色分配,请点 Role assignments 选项卡。
  7. 如果您没有任何角色分配,点 Create role assignment 按钮创建角色分配。
  8. 选择角色分配的范围。
  9. 如果选择 Select specific 选项,则会出现可用集群和命名空间列表。
  10. 选择您要分配角色的特定集群集。
  11. 将您的选择移到 Chosen options 部分。
  12. 选择集群集来查看 Select shared namespaces 列表。
  13. 选择您要目标的命名空间。
  14. 选择 Create 按钮来创建角色分配。您的角色分配会出现在 角色分配 选项卡中。

技术预览: Red Hat Advanced Cluster Management for Kubernetes 支持精细的基于角色的访问控制(RBAC)。作为集群管理员,您可以在受管集群的命名空间级别和集群级别管理和控制权限。在不向整个受管集群授予权限的情况下,向集群中的虚拟机命名空间授予权限。

了解如何从终端设置精细的基于角色的访问控制(RBAC)。

需要的访问权限:集群管理员

要了解 OpenShift Container Platform 默认和虚拟化角色和权限,请参阅 OpenShift Container Platform 文档中的 授权

如需了解更多与 Red Hat Advanced Cluster Management 基于角色的访问 相关的信息,请参阅实施基于角色的访问控制。

先决条件

请参阅以下要求以开始使用精细的基于角色的访问控制:

  • 您需要在 hub 集群上安装 Red Hat OpenShift Virtualization 的最新版本。如需更多信息,请参阅 虚拟化 - 安装
  • 您需要虚拟机。要了解 OpenShift Container Platform 默认和虚拟化角色和权限,请参阅 OpenShift Container Platform 文档中的 授权
  • 有关如何启用基于角色的访问控制的详情,请参阅实施基于角色的访问控制

您可以为 OpenShift Virtualization 启用以下角色的角色访问权限:

  • kubevirt.io:view: only view resources
  • kubevirt.io:edit: 修改资源
  • kubevirt.io:admin: view, modify, delete resources; grant permissions

完成以下步骤:

  1. MultiClusterHub 资源中启用 细粒度-rbac-preview

    1. 运行以下命令:

      oc edit mch -n open-cluster-management multiclusterhub
      Copy to Clipboard Toggle word wrap
    2. 编辑,将 configOverrides 规格从 enabled: false 改为 enabled: true。请参阅启用该功能的以下示例:

          - configOverrides: {}
            enabled: true
            name: fine-grained-rbac-preview
      Copy to Clipboard Toggle word wrap

    注: 如果不使用 open-cluster-management 命名空间,请运行 oc get mch -A 以获取 MultiClusterHub 资源的名称和命名空间。

  2. 使用 environment=virtualization 标记 local-cluster。运行以下命令:

    oc label managedclusters local-cluster environment=virtualization
    Copy to Clipboard Toggle word wrap

1.5. 证书

在安装 Red Hat Advanced Cluster Management 时,会创建在 Red Hat Advanced Cluster Management 上运行的服务所需的所有证书。查看以下由 Red Hat OpenShift Container Platform 组件创建和管理的证书列表:

  • OpenShift Service Serving 证书
  • Red Hat Advanced Cluster Management Webhook 控制器
  • Kubernetes 证书 API
  • OpenShift 默认入口

需要的访问权限: 集群管理员

继续阅读以了解有关证书管理的更多信息:

注意 :用户负责证书轮转和更新。

1.5.1. Red Hat Advanced Cluster Management hub 集群证书

OpenShift Container Platform 默认入口证书是 hub 集群证书类型。安装 Red Hat Advanced Cluster Management 后,Observability 证书会被创建并供 Observability 组件用来为 hub 和受管集群之间的流量提供 mutual TLS。访问 Observability 命名空间以检索并实施不同的 Observability 证书。

  • 以下证书是 open-cluster-management-observability 命名空间的一部分:

    • Observability-server-ca-certs:获取 CA 证书来签署服务器端证书
    • Observability-client-ca-certs:获取 CA 证书来签署客户端的证书
    • Observability-server-certs:获取由 observability-observatorium-api 部署使用的服务器证书
    • Observability-grafana-certs:获取 observability-rbac-query-proxy 部署使用的客户端证书
  • open-cluster-management-addon-observability 命名空间在受管集群中包括以下证书:

    • Observability-managed-cluster-certs :与 hub 服务器中的 observability-server-ca-certs 相同的服务器 CA 证书
    • observability-controller-open-cluster-management.io-observability-signer-client-cert:由被 metrics-collector-deployment 使用的客户证书

CA 证书的有效期为五年,其他证书的有效期为一年。所有 Observability 证书都会在过期后自动刷新。查看以下列表以了解证书自动更新时的影响:

  • 当剩余的有效时间不超过 73 天时,非 CA 证书将自动续订。续订证书后,相关部署中的 Pod 会自动重启以使用更新的证书。
  • 当剩余有效时间不超过一年时,CA 证书会被自动续订。证书被续订后,旧的 CA 不会被删除,而是与更新的 CA 共存。相关部署同时使用旧和更新的证书,并继续工作。旧的 CA 证书在过期时会被删除。
  • 当证书被续订时,hub 集群和受管集群之间的流量不会中断。

查看以下 Red Hat Advanced Cluster Management hub 集群证书表:

Expand
表 1.7. Red Hat Advanced Cluster Management hub 集群证书
NamespaceSecret 名称Pod 标签

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-ca

app=multicluster-operators-channel

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-signed-ca

app=multicluster-operators-channel

open-cluster-management

multicluster-operators-application-svc-ca

app=multicluster-operators-application

open-cluster-management

multicluster-operators-application-svc-signed-ca

app=multicluster-operators-application

open-cluster-management-hub

registration-webhook-serving-cert signer-secret

不是必需的

open-cluster-management-hub

work-webhook-serving-cert

不是必需的

1.5.2. Red Hat Advanced Cluster Management 管理的证书

使用 Red Hat Advanced Cluster Management 受管证书在 hub 集群中验证受管集群。以下受管集群证书会受管理并自动刷新。

如果您自定义 hub 集群 API 服务器证书,受管集群会自动更新其证书。查看下表,了解包含 Red Hat Advanced Cluster Management 管理的证书和相关 secret 的组件 pod 的总结列表:

Expand
表 1.8. 包含 Red Hat Advanced Cluster Management 管理证书的 Pod
NamespaceSecret 名称(如果适用)

open-cluster-management-agent-addon

cluster-proxy-open-cluster-management.io-proxy-agent-signer-client-cert

open-cluster-management-agent-addon

cluster-proxy-service-proxy-server-certificates

1.5.3. 其他资源

1.6. 管理证书

通过管理证书来维护集群管理环境的安全性和可靠性。继续阅读以了解如何刷新、替换、轮转和列出证书。

您可以刷新 Red Hat Advanced Cluster Management 受管证书,它们是由 Red Hat Advanced Cluster Management 服务创建和管理的证书。

完成以下步骤以刷新 Red Hat Advanced Cluster Management 管理的证书:

  1. 删除与 Red Hat Advanced Cluster Management 受管证书关联的 secret,并将 < namespace><secret > 替换为您要使用的值。运行以下命令:

    oc delete secret -n <namespace> <secret>
    Copy to Clipboard Toggle word wrap
  2. 重启与 Red Hat Advanced Cluster Management 受管证书关联的服务,并将 < namespace> 和 & lt;pod-label > 替换为 Red Hat Advanced Cluster Management 受管集群证书的值。运行以下命令:

    oc delete pod -n <namespace> -l <pod-label>
    Copy to Clipboard Toggle word wrap

    注: 如果没有指定 pod-label,则不会重启任何服务。secret 被重新创建并自动使用。

1.6.2. 替换 alertmanager 路由的证书

如果您不想使用 OpenShift Container Platform 默认入口证书,请通过更新 Alertmanager 路由来替换 observability alertmanager 证书。完成以下步骤:

  1. 使用以下命令检查可观察证书:

    openssl x509  -noout -text -in ./observability.crt
    Copy to Clipboard Toggle word wrap
  2. 将证书上的通用名称 (CN) 更改为 alertmanager
  3. 使用 alertmanager 路由的主机名更改 csr.cnf 配置文件中的 SAN。
  4. 运行以下命令,在 open-cluster-management-observability 命名空间中创建 alertmanager-byo-ca Secret 资源:

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令,在 open-cluster-management-observability 命名空间中创建 alertmanager-byo-cert Secret 资源:

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key
    Copy to Clipboard Toggle word wrap

1.6.3. 轮转 Gatekeeper Webhook 证书

完成以下步骤以轮转 Gatekeeper Webhook 证书:

  1. 使用以下命令编辑包含 Gatekeeper Webhook 证书的 Secret 资源:

    oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
    Copy to Clipboard Toggle word wrap
  2. 删除 data 部分中的以下内容: ca.crtca.keytls.crttls.key
  3. 使用以下命令删除 gatekeeper-controller-manager pod 来重启 Gatekeeper Webhook 服务:

    oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager
    Copy to Clipboard Toggle word wrap

Gatekeeper Webhook 证书被轮转。

1.6.4. 验证证书轮转

验证您的证书是否已轮转,以防止出现可能影响服务通信的系统中断。完成以下步骤:

  1. 找到要检查的 Secret 资源。
  2. 检查 tls.crt 密钥以验证证书是否可用。
  3. 显示证书信息。将 <your-secret-name> 替换为您要验证的 secret 的名称。如果需要,还要更新命名空间和 JSON 路径。运行以下命令:

    oc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -noout
    Copy to Clipboard Toggle word wrap
  4. 检查输出中的 Validity 详情。查看以下 Validity 示例:

    Validity
                Not Before: Jul 13 15:17:50 2023 GMT 
    1
    
                Not After : Jul 12 15:17:50 2024 GMT 
    2
    Copy to Clipboard Toggle word wrap
    1
    Not Before 值是您轮转证书的日期和时间。
    2
    Not After 值是证书过期的日期和时间。

1.6.5. 列出 hub 集群受管证书

您可以查看在内部使用 OpenShift Service Serving 证书服务的 hub 集群受管证书列表。运行以下命令列出证书:

for ns in multicluster-engine open-cluster-management ; do echo "$ns:" ; oc get secret -n $ns -o custom-columns=Name:.metadata.name,Expiration:.metadata.annotations.service\\.beta\\.openshift\\.io/expiry | grep -v '<none>' ; echo ""; done
Copy to Clipboard Toggle word wrap

如需更多信息,请参阅附加资源部分中的 OpenShift Service Serving 证书部分。

:如果启用了可观察性,则还需要额外的命名空间来创建证书。

1.6.6. 其他资源

安装 Red Hat Advanced Cluster Management for Kubernetes 时,默认只为 Observability 提供证书颁发机构(CA)证书。如果您不想使用默认的 Observability CA 证书,您可以选择在启用 Observability 前提供自己的可观察性 CA 证书。

先决条件

需要的访问权限: Administrator

1.7.1. 为 Observability 自定义 CA 证书

当您选择提供自己的 Observability CA 证书时,自定义它以帮助您进行特定的开发需求。通过以下步骤为 Observability 自定义 CA 证书:

  1. 使用 OpenSSL 命令为服务器端和客户端生成 CA 证书。

    1. 要为服务器端生成 CA RSA 私钥,请运行以下命令:

      openssl genrsa -out serverCAKey.pem 2048
      Copy to Clipboard Toggle word wrap
    2. 要为客户端生成 CA RSA 私钥,请运行以下命令:
    openssl genrsa -out clientCAKey.pem 2048
    Copy to Clipboard Toggle word wrap
  2. 使用私钥生成自签名 CA 证书。

    1. 要为服务器端生成自签名 CA 证书,请运行以下命令:

      openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem
      Copy to Clipboard Toggle word wrap
    2. 要为客户端生成自签名 CA 证书,请运行以下命令:
    openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
    Copy to Clipboard Toggle word wrap
  3. 为 Observability 存储和管理您的 CA 证书,请为每个 CA 证书创建 Secret 资源。

    1. 使用您的证书和私钥创建 observability-server-ca-certs secret。运行以下命令:

      oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
      Copy to Clipboard Toggle word wrap
    2. 使用您的证书和私钥创建 observability-client-ca-certs secret。运行以下命令:
    oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
    Copy to Clipboard Toggle word wrap

1.7.2. 替换 rbac-query-proxy 路由的证书

您可以使用 csr.cnf 文件创建证书签名请求(CSR)来替换 rbac-query-proxy 路由的证书。

先决条件

使用 OpenSSL 命令生成 CA 证书。请参阅自定义 CA 证书以便 Observability 创建证书。

更新 subjectAltName 部分中的 DNS.1 字段,以匹配 rbac-query-proxy 路由的主机名。完成以下步骤:

  1. 运行以下命令来检索主机名:

    oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath="
    {.spec.host}"
    Copy to Clipboard Toggle word wrap
  2. 使用生成的证书创建 proxy-byo-ca secret。运行以下命令:

    oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,使用生成的证书创建 proxy-byo-cert secret:

    oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key
    Copy to Clipboard Toggle word wrap

1.7.3. 其他资源

使用集群权限功能在多个受管集群中管理 Kubernetes 原生资源,如 RoleClusterRolesRoleBindingsClusterRoleBindings 资源。ClusterPermssion 资源会自动将基于角色的访问控制(RBAC)资源分发到受管集群并管理资源生命周期。

使用集群 permssions API,clusterpermissions.rbac.open-cluster-management.io,您可以指定您要应用到受管集群的 RBAC 策略。

了解如何在以下主题中创建和管理集群权限:

1.8.1. 为集群权限启用验证

ClusterPermission 资源中启用 validate 规格,以检查您的 RoleClusterRole 资源是否存在。

需要的访问权限:集群管理员

完成以下步骤:

  1. 创建一个 ClusterPermission 资源,将 validate 规格设置为 true。Define the roleBindingsclusterRoleBinding 您要验证。

    您的 YAML 文件可能类似以下示例,将 ClusteerRole 配置为验证 sa-sample-existing ServiceAccountedit ClusterRole,以及 Group1view ClusterRole

    apiVersion: rbac.open-cluster-management.io/v1alpha1
    kind: ClusterPermission
    metadata:
      name: clusterpermission-validate-sample
    spec:
      validate: true
      roleBindings:
        - name: default-existing
          namespace: default
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: edit
          subject:
            namespace: openshift-gitops
            kind: ServiceAccount
            name: sa-sample-existing
      clusterRoleBinding:
          name: crb-cluster1-argo-app-con-3-existing
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: view
          subject:
            apiGroup: rbac.authorization.k8s.io
            kind: Group
            name: group1
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来应用 clusterpermission-validate-sample ClusterPermission

    oc apply clusterpermission-validate-sample.yaml
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat