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>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个角色是一个超级用户,可访问所有资源和操作。您可以使用此角色为应用程序和命名空间中的所有应用程序资源创建命名空间。
创建将资源部署到多个命名空间的应用程序。您必须创建一个集群角色绑定到
open-cluster-management:subscription-admin集群角色,并将其绑定到名为username的用户。运行以下命令:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用用户名用户创建和管理cluster-name受管集群中的应用程序。您必须输入以下命令创建一个到open-cluster-management:admin:<cluster-name>集群角色绑定的集群角色绑定,并将其绑定到username:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对受管集群
cluster-name上所有application资源的读写访问权限。如果需要访问其他受管集群,请重复此操作。输入以下命令,创建一个到使用
admin角色的application命名空间的命名空间角色绑定,并把它绑定到username:oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对
application命名空间中的所有application资源的读和写的访问权限。如果需要访问其他应用程序,或者应用部署到多个命名空间,请重复此操作。您可以创建将资源部署到多个命名空间的应用程序。输入以下命令创建到
open-cluster-management:subscription-admin集群角色的集群角色绑定,并将其绑定到username:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用名为
username的用户查看在一个名为cluster-name的受管集群中的应用程序,请创建一个集群角色绑定到open-cluster-management:view:集群角色,并将其绑定到username。输入以下命令:oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对受管集群
cluster-name上所有application资源的读访问权限。如果需要访问其他受管集群,请重复此操作。使用
view角色创建到application命名空间的命名空间角色绑定,并将它绑定到username。输入以下命令:oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此角色具有对
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。
在选择了命名空间后,如 rhacm-policies,带有一个或多个绑定的 ManagedClusterSets,并在您有权在命名空间中创建 放置 对象后,查看以下操作:
要使用
Policy,PlacementBinding, 和PolicyAutomationedit 访问创建名为rhacm-edit-policy的ClusterRole,请运行以下命令: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
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,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要在
rhacm-policies命名空间中创建策略,请使用之前创建的ClusterRole将命名空间RoleBinding(如rhacm-edit-policy)创建到rhacm-policies命名空间。运行以下命令:oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看受管集群的策略状态,您需要有权查看 hub 集群上的受管集群命名空间中的策略。如果您没有
查看访问权限,如通过 OpenShift视图ClusterRole,请创建一个ClusterRole,如rhacm-view-policy,使用以下命令查看策略的访问权限:oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将新
ClusterRole绑定到受管集群命名空间,请运行以下命令来创建命名空间RoleBinding:oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作为集群管理员,在受管集群命名空间中创建一个
managedClusterView角色。运行以下命令:oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,通过创建角色绑定来将角色应用到用户。运行以下命令:
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索资源。
要验证用户是否可以访问资源类型,请使用以下命令:
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备注:
<resource-type>必须是复数。要在 Grafana 中查看可观察性数据,则必须在受管集群相同的命名空间中有一个
RoleBinding资源。查看以下
RoleBinding示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如需更多信息,请参阅角色绑定策略。请参阅 Observability 高级配置 来配置可观察性。
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 |