1.2. multicluster engine operator 基于角色的访问控制


RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息:

1.2.1. 角色概述

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

1.2.1.1. 角色定义表

角色定义

cluster-admin

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

open-cluster-management:cluster-manager-admin

具有集群范围内的绑定到 open-cluster-management:cluster-manager-admin 角色的用户,是一个超级用户,其具有所有访问权限。此角色允许用户创建 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.ioclusterset=<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

admin, edit, view

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

重要

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

RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息。

1.2.2. 集群生命周期 RBAC

查看以下集群生命周期 RBAC 操作:

  • 为所有受管集群创建和管理集群角色绑定。例如,输入以下命令创建到集群角色 open-cluster-management:cluster-manager-admin 的集群角色绑定:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>

    这个角色是一个超级用户,可访问所有资源和操作。您可以创建集群范围的 managedcluster 资源、用于管理受管集群的资源的命名空间,以及使用此角色的命名空间中的资源。您可能需要添加需要角色关联的 ID 用户名,以避免权限错误。

  • 运行以下命令,为名为 cluster-name 的受管集群管理集群角色绑定:

    oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>

    此角色对集群范围的 managedcluster 资源具有读写访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源,而不是命名空间范围的资源。

    • 输入以下命令,创建到集群角色 admin 的命名空间角色绑定:

      oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin --user=<username>

      此角色对受管集群命名空间中的资源具有读写访问权限。

  • open-cluster-management:view:<cluster-name> 集群角色创建一个集群角色绑定,以查看名为 cluster-name 的受管集群,输入以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>

    此角色具有对集群范围的 managedcluster 资源的读取访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源。

  • 输入以下命令,创建到集群角色 view 的命名空间角色绑定:

    oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view --user=<username>

    此角色对受管集群命名空间中的资源具有只读访问权限。

  • 输入以下命令来查看您可以访问的受管集群列表:

    oc get managedclusters.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

  • 输入以下命令来查看您可以访问的受管集群集列表:

    oc get managedclustersets.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

1.2.2.1. 集群池 RBAC

查看以下集群池 RBAC 操作:

  • 作为集群管理员,通过创建受管集群集并使用集群池置备集群,并通过向组添加角色来授予管理员权限。请参见以下示例:

    • 使用以下命令为 server-foundation-clusterset 受管集群集授予 admin 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset
      server-foundation-team-admin
    • 使用以下命令为 server-foundation-clusterset 受管集群授予 view 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
  • 为集群池 server-foundation-clusterpool 创建命名空间。查看以下示例以授予角色权限:

    • 运行以下命令,为 server-foundation-team-admin 授予 server-foundation-clusterpooladmin 权限:

      oc adm new-project server-foundation-clusterpool
      
      oc adm policy add-role-to-group admin server-foundation-team-admin --namespace  server-foundation-clusterpool
  • 作为团队管理员,在集群池命名空间中创建一个名为 ocp46-aws-clusterpool 的集群池,带有集群设置标签 cluster.open-cluster-management.io/clusterset=server-foundation-clusterset

    • server-foundation-webhook 检查集群池是否有集群设置标签,以及用户是否有权在集群集中创建集群池。
    • server-foundation-controllerserver-foundation-team-user 授予对 server-foundation-clusterpool 命名空间的 view 权限。
  • 创建集群池时,集群池会创建一个 clusterdeployment。继续阅读以获取更多详细信息:

    • server-foundation-controllerserver-foundation-team-admin 授予对 clusterdeployment 命名空间的 admin 权限。
    • server-foundation-controllerserver-foundation-team-user 授予对 clusterdeployment 名空间的 view 权限。

      :作为 team-adminteam-user,您有 clusterpoolclusterdeploymentclusterclaimadmin 权限

1.2.2.2. 集群生命周期的控制台和 API RBAC 表

查看以下集群生命周期控制台和 API RBAC 表:

表 1.1. 集群生命周期的控制台 RBAC 表
资源AdminEditView

Clusters

read、update、delete

-

读取

集群集

get、update、bind、join

未提及 edit 角色

get

受管集群

read、update、delete

未提及 edit 角色

get

AWS 供应商连接。

create、read、update 和 delete

-

读取

表 1.2. 集群生命周期的 API RBAC 表
APIAdminEditView

managedclusters.cluster.open-cluster-management.io

对于这个 API 您可以使用 mcl(单数形式)或 mcls(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclusters.view.open-cluster-management.io

对于这个 API 您可以使用 mcv(单数形式)或 mcvs(复数形式)。

读取

读取

读取

managedclusters.register.open-cluster-management.io/accept

update

update

 

managedclusterset.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclset(单数形式)或 mclsets(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclustersets.view.open-cluster-management.io

读取

读取

读取

managedclustersetbinding.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclsetbinding(单数形式)或 mclsetbindings(复数形式)。

创建、读取、更新、删除

读取、更新

读取

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

创建、读取、更新、删除

读取、更新

读取

submarinerconfigs.submarineraddon.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

placements.cluster.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

1.2.2.3. 基于角色的凭证访问控制

对凭证的访问由 Kubernetes 控制。凭据作为 Kubernetes secret 存储和保护。以下权限适用于在 Red Hat Advanced Cluster Management for Kubernetes 中访问 secret:

  • 有权在命名空间中创建 secret 的用户可以创建凭证。
  • 有权读取命名空间中的 secret 的用户也可以查看凭证。
  • 具有 Kubernetes 集群角色 adminedit 的用户可以创建和编辑 secret。
  • 具有 Kubernetes 集群角色 view 的用户无法查看 secret,因为读取 secret 的内容可以访问服务帐户凭证。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.