搜索

1.2. 实施基于角色的访问控制

download PDF

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

在创建应用程序时,subscription 命名空间会被创建,配置映射会在 subscription 命名空间中创建。您还必须有权访问 channel 命名空间。如果需要应用订阅,则必须是订阅管理员。有关管理应用程序的更多信息,请参阅作为订阅管理员创建允许和拒绝列表

查看以下应用程序生命周期 RBAC 操作:

  • 使用名为 username 的用户在所有受管集群中创建和管理应用程序。您必须创建一个集群角色绑定,并将其绑定到 username。运行以下命令:

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

    这个角色是一个超级用户,可访问所有资源和操作。您可以使用此角色为应用程序和命名空间中的所有应用程序资源创建命名空间。

  • 创建将资源部署到多个命名空间的应用程序。您必须创建一个集群角色绑定到 open-cluster-management:subscription-admin 集群角色,并将其绑定到名为 username 的用户。运行以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
  • 使用 username 用户在 cluster-name 受管集群中创建并管理应用程序。您必须输入以下命令创建一个到 open-cluster-management:admin:<cluster-name> 集群角色绑定的集群角色绑定,并将其绑定到 username

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

    此角色具有对受管集群 cluster-name 上所有 application 资源的读写访问权限。如果需要访问其他受管集群,请重复此操作。

  • 输入以下命令,创建一个到使用 admin 角色的 application 命名空间的命名空间角色绑定,并把它绑定到 username

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

    此角色具有对 application 命名空间中的所有 application 资源的读和写的访问权限。如果需要访问其他应用程序,或者应用部署到多个命名空间,请重复此操作。

  • 您可以创建将资源部署到多个命名空间的应用程序。输入以下命令创建到 open-cluster-management:subscription-admin 集群角色的集群角色绑定,并将其绑定到 username

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
  • 要使用名为 username 的用户查看在一个名为 cluster-name 的受管集群中的应用程序,请创建一个集群角色绑定到 open-cluster-management:view: 集群角色,并将其绑定到 username。输入以下命令:

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

    此角色具有对受管集群 cluster-name 上所有 application 资源的读访问权限。如果需要访问其他受管集群,请重复此操作。

  • 使用 view 角色创建到 application 命名空间的命名空间角色绑定,并将它绑定到 username。输入以下命令:

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

    此角色具有对 application 命名空间中的 所有 application 资源的读访问权限。如果需要访问其他应用程序,请重复此操作。

1.2.1.1. 应用程序生命周期的控制台和 API RBAC 表

查看以下应用程序生命周期控制台和 API RBAC 表:

表 1.2. 应用程序生命周期的控制台 RBAC 表
资源AdminEditView

Application

创建、读取、更新、删除

创建、读取、更新、删除

读取

Channel

创建、读取、更新、删除

创建、读取、更新、删除

读取

Subscription

创建、读取、更新、删除

创建、读取、更新、删除

读取

表 1.3. 应用程序生命周期的 API RBAC 表
APIAdminEditView

applications.app.k8s.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

channels.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

deployables.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

helmreleases.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

placements.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

placementrules.apps.open-cluster-management.io (已弃用)

创建、读取、更新、删除

创建、读取、更新、删除

读取

subscriptions.apps.open-cluster-management.io

创建、读取、更新、删除

创建、读取、更新、删除

读取

configmaps

创建、读取、更新、删除

创建、读取、更新、删除

读取

secrets

创建、读取、更新、删除

创建、读取、更新、删除

读取

命名空间

创建、读取、更新、删除

创建、读取、更新、删除

读取

1.2.2. 监管生命周期 RBAC

要执行监管生命周期操作,您需要访问创建策略的命名空间,以及访问应用策略的受管集群。受管集群还必须是绑定到命名空间的 ManagedClusterSet 的一部分。要继续了解 ManagedClusterSet,请参阅 ManagedClusterSets Introduction

选择命名空间后,如 mvapich-policies,带有一个或多个绑定的 ManagedClusterSets,并在命名空间中创建 Placement 对象后,查看以下操作:

  • 要创建一个名为 mvapich -edit-policyClusterRole,以及 PolicyPlacementBindingPolicyAutomation 编辑访问,请运行以下命令:

    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
  • 要在 mvapich -policies 命名空间中创建策略,请使用之前创建的 ClusterRole 创建一个命名空间 RoleBinding,如 mvapich - edit-policy。运行以下命令:

    oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
  • 要查看受管集群的策略状态,您需要权限查看 hub 集群上的受管集群命名空间中的策略。如果您没有 查看 访问权限,如通过 OpenShift 视图 ClusterRole,使用以下命令创建一个 ClusterRole,如 mvapich-view-policy,并具有以下命令查看策略的访问权限:

    oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
  • 要将新的 ClusterRole 绑定到受管集群命名空间,请运行以下命令来创建命名空间 RoleBinding

    oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>

1.2.2.1. 监管生命周期的控制台和 API RBAC 表

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

表 1.4. 监管生命周期的控制台 RBAC 表
资源AdminEditView

策略(policy)

创建、读取、更新、删除

读取、更新

读取

PlacementBindings

创建、读取、更新、删除

读取、更新

读取

放置

创建、读取、更新、删除

读取、更新

读取

PlacementRules (已弃用)

创建、读取、更新、删除

读取、更新

读取

PolicyAutomations

创建、读取、更新、删除

读取、更新

读取

表 1.5. 监管生命周期的 API RBAC 表
APIAdminEditView

policies.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

placementbindings.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

policyautomations.policy.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

1.2.3. Observability RBAC

要查看受管集群的可观察性指标,您必须具有对 hub 集群中该受管集群的 view 访问权限。查看以下可观察功能列表:

  • 访问受管集群指标。

    如果没有将用户分配给 hub 集群上的受管集群的 view 角色,则拒绝用户访问受管集群的指标。运行以下命令,以验证用户是否有在受管集群命名空间中创建 managedClusterView 角色:

    oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>

    作为集群管理员,在受管集群命名空间中创建一个 managedClusterView 角色。运行以下命令:

    oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>

    然后,通过创建角色绑定来将角色应用到用户。运行以下命令:

    oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user>  -n <managedClusterName>
  • 搜索资源。

    要验证用户是否可以访问资源类型,请使用以下命令:

    oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>

    备注: <resource-type> 必须是复数。

  • 要在 Grafana 中查看可观察性数据,则必须在受管集群相同的命名空间中有一个 RoleBinding 资源。

    查看以下 RoleBinding 示例:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
     name: <replace-with-name-of-rolebinding>
     namespace: <replace-with-name-of-managedcluster-namespace>
    subjects:
     - kind: <replace with User|Group|ServiceAccount>
       apiGroup: rbac.authorization.k8s.io
       name: <replace with name of User|Group|ServiceAccount>
    roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: view

如需更多信息,请参阅角色绑定策略。请参阅自定义可观察性以配置可观察性。

1.2.3.1. Observability 生命周期的控制台和 API RBAC 表

要管理可观察性组件,请查看以下 API RBAC 表:

表 1.6. 用于 observability 的 API RBAC 表

API

Admin

Edit

View

multiclusterobservabilities.observability.open-cluster-management.io

create、read、update 和 delete

读取、更新

读取

searchcustomizations.search.open-cluster-management.io

create, get, list, watch, update, delete, patch

-

-

policyreports.wgpolicyk8s.io

get、list、watch

get、list、watch

get、list、watch

要了解更多保护集群的信息,请参阅风险和合规性

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.