5.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 操作。
5.2.1. 确定 OpenShift 4 上 HawtIO 的访问角色
HawtIO 基于角色的访问控制是从用户的 pod 的 OpenShift 权限中推断出来的。要确定向特定用户授予 HawtIO 访问角色,请获取授予 Pod 用户的 OpenShift 权限。
先决条件:
- 用户名
- pod 的名称
流程 :
要确定用户是否为 pod 具有 HawtIO admin 角色,请运行以下命令来查看用户是否可以更新 OpenShift 上的 pod:
oc auth can-i update pods/<pod> --as <user>
- 如果响应是 yes,则用户具有 Pod 的 admin 角色。用户可以对 pod 执行 HawtIO 中的写入操作。
要确定用户是否为 pod 具有 HawtIO viewer 角色,请运行以下命令来查看用户是否可以在 OpenShift 上获取 pod:
oc auth can-i get pods/<pod> --as <user>
- 如果响应是 yes,则用户具有 pod 的 viewer 角色。用户可以在 HawtIO 中为 pod 执行只读操作。根据上下文,HawtIO 会阻止具有 viewer 角色的用户执行写入 MBean 操作,方法是禁用一个选项,或者在 用户尝试写入 MBean 操作时显示这个用户消息允许的操作。
- 如果没有响应,用户不会绑定到任何 HawtIO 角色,用户无法在 HawtIO 中查看 pod。
5.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
从模板创建 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 -
使用以下命令编辑新的自定义 ConfigMap:
oc edit ConfigMap custom-hawtio-rbac
- 通过保存编辑,ConfigMap 资源将更新
- 按照上述所述,创建一个新的 HawtIO CR,并通过在属性 configMap 下添加新 ConfigMap 的名称来编辑 rbac 部分。
- 点 Create。Operator 应该部署一个新版本的 HawtIO,以使用自定义 ConfigMap