1.3. 使用控制台实现细粒度的基于角色的访问控制(技术预览)
技术预览: Red Hat Advanced Cluster Management for Kubernetes 支持细粒度的基于角色的访问控制 (RBAC)。作为集群管理员,您可以使用ClusterPermission资源管理和控制权限,该资源控制托管集群上的命名空间级别以及集群级别的权限。向集群内的虚拟机命名空间授予权限,但不向整个托管集群授予权限。
了解如何从控制台设置细粒度的基于角色的访问控制 (RBAC) 和ClusterPermission资源。
需要的访问权限:集群管理员
要了解 OpenShift Container Platform 默认和虚拟化角色及权限,请参阅 OpenShift Container Platform 文档中的授权。
有关 Red Hat Advanced Cluster Management 基于角色的访问的更多详细信息,请参阅实施基于角色的访问控制。
先决条件
要开始使用细粒度的基于角色的访问控制,请参阅以下要求:
-
必须
启用MultiClusterHub自定义资源spec.overrides.components字段进行搜索,才能检索可代表用于访问控制的虚拟机的托管集群命名空间列表。 - 您需要虚拟机。
1.3.1. 在控制台中分配细粒度的基于角色的访问控制 复制链接链接已复制到粘贴板!
您可以分配用户来管理具有细粒度的基于角色的访问控制的虚拟机。如果不允许用户角色访问,则控制台中的操作将被禁用。滑动YAML选项以查看您在 YAML 编辑器中输入的数据。
您可以授予 OpenShift Virtualization 以下角色的访问权限,这些角色是默认角色的扩展:
-
kubevirt.io:view:仅查看资源 -
kubevirt.io:edit:修改资源 -
kubevirt.io:admin:查看、修改、删除资源;授予权限
重要提示:作为管理员,您需要为有效的ClusterPermission资源添加RoleBinding或ClusterRoleBinding资源。您也可以选择添加这两种资源。
导航到您的
MultiClusterHub自定义资源以编辑资源并启用该功能。- 从本地集群视图中,单击操作员>已安装的操作员> Kubernetes 的高级集群管理。
- 单击MultiClusterHub选项卡来编辑资源。
- 滑动YAML选项以查看 YAML 编辑器中的数据。
-
在您的
MultiClusterHub自定义资源spec.overrides.components字段中,将fine-grained-rbac-preview设置为true以启用该功能。在 YAML 编辑器中将configOverrides规范更改为enabled: true并保存更改。请参阅以下启用了fine-grained-rbac-preview的示例:
- configOverrides: {}
enabled: true
name: fine-grained-rbac-preview
- configOverrides: {}
enabled: true
name: fine-grained-rbac-preview
使用
environment=virtualization标记您的local-cluster。- 从所有集群视图中,单击基础架构>集群>
-
找到您的
本地集群并单击“操作”进行编辑。 -
添加
environment=virtualization标签并保存更改。请参见以下示例:
environment=virtualization
environment=virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
remediationAction的policy-virt-clusterroles值更改为enforce,这会将kubevirtclusterroles添加到 hub 集群。- 单击治理>策略。
找到
policy-virt-clusterroles策略并单击Actions将remediationAction值更改为enforcement。重要提示:策略中有两个remediationAction规范,但您只需更改后者的remediationAction。这不适用于 YAML 文件中的第一个模板。请参见以下示例:remediationAction: enforce
remediationAction: enforceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 滑动YAML选项以查看 YAML 编辑器中的数据并保存更改。请参见以下 YAML 示例:
创建
ClusterRole资源并命名您的文件。- 从本地集群视图中,单击用户管理>角色>创建角色。
-
在 YAML 编辑器中添加以下
ClusterRole资源信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
ClusterRoleBinding资源。- 从本地集群视图中,单击用户管理>角色绑定>创建绑定。
-
对于绑定类型,选择
集群范围的角色绑定。 -
添加与
ClusterRole名称匹配的RoleBinding名称,该名称是您之前选择的<cluster-role-name>。 - 添加匹配的角色名称。
- 对于主题,选择用户或组,输入用户或组名称,然后保存更改。
创建
ClusterPermission资源以在命名空间级别授予权限。- 单击访问控制>创建权限。
- 在基本信息窗口中,添加集群名称和被授予权限的用户或组。
- 选择该权限的集群。
添加
角色绑定信息,在命名空间级别设置权限。- 在集群中添加虚拟机命名空间。
- 添加用户或组。
-
添加角色(例如
kubevirt.io:view ),以实现细粒度的基于角色的访问控制。您可以选择RoleBindings的组合。
-
添加具有相同信息的
ClusterRoleBinding资源以在集群级别设置权限。 查看并单击“创建权限”以创建
ClusterPermission资源,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查控制台中的
“就绪”状态。 -
您可以点击编辑权限来编辑
角色绑定和集群角色绑定。 - 可选:单击导出 YAML以将资源用于 GitOps 或在终端中使用它。
-
准备就绪后,您可以删除
ClusterPermissions资源。 可选:如果启用了
可观察性服务,请在中心集群上创建额外的RoleBinding资源,以便用户可以在 Grafana 中查看虚拟机详细信息。- 从本地集群视图中,单击用户管理>角色绑定>角色绑定。
-
对于绑定类型,选择
命名空间角色绑定。 -
指定
RoleBindings的名称,它将角色分配给用户或组。 - 添加集群名称,这也是 hub 集群上的命名空间。
-
选择角色名称的
视图。 - 对于主题,选择用户或组,输入用户或组名称,然后保存更改。