1.2. 实施基于角色的访问控制
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 表:
资源 | Admin | Edit | View |
---|---|---|---|
Application | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
Channel | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
Subscription | 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
API | Admin | Edit | View |
---|---|---|---|
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
| 创建、读取、更新、删除 | 创建、读取、更新、删除 | 读取 |
1.2.2. 监管生命周期 RBAC
要执行监管生命周期操作,您需要访问创建策略的命名空间,以及访问应用策略的受管集群。受管集群还必须是绑定到命名空间的 ManagedClusterSet
的一部分。要继续了解 ManagedClusterSet
,请参阅 ManagedClusterSets Introduction。
选择命名空间后,如 mvapich-policies
,带有一个或多个绑定的 ManagedClusterSets
,并在命名空间中创建 Placement
对象后,查看以下操作:
要创建一个名为 mvapich
-edit-policy
的ClusterRole
,以及Policy
、PlacementBinding
和PolicyAutomation
编辑访问,请运行以下命令: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-policyoc 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 表:
资源 | Admin | Edit | View |
---|---|---|---|
策略(policy) | 创建、读取、更新、删除 | 读取、更新 | 读取 |
PlacementBindings | 创建、读取、更新、删除 | 读取、更新 | 读取 |
放置 | 创建、读取、更新、删除 | 读取、更新 | 读取 |
PlacementRules (已弃用) | 创建、读取、更新、删除 | 读取、更新 | 读取 |
PolicyAutomations | 创建、读取、更新、删除 | 读取、更新 | 读取 |
API | Admin | Edit | View |
---|---|---|---|
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
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 表:
API | Admin | Edit | View |
| create、read、update 和 delete | 读取、更新 | 读取 |
| create, get, list, watch, update, delete, patch | - | - |
| get、list、watch | get、list、watch | get、list、watch |
要了解更多保护集群的信息,请参阅风险和合规性。