6.2. OpenShift 4 上 HawtIO 的基于角色的访问控制
HawtIO 提供基于角色的访问控制(RBAC),根据 OpenShift 提供的用户授权来推断访问。在 HawtIO 中,RBAC 决定用户在 pod 上执行 MBean 操作的能力。
如需有关 OpenShift 授权的信息,请参阅 OpenShift 文档中的使用 RBAC 定义和应用权限 部分。
当使用 Operator 在 OpenShift 上安装 HawtIO 时,默认启用基于角色的访问控制。HawtIO RBAC 利用 OpenShift 中 pod 资源的操作动词访问,以确定用户在 HawtIO 中对 pod 的 MBean 操作的访问权限。默认情况下,hawtIO 有两个用户角色:
- admin: 如果用户可以在 OpenShift 中更新 pod,则用户会被路由了 HawtIO 的 admin 角色。用户可以在 HawtIO 中对 pod 执行写入 MBean 操作。
- viewer: 如果用户可以在 OpenShift 中获取 pod,则用户会被路由了 HawtIO 的 viewer 角色。用户可以在 HawtIO 中对 pod 执行只读 MBean 操作。
6.2.1. 在 OpenShift 4 上确定 HawtIO 的访问角色 复制链接链接已复制到粘贴板!
HawtIO 基于角色的访问控制从用户的 OpenShift 权限中推断出来。要确定授予特定用户的 HawtIO 访问权限角色,可获取授予某一容器集的用户的 OpenShift 权限。
先决条件:
- 用户名
- pod 的名称
流程 :
要确定用户是否有 pod 的 HawtIO admin 角色,请运行以下命令来查看用户是否可以更新 OpenShift 上的 pod:
oc auth can-i update pods/<pod> --as <user>
oc auth can-i update pods/<pod> --as <user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果响应是 yes,则用户具有 Pod 的 admin 角色。用户可以在 HawtIO 中为 pod 执行写入操作。
要确定用户是否有 pod 的 HawtIO viewer 角色,请运行以下命令来查看用户是否可以在 OpenShift 上获取 pod:
oc auth can-i get pods/<pod> --as <user>
oc auth can-i get pods/<pod> --as <user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果响应是 yes,用户具有 Pod 的 viewer 角色。用户可以在 HawtIO 中为 pod 执行只读操作。根据上下文,S HawtIO 可防止具有 viewer 角色的用户执行写入 MBean 操作,方法是禁用一个选项,或者在用户尝试写 MBean 操作时显示 不允许的操作。
- 如果响应是 no,用户没有绑定到任何 HawtIO 角色,用户无法查看 HawtIO 中的 pod。
6.2.2. 在 OpenShift 4 中自定义对 HawtIO 的基于角色的访问 复制链接链接已复制到粘贴板!
如果您使用 OperatorHub 安装 HawtIO,则默认启用基于角色的访问控制(RBAC)。要自定义 HawtIO RBAC 行为,在部署 HawtIO 之前,必须提供 ConfigMap 资源(定义自定义 RBAC 行为)。此 ConfigMap 的名称应在 HawtIO 自定义资源(CR)的 rbac 配置部分中输入。
自定义 ConfigMap 资源必须添加到安装了 HawtIO Operator 的同一命名空间中。
先决条件 :
- HawtIO Operator 已从 OperatorHub 安装。
流程 :
自定义 HawtIO RBAC 角色:
创建 RBAC ConfigMap:
确保当前的 OpenShift 项目是您要安装 HawtIO 的项目。例如,要在 hawtio-test 项目中安装 HawtIO,请运行以下命令:
oc project hawtio-test
oc project hawtio-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从模板创建 HawtIO RBAC ConfigMap 文件,并运行以下命令:
oc process -f https://raw.githubusercontent.com/hawtio/hawtio-online/2.x/docker/ACL.yaml -p APP_NAME=custom-hawtio | oc create -f -
oc process -f https://raw.githubusercontent.com/hawtio/hawtio-online/2.x/docker/ACL.yaml -p APP_NAME=custom-hawtio | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令编辑新的自定义 ConfigMap:
oc edit ConfigMap custom-hawtio-rbac
oc edit ConfigMap custom-hawtio-rbac
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存编辑后,将更新 ConfigMap 资源
- 如上所述,创建一个新的 HawtIO CR,并在属性 configMap 下添加新 ConfigMap 的名称来编辑 rbac 部分。
- 点 Create。Operator 应该部署一个新的 HawtIO 版本,以使用自定义 ConfigMap