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字段进行搜索,才能检索可代表用于访问控制的虚拟机的托管集群命名空间列表。
  • 您需要虚拟机。

您可以分配用户来管理具有细粒度的基于角色的访问控制的虚拟机。如果不允许用户角色访问,则控制台中的操作将被禁用。滑动YAML选项以查看您在 YAML 编辑器中输入的数据。

您可以授予 OpenShift Virtualization 以下角色的访问权限,这些角色是默认角色的扩展:

  • kubevirt.io:view :仅查看资源
  • kubevirt.io:edit :修改资源
  • kubevirt.io:admin :查看、修改、删除资源;授予权限

重要提示:作为管理员,您需要为有效的ClusterPermission资源添加RoleBindingClusterRoleBinding资源。您也可以选择添加这两种资源。

  1. 导航到您的MultiClusterHub自定义资源以编辑资源并启用该功能。

    1. 本地集群视图中,单击操作员>已安装的操作员> Kubernetes 的高级集群管理
    2. 单击MultiClusterHub选项卡来编辑资源。
    3. 滑动YAML选项以查看 YAML 编辑器中的数据。
    4. 在您的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
Copy to Clipboard Toggle word wrap
  1. 使用environment=virtualization标记您的local-cluster

    1. 所有集群视图中,单击基础架构>集群>
    2. 找到您的本地集群并单击“操作”进行编辑。
    3. 添加environment=virtualization标签并保存更改。请参见以下示例:
    environment=virtualization
    Copy to Clipboard Toggle word wrap
  2. remediationActionpolicy-virt-clusterroles值更改为enforce ,这会将kubevirt clusterroles添加到 hub 集群。

    1. 单击治理>策略
    2. 找到policy-virt-clusterroles策略并单击ActionsremediationAction值更改为enforcement重要提示:策略中有两个remediationAction规范,但您只需更改后者的remediationAction 。这不适用于 YAML 文件中的第一个模板。请参见以下示例:

        remediationAction: enforce
      Copy to Clipboard Toggle word wrap
    3. 滑动YAML选项以查看 YAML 编辑器中的数据并保存更改。请参见以下 YAML 示例:
  3. 创建ClusterRole资源并命名您的文件。

    1. 本地集群视图中,单击用户管理>角色>创建角色
    2. 在 YAML 编辑器中添加以下ClusterRole资源信息:
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: <cluster-role-name> 
    1
    
    rules:
      - apiGroups: ["clusterview.open-cluster-management.io"]
        resources: ["kubevirtprojects"]
        verbs: ["list"]
      - apiGroups: ["clusterview.open-cluster-management.io"]
        resources: ["managedclusters"]
        verbs: ["list","get","watch"]
      - apiGroups: ["cluster.open-cluster-management.io"]
        resources: ["managedclusters"]
        verbs: ["get"]
        resourceNames: ["<cluster-name-01>", "<cluster-name-02>", "<cluster-name-03>"] 
    2
    Copy to Clipboard Toggle word wrap
    1
    您可以使用不同的名称,但在创建ClusterRoleBinding资源时必须继续使用该名称。
    2
    添加您希望用户或组访问的托管集群的名称。每个名称必须是唯一的。
  4. 创建ClusterRoleBinding资源。

    1. 本地集群视图中,单击用户管理>角色绑定>创建绑定
    2. 对于绑定类型,选择集群范围的角色绑定
    3. 添加与ClusterRole名称匹配的RoleBinding名称,该名称是您之前选择的<cluster-role-name>
    4. 添加匹配的角色名称。
    5. 对于主题,选择用户或组,输入用户或组名称,然后保存更改。
  5. 创建ClusterPermission资源以在命名空间级别授予权限。

    1. 单击访问控制>创建权限
    2. 基本信息窗口中,添加集群名称和被授予权限的用户或组。
    3. 选择该权限的集群。
  6. 添加角色绑定信息,在命名空间级别设置权限。

    1. 在集群中添加虚拟机命名空间。
    2. 添加用户或组。
    3. 添加角色(例如kubevirt.io:view ) ,以实现细粒度的基于角色的访问控制。您可以选择RoleBindings的组合。
  7. 添加具有相同信息的ClusterRoleBinding资源以在集群级别设置权限。
  8. 查看并单击“创建权限”以创建ClusterPermission资源,如下例所示:

    apiVersion: rbac.open-cluster-management.io/v1alpha1
    kind: ClusterPermission
    metadata:
      name: <cluster-premission-name> 
    1
    
      namespace: <cluster-name-01> 
    2
    
    spec:
      roleBindings:
        - name: <role-binding-name> 
    3
    
          namespace: <your-namespace> 
    4
    
          roleRef:
            name: kubevirt.io:admin
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
          subjects:
            - kind: User 
    5
    
              apiGroup: rbac.authorization.k8s.io
              name: <user-name> 
    6
    Copy to Clipboard Toggle word wrap
    1
    指定权限的名称。
    2
    添加集群名称,它也是权限的命名空间。
    3
    指定<role-binding-name>的名称,用于将角色分配给用户或组。
    4
    指定托管集群中授予用户或组访问权限的命名空间。
    5
    选择“用户”“组”
    6
    指定用户或组
  9. 检查控制台中的“就绪”状态。
  10. 您可以点击编辑权限来编辑角色绑定集群角色绑定
  11. 可选:单击导出 YAML以将资源用于 GitOps 或在终端中使用它。
  12. 准备就绪后,您可以删除ClusterPermissions资源。
  13. 可选:如果启用了可观察性服务,请在中心集群上创建额外的RoleBinding资源,以便用户可以在 Grafana 中查看虚拟机详细信息。

    1. 本地集群视图中,单击用户管理>角色绑定>角色绑定
    2. 对于绑定类型,选择命名空间角色绑定
    3. 指定RoleBindings的名称,它将角色分配给用户或组。
    4. 添加集群名称,这也是 hub 集群上的命名空间。
    5. 选择角色名称视图
    6. 对于主题,选择用户,输入用户或组名称,然后保存更改。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat