第 1 章 安全性
管理 Red Hat Advanced Cluster Management for Kubernetes 的安全性和基于角色的访问控制 (RBAC)。使用定义的策略和流程监管集群,以识别并最大程度降低风险。使用策略来定义规则和设置控制。
先决条件 :您必须配置 Red Hat Advanced Cluster Management for Kubernetes 的身份验证服务要求,以便将工作负载加载到 Identity and Access Management(IAM)。如需更多信息,请参阅 OpenShift Container Platform 文档中的了解身份验证中的了解身份验证部分。
查看以下主题以了解有关保护集群的更多信息:
1.1. 基于角色的访问控制
Red Hat Advanced Cluster Management for Kubernetes 支持的基于角色的控制访问(RBAC)。您的角色决定了您可以执行的操作。RBAC 基于 Kubernetes 中的授权机制,类似于 Red Hat OpenShift Container Platform。有关 RBAC 的更多信息,请参阅 OpenShift Container Platform 文档中的 RBAC 概述。
注:如果用户角色无法访问,则控制台中禁用操作按钮。
如需组件支持的 RBAC 的详细信息,参阅以下小节。
1.1.1. 角色概述
有些产品资源是基于集群范围的,有些则是命名空间范围。您必须将集群角色绑定和命名空间角色绑定应用到用户,以使访问控制具有一致性。查看 Red Hat Advanced Cluster Management for Kubernetes 支持的以下角色定义表列表:
| 角色 | 定义 | 
|---|---|
| cluster-admin | 
									具有集群范围内的绑定到  | 
| open-cluster-management:cluster-manager-admin | 
									具有集群范围绑定到  | 
| open-cluster-management:managed-cluster-x (admin) | 
									具有集群范围绑定到  | 
| open-cluster-management:managed-cluster-x (viewer) | 
									具有集群范围绑定到  | 
| open-cluster-management:subscription-admin | 
									具有  | 
| admin, edit, view | 
									admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的  | 
重要:
- 任何用户都可以从 OpenShift Container Platform 创建项目,这为命名空间授予管理员角色权限。
- 
							如果用户无法访问集群的角色,则无法看到集群名称。集群名称显示有以下符号: -。
1.1.2. RBAC 的实施
RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息。
1.1.2.1. 集群生命周期 RBAC
查看以下集群生命周期 RBAC 操作。
创建和管理所有受管集群:
- 创建集群角色绑定到集群角色 - open-cluster-management:cluster-manager-admin。这个角色是一个超级用户,可访问所有资源和操作。此角色允许您创建集群范围的- managedcluster资源、用于管理受管集群的资源的命名空间,以及命名空间中的资源。此角色还支持访问供应商连接以及用于创建受管集群的裸机资产。- oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin - oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						管理名为 cluster-name 的受管集群:
					
- 创建一个到集群角色 - open-cluster-management:admin:<cluster-name>的集群角色绑定。此角色允许对集群范围的- managedcluster资源进行读写访问。这是必要的,因为- managedcluster是一个集群范围的资源,而不是命名空间范围的资源。- oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name> - oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建到集群角色 - admin的命名空间角色绑定。此角色允许对受管集群命名空间中的资源进行读/写访问。- oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin - oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						查看名为 cluster-name 的受管集群:
					
- 创建绑定到集群角色 - open-cluster-management:view:<cluster-name>的集群角色绑定。此角色允许对集群范围的- managedcluster资源的读取访问权限。这是必要的,因为- managedcluster是一个集群范围的资源,而不是命名空间范围的资源。- oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> - oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建到集群角色 - view的命名空间角色绑定。此角色允许只读访问受管集群命名空间中的资源。- oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view - oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
查看以下集群生命周期控制台和 API RBAC 表:
| 操作 | Admin | Edit | View | 
|---|---|---|---|
| Clusters | read、update、delete | 读取、更新 | 读取 | 
| AWS 供应商连接。 | create、read、update 和 delete | create、read、update 和 delete | 读取 | 
| 裸机资产 | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| API | Admin | Edit | View | 
|---|---|---|---|
| managedclusters.cluster.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| baremetalassets.inventory.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| klusterletaddonconfigs.agent.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| managedclusteractions.action.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| managedclusterviews.view.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| managedclusterinfos.internal.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| manifestworks.work.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
1.1.2.2. 应用程序生命周期 RBAC
						在创建应用程序时,subscription 命名空间会被创建,配置映射会在 subscription 命名空间中创建。您还必须有权访问 channel 命名空间。如果需要应用订阅,则必须是订阅管理员。有关管理应用程序的更多信息,请参阅创建和管理订阅。
					
						要执行应用程序生命周期任务,具有 admin 角色的用户必须有权访问创建 application 的应用程序命名空间,以及 managed cluster 命名空间。例如,在命名空间 "N" 中创建应用程序所需的访问权限是命名空间范围的绑定到命名空间 "N" 的 admin 角色。
					
查看以下应用程序生命周期控制台和 API RBAC 表:
| 操作 | Admin | Edit | View | 
|---|---|---|---|
| Application | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| Channel | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| Subscription | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| 放置规则(Placement rule) | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| API | Admin | Edit | View | 
|---|---|---|---|
| applications.app.k8s.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| channels.apps.open-cluster-management.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| deployables.apps.open-cluster-management.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| helmreleases.apps.open-cluster-management.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| placementrules.apps.open-cluster-management.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| subscriptions.apps.open-cluster-management.io | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| configmaps | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| secrets | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
| 命名空间 | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 | 
1.1.2.3. 监管生命周期 RBAC
						要执行监管生命周期操作,用户必须有权访问创建策略的命名空间,以及访问应用策略的 managedcluster 命名空间。
					
请参见以下示例:
- 要查看命名空间 "N" 中的策略,需要以下角色: - 
										命名空间范围的绑定到命名空间 "N" 的 view角色。
 
- 
										命名空间范围的绑定到命名空间 "N" 的 
- 要在命名空间 "N" 中创建策略,并将其应用到 - managedcluster"X",需要以下角色:- 
										命名空间范围的绑定到命名空间 "N" 的 admin角色。
- 
										命名空间范围的绑定到命名空间 "X" 的 admin角色。
 
- 
										命名空间范围的绑定到命名空间 "N" 的 
查看以下监管生命周期控制台和 API RBAC 表:
| 操作 | Admin | Edit | View | 
|---|---|---|---|
| 策略(policy) | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| PlacementBindings | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| PlacementRules | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| API | Admin | Edit | View | 
|---|---|---|---|
| policies.policy.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
| placementbindings.policy.open-cluster-management.io | 创建、读取、更新、删除 | 读取、更新 | 读取 | 
1.1.2.4. Observability RBAC
						要查看受管集群的可观察性指标,您必须具有对 hub 集群中该受管集群的 查看 访问权限。查看以下可观察功能列表:
					
- 访问受管集群指标。 - 如果没有将用户分配给 hub 集群上的受管集群的 - view角色,则拒绝用户访问受管集群的指标。
- 搜索资源。
						要在 Grafana 中查看可观察性数据,则必须在受管集群相同的命名空间中有一个 RoleBinding 资源。查看以下 RoleBinding 示例:
					
如需更多信息,请参阅 Role binding policy。请参阅 自定义可观察性 来配置可观察性。
- 如果您有权限可以访问受管集群,请使用 Visual Web Terminal。
						创建、更新和删除 MultiClusterObservability 自定义资源。查看以下 RBAC 表:
					
| API | Admin | Edit | View | 
| multiclusterobservabilities.observability.open-cluster-management.io | create、read、update 和 delete | - | - | 
如需了解更多与集群安全相关的信息,请参阅安全部分。