安全集群
使用基于角色的访问控制和证书保护集群。
摘要
第 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 支持的以下角色定义表列表:
| 角色 | 定义 |
|
|
这是 OpenShift Container Platform 的默认角色。具有集群范围内的绑定到 |
|
|
具有集群范围内的绑定到 |
|
|
具有集群范围内的绑定到 |
|
|
具有集群范围内的绑定到 |
|
|
具有集群范围内的绑定到 |
|
|
具有集群范围内的绑定到 |
|
|
具有 |
| admin, edit, view |
admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的 |
|
|
带有 |
重要:
- 任何用户都可以从 OpenShift Container Platform 创建项目,这为命名空间授予管理员角色权限。
-
如果用户无法访问集群的角色,则不会显示集群名称。集群名称可能显示有以下符号:
-。
1.1.2. 控制台和 API RBAC 表 复制链接链接已复制到粘贴板!
要了解组件的基于角色的访问控制,请查看以下控制台和 API RBAC 表:
| 资源 | Admin | Edit | View |
|---|---|---|---|
| Application | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| Channel | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| Subscription | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| API | Admin | Edit | View |
|---|---|---|---|
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 资源 | Admin | Edit | View |
|---|---|---|---|
| 策略(policy) | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| PlacementBindings | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 放置 | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| PlacementRules (已弃用) | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| PolicyAutomations | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| API | Admin | Edit | View |
|---|---|---|---|
|
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
|
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
|
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| API | Admin | Edit | View |
|
| create、read、update 和 delete | 读取、更新 | 读取 |
|
| create, get, list, watch, update, delete, patch | - | - |
|
| 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 资源来创建多个集群角色绑定:
要创建具有许多集群角色绑定的
ClusterPermission资源,请运行以下命令:oc create clusterpermission clusterpermission-multiple-clusterrolebindings -n <cluster-name>
oc create clusterpermission clusterpermission-multiple-clusterrolebindings -n <cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您的资源可能类似以下带有指定的
clusterRoleBindings字段的 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色为所有资源和操作分配超级用户访问权限。作为超级用户,您可以为应用程序和具有此角色的命名空间中的所有应用程序资源创建命名空间。
创建将资源部署到多个命名空间的应用程序。您必须创建一个集群角色绑定到
open-cluster-management:subscription-admin集群角色,并将其绑定到名为username的用户。运行以下命令:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用用户名用户创建和管理cluster-name受管集群中的应用程序。您必须输入以下命令创建一个到open-cluster-management:admin:<cluster-name>集群角色绑定的集群角色绑定,并将其绑定到username:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对受管集群
cluster-name上所有application资源的读写访问权限。如果需要访问其他受管集群,请重复此操作。输入以下命令,创建一个到使用
admin角色的application命名空间的命名空间角色绑定,并把它绑定到username:oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对
application命名空间中的所有application资源的读和写的访问权限。如果需要访问其他应用程序,或者应用部署到多个命名空间,请重复此操作。您可以创建将资源部署到多个命名空间的应用程序。输入以下命令创建到
open-cluster-management:subscription-admin集群角色的集群角色绑定,并将其绑定到username:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用名为
username的用户查看在一个名为cluster-name的受管集群中的应用程序,请创建一个集群角色绑定到open-cluster-management:view:集群角色,并将其绑定到username。输入以下命令:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对受管集群
cluster-name上所有application资源的读访问权限。如果需要访问其他受管集群,请重复此操作。使用
view角色创建到application命名空间的命名空间角色绑定,并将它绑定到username。输入以下命令:oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对
application命名空间中的 所有application资源的读访问权限。如果需要访问其他应用程序,请重复此操作。
1.2.3. 为监管启用 RBAC 复制链接链接已复制到粘贴板!
对于监管操作,您需要访问创建策略的命名空间,以及访问应用策略的受管集群。受管集群还必须是绑定到命名空间的 ManagedClusterSet 的一部分。要继续了解 ManagedClusterSet,请参阅 ManagedClusterSets Introduction。
在选择了命名空间后,如 rhacm-policies,带有一个或多个绑定的 ManagedClusterSets,并在您有权在命名空间中创建 放置 对象后,查看以下操作:
要使用
Policy,PlacementBinding, 和PolicyAutomationedit 访问创建名为rhacm-edit-policy的ClusterRole,请运行以下命令: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
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,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要在
rhacm-policies命名空间中创建策略,请使用之前创建的ClusterRole将命名空间RoleBinding(如rhacm-edit-policy)创建到rhacm-policies命名空间。运行以下命令:oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看受管集群的策略状态,您需要有权查看 hub 集群上的受管集群命名空间中的策略。如果您没有
查看访问权限,如通过 OpenShift视图ClusterRole,请创建一个ClusterRole,如rhacm-view-policy,使用以下命令查看策略的访问权限:oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将新
ClusterRole绑定到受管集群命名空间,请运行以下命令来创建命名空间RoleBinding:oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4. 为 Observability 启用 RBAC 复制链接链接已复制到粘贴板!
要查看受管集群的可观察性指标,您必须具有对 hub 集群中该受管集群的 view 访问权限。查看以下可观察功能列表:
访问受管集群指标。
如果没有将用户分配给 hub 集群上的受管集群的
view角色,则拒绝用户访问受管集群的指标。运行以下命令,以验证用户是否有在受管集群命名空间中创建managedClusterView角色:oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>
oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作为集群管理员,在受管集群命名空间中创建一个
managedClusterView角色。运行以下命令:oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,通过创建角色绑定来将角色应用到用户。运行以下命令:
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索资源。
要验证用户是否可以访问资源类型,请使用以下命令:
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备注:
<resource-type>必须是复数。要在 Grafana 中查看可观察性数据,则必须在受管集群相同的命名空间中有一个
RoleBinding资源。查看以下
RoleBinding示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如需更多信息,请参阅角色绑定策略。请参阅 Observability 高级配置 来配置可观察性。
1.3. 使用控制台实施精细的基于角色的访问控制(技术预览) 复制链接链接已复制到粘贴板!
技术预览: 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 文档中的 授权。
- 有关如何启用基于角色的访问控制的详情,请参阅实施基于角色的访问控制。
1.3.1. 在控制台中分配精细的基于角色的访问控制 复制链接链接已复制到粘贴板!
您可以通过精细的基于角色的访问控制来分配用户来管理虚拟机。如果不允许 user-role 访问权限,则控制台中禁用了操作。在 上滑动 YAML 选项以查看您在 YAML 编辑器中输入的数据。
您可以为 OpenShift Virtualization 授予以下角色的访问权限:
-
kubevirt.io:view: only view resources -
kubevirt.io:edit: 修改资源 -
kubevirt.io:admin: view, modify, delete resources; grant permissions
要为用户分配权限,请完成以下步骤:
进入
MultiClusterHub自定义资源以编辑资源并启用该功能。- 在 local-cluster 视图中,点 Operators > Installed Operators > Advanced Cluster Management for Kubernetes。
- 点 MultiClusterHub 选项卡编辑资源。
- 在 上滑动 YAML 选项以查看 YAML 编辑器中的数据。
-
在
MultiClusterHub自定义资源spec.overrides.components字段中,将fine-grained-rbac-preview设置为true以启用该功能。在 YAML 编辑器中将configOverrides规格改为enabled: true并保存您的更改。请参阅以下启用细粒度-rbac-preview 的示例:
- configOverrides: {} enabled: true name: fine-grained-rbac-preview- configOverrides: {} enabled: true name: fine-grained-rbac-previewCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
environment=virtualization标记local-cluster。运行以下命令:oc label managedclusters local-cluster environment=virtualization
oc label managedclusters local-cluster environment=virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选: 如果启用了可观察性服务,请在 hub 集群上创建额外的
RoleBinding资源,以便用户可以在 Grafana 中查看虚拟机详情。 - 点击 User Management > Identities,从控制台导航到 Identities 页面。
- 要在 hub 集群中查看现有用户或组,请选择 Users 或 Groups 选项卡。
- 要查看您现有的角色分配,请点 Role assignments 选项卡。
- 如果您没有任何角色分配,点 Create role assignment 按钮创建角色分配。
- 选择角色分配的范围。
- 如果选择 Select specific 选项,则会出现可用集群和命名空间列表。
- 选择您要分配角色的特定集群集。
- 将您的选择移到 Chosen options 部分。
- 选择集群集来查看 Select shared namespaces 列表。
- 选择您要目标的命名空间。
- 选择 Create 按钮来创建角色分配。您的角色分配会出现在 角色分配 选项卡中。
1.4. 在终端中实施精细的基于角色的访问控制(技术预览) 复制链接链接已复制到粘贴板!
技术预览: 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 文档中的 授权。
- 有关如何启用基于角色的访问控制的详情,请参阅实施基于角色的访问控制。
1.4.1. 在终端中启用精细的基于角色的访问控制 复制链接链接已复制到粘贴板!
您可以为 OpenShift Virtualization 启用以下角色的角色访问权限:
-
kubevirt.io:view: only view resources -
kubevirt.io:edit: 修改资源 -
kubevirt.io:admin: view, modify, delete resources; grant permissions
完成以下步骤:
在
MultiClusterHub资源中启用细粒度-rbac-preview。运行以下命令:
oc edit mch -n open-cluster-management multiclusterhub
oc edit mch -n open-cluster-management multiclusterhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑,将
configOverrides规格从enabled: false改为enabled: true。请参阅启用该功能的以下示例:- configOverrides: {} enabled: true name: fine-grained-rbac-preview- configOverrides: {} enabled: true name: fine-grained-rbac-previewCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注: 如果不使用
open-cluster-management命名空间,请运行oc get mch -A以获取MultiClusterHub资源的名称和命名空间。使用
environment=virtualization标记local-cluster。运行以下命令:oc label managedclusters local-cluster environment=virtualization
oc label managedclusters local-cluster environment=virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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 集群证书表:
| Namespace | Secret 名称 | 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 的总结列表:
| Namespace | Secret 名称(如果适用) |
|---|---|
| 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. 其他资源 复制链接链接已复制到粘贴板!
- 在受管集群中使用证书策略控制器来创建和管理证书策略。如需了解更多详细信息,请参阅证书策略控制器。
- 有关安全地连接到带有 SSL/TLS 证书的私有托管 Git 服务器的详情,请参阅使用自定义 CA 证书进行安全 HTTPS 连接。
- 如需了解更多详细信息,请参阅 OpenShift Service Serving 证书。
- OpenShift Container Platform 默认入口是 hub 集群证书。如需了解更多详细信息 ,请参阅重新放置 默认入口证书。
1.6. 管理证书 复制链接链接已复制到粘贴板!
通过管理证书来维护集群管理环境的安全性和可靠性。继续阅读以了解如何刷新、替换、轮转和列出证书。
1.6.1. 刷新 Red Hat Advanced Cluster Management Webhook 证书 复制链接链接已复制到粘贴板!
您可以刷新 Red Hat Advanced Cluster Management 受管证书,它们是由 Red Hat Advanced Cluster Management 服务创建和管理的证书。
完成以下步骤以刷新 Red Hat Advanced Cluster Management 管理的证书:
删除与 Red Hat Advanced Cluster Management 受管证书关联的 secret,并将 <
namespace>和<secret> 替换为您要使用的值。运行以下命令:oc delete secret -n <namespace> <secret>
oc delete secret -n <namespace> <secret>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启与 Red Hat Advanced Cluster Management 受管证书关联的服务,并将 <
namespace>和 <pod-label> 替换为 Red Hat Advanced Cluster Management 受管集群证书的值。运行以下命令:oc delete pod -n <namespace> -l <pod-label>
oc delete pod -n <namespace> -l <pod-label>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 如果没有指定
pod-label,则不会重启任何服务。secret 被重新创建并自动使用。
1.6.2. 替换 alertmanager 路由的证书 复制链接链接已复制到粘贴板!
如果您不想使用 OpenShift Container Platform 默认入口证书,请通过更新 Alertmanager 路由来替换 observability alertmanager 证书。完成以下步骤:
使用以下命令检查可观察证书:
openssl x509 -noout -text -in ./observability.crt
openssl x509 -noout -text -in ./observability.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将证书上的通用名称 (
CN) 更改为alertmanager。 -
使用
alertmanager路由的主机名更改csr.cnf配置文件中的 SAN。 运行以下命令,在
open-cluster-management-observability命名空间中创建alertmanager-byo-caSecret 资源:oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key
oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
open-cluster-management-observability命名空间中创建alertmanager-byo-certSecret资源:oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key
oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.3. 轮转 Gatekeeper Webhook 证书 复制链接链接已复制到粘贴板!
完成以下步骤以轮转 Gatekeeper Webhook 证书:
使用以下命令编辑包含 Gatekeeper Webhook 证书的
Secret资源:oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-certCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除
data部分中的以下内容:ca.crt、ca.key、tls.crt和tls.key。 使用以下命令删除
gatekeeper-controller-managerpod 来重启 Gatekeeper Webhook 服务:oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager
oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-managerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Gatekeeper Webhook 证书被轮转。
1.6.4. 验证证书轮转 复制链接链接已复制到粘贴板!
验证您的证书是否已轮转,以防止出现可能影响服务通信的系统中断。完成以下步骤:
-
找到要检查的
Secret资源。 -
检查
tls.crt密钥以验证证书是否可用。 显示证书信息。将
<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 -nooutoc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -nooutCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出中的
Validity详情。查看以下Validity示例:Validity Not Before: Jul 13 15:17:50 2023 GMT Not After : Jul 12 15:17:50 2024 GMTValidity Not Before: Jul 13 15:17:50 2023 GMT1 Not After : Jul 12 15:17:50 2024 GMT2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
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
如需更多信息,请参阅附加资源部分中的 OpenShift Service Serving 证书部分。
注:如果启用了可观察性,则还需要额外的命名空间来创建证书。
1.6.6. 其他资源 复制链接链接已复制到粘贴板!
- 要了解服务用证书,请参阅使用服务用证书 secret 保护服务流量。
1.7. 为 Observability 提供自己的证书颁发机构(CA)证书 复制链接链接已复制到粘贴板!
安装 Red Hat Advanced Cluster Management for Kubernetes 时,默认只为 Observability 提供证书颁发机构(CA)证书。如果您不想使用默认的 Observability CA 证书,您可以选择在启用 Observability 前提供自己的可观察性 CA 证书。
先决条件
需要的访问权限: Administrator
1.7.1. 为 Observability 自定义 CA 证书 复制链接链接已复制到粘贴板!
当您选择提供自己的 Observability CA 证书时,自定义它以帮助您进行特定的开发需求。通过以下步骤为 Observability 自定义 CA 证书:
使用 OpenSSL 命令为服务器端和客户端生成 CA 证书。
要为服务器端生成 CA RSA 私钥,请运行以下命令:
openssl genrsa -out serverCAKey.pem 2048
openssl genrsa -out serverCAKey.pem 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要为客户端生成 CA RSA 私钥,请运行以下命令:
openssl genrsa -out clientCAKey.pem 2048
openssl genrsa -out clientCAKey.pem 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用私钥生成自签名 CA 证书。
要为服务器端生成自签名 CA 证书,请运行以下命令:
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要为客户端生成自签名 CA 证书,请运行以下命令:
openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Observability 存储和管理您的 CA 证书,请为每个 CA 证书创建
Secret资源。使用您的证书和私钥创建
observability-server-ca-certssecret。运行以下命令:oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用您的证书和私钥创建
observability-client-ca-certssecret。运行以下命令:
oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.2. 替换 rbac-query-proxy 路由的证书 复制链接链接已复制到粘贴板!
您可以使用 csr.cnf 文件创建证书签名请求(CSR)来替换 rbac-query-proxy 路由的证书。
先决条件
使用 OpenSSL 命令生成 CA 证书。请参阅自定义 CA 证书以便 Observability 创建证书。
更新 subjectAltName 部分中的 DNS.1 字段,以匹配 rbac-query-proxy 路由的主机名。完成以下步骤:
运行以下命令来检索主机名:
oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath=" {.spec.host}"oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath=" {.spec.host}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用生成的证书创建
proxy-byo-casecret。运行以下命令:oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用生成的证书创建
proxy-byo-certsecret:oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key
oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.3. 其他资源 复制链接链接已复制到粘贴板!
- 有关更新路由证书以访问对象存储的详情,请参考 自定义路由认证。
1.8. 具有集群权限的受管集群的基于角色的访问控制 复制链接链接已复制到粘贴板!
使用集群权限功能在多个受管集群中管理 Kubernetes 原生资源,如 Role、ClusterRoles、RoleBindings 和 ClusterRoleBindings 资源。ClusterPermssion 资源会自动将基于角色的访问控制(RBAC)资源分发到受管集群并管理资源生命周期。
使用集群 permssions API,clusterpermissions.rbac.open-cluster-management.io,您可以指定您要应用到受管集群的 RBAC 策略。
了解如何在以下主题中创建和管理集群权限:
1.8.1. 为集群权限启用验证 复制链接链接已复制到粘贴板!
在 ClusterPermission 资源中启用 validate 规格,以检查您的 Role 和 ClusterRole 资源是否存在。
需要的访问权限:集群管理员
完成以下步骤:
创建一个
ClusterPermission资源,将validate规格设置为true。Define theroleBindings和clusterRoleBinding您要验证。您的 YAML 文件可能类似以下示例,将
ClusteerRole配置为验证sa-sample-existingServiceAccount的editClusterRole,以及Group1的viewClusterRole:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用
clusterpermission-validate-sampleClusterPermission:oc apply clusterpermission-validate-sample.yaml
oc apply clusterpermission-validate-sample.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow