2.3. 在 OpenShift 4.x 上对 Fuse 控制台进行基于角色的访问控制


Fuse 控制台提供基于角色的访问控制(RBAC),根据 OpenShift 提供的用户授权访问。在 Fuse 控制台中,RBAC 决定用户对 pod 执行 MBean 操作的能力。

如需有关 OpenShift 授权的信息,请参阅 OpenShift 文档中的使用 RBAC 定义和应用权限 部分。

当使用 Operator 在 OpenShift 上安装 Fuse 控制台时,默认启用基于角色的访问控制。

如果要使用模板安装 Fuse 控制台,为它实施基于角色的访问权限,则必须使用可通过 RBAC 配置的模板之一(fuse-console-cluster-rbac.ymlfuse-console-namespace-rbac.yml)来安装 Fuse 控制台,如 使用命令行在 OpenShift 4.x 上安装和部署 Fuse 控制台

Fuse 控制台 RBAC 利用 OpenShift 中 pod 资源的用户 动词 访问权限,以确定用户在 Fuse 控制台中对 pod 的 MBean 操作的访问权限。默认情况下,Fuse 控制台有两个用户角色:

  • admin

    如果用户可以在 OpenShift 中更新 pod,则该用户将延迟到 Fuse Console 的 admin 角色。用户可以在 Fuse Console 中为 pod 执行 write MBean 操作。

  • Viewer

    如果用户可以在 OpenShift 中获取 pod,则该用户为 Fuse Console 会延迟到 查看器 角色。用户可在 Pod 的 Fuse Console 中执行 只读 MBean 操作。

注意

如果您使用了非RBAC 模板来安装 Fuse 控制台,只有在 pod 资源上授予 update 动词的 OpenShift 用户才会被授权执行 Fuse Console MBeans 操作。在 pod 资源上授予 get 动词的 用户可以查看 pod,但它们无法执行任何 Fuse 控制台操作。

2.3.1. 在 OpenShift 4.x 上确定 Fuse 控制台的访问角色

基于 Fuse 控制台角色的访问控制是从用户的 OpenShift 权限推断出来的。要确定授予特定用户的 Fuse Console 访问权限角色,请获取为 Pod 用户授予的 OpenShift 权限。

先决条件

  • 您知道用户的名称。
  • 您知道 pod 的名称。

流程

  • 要确定用户是否具有 pod 的 Fuse Console admin 角色,请运行以下命令来查看用户是否可以在 OpenShift 上更新 pod:

    oc auth can-i update pods/<pod> --as <user>

    如果响应是 yes,该用户具有 pod 的 Fuse Console admin 角色。用户可以在 Fuse Console 中为 pod 执行 write MBean 操作。

  • 要确定用户是否具有 pod 的 Fuse Console viewer 角色,请运行以下命令来查看用户是否可以在 OpenShift 上获取 pod:

    oc auth can-i get pods/<pod> --as <user>

    如果响应是 yes,该用户具有 pod 的 Fuse Console viewer 角色。用户可在 Pod 的 Fuse Console 中执行 只读 MBean 操作。根据上下文,Fuse Console 通过禁用选项或在用户尝试 write MBean 操作时,Fuse Console 可防止具有 viewer 角色的用户执行 write MBean 操作的用户。

    如果没有 响应,用户不会绑定到任何 Fuse Console 角色,用户无法在 Fuse Console 中查看 pod。

2.3.2. 自定义 OpenShift 4.x 上的 Fuse 控制台基于角色的访问权限

如果您使用 OperatorHub 安装 Fuse 控制台,则默认启用 基于角色的访问控制(RBAC),如 OpenShift 4.x 上 Fuse Console 的基于角色的访问控制所述。如果要在部署 Fuse 控制台 RBAC 之前自定义 Fuse 控制台 RBAC 行为,您必须提供 ConfigMap 文件(定义自定义 RBAC 行为)。您必须将自定义 ConfigMap 文件放在安装 Fuse Console Operator 的同一命名空间中。

如果使用命令行模板来安装 Fuse 控制台,则 deployment-cluster-rbac.ymldeployment-namespace-rbac.yml 模板会创建一个包含配置文件(ACL.yml)的 ConfigMap。配置文件定义 MBean 操作允许的角色。

前提条件

  • 已使用 OperatorHub 或使用其中一个 Fuse 控制台 RBAC 模板(deployment-cluster-rbac.ymldeployment-namespace-rbac.yml)安装 Fuse 控制台。

流程

自定义 Fuse 控制台 RBAC 角色:

  1. 如果使用命令行安装了 Fuse 控制台,安装模板会包括默认 ConfigMap 文件,以便您可以跳至下一步。

    如果在部署 Fuse Console 创建 RBAC ConfigMap 前,使用 OperatorHub 安装 Fuse 控制台:

    1. 确保当前的 OpenShift 项目是您要安装 Fuse 控制台的项目。例如,如果您要在 fusetest 项目中安装 Fuse 控制台,请运行以下命令:

      oc project fusetest
    2. 要从模板创建 Fuse 控制台 RBAC ConfigMap 文件,请运行以下命令:

      oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/2.1.x.sb2.redhat-7-8-x/fuse-console-operator-rbac.yml -p APP_NAME=fuse-console | oc create -f -
  2. 运行以下命令在编辑器中打开 ConfigMap:

    oc edit cm $APP_NAME-rbac

    例如:

    oc edit cm fuse-console-rbac
  3. 编辑该文件。
  4. 保存文件以使改变生效。OpenShift 会自动重启 Fuse 控制台 Pod。

2.3.3. 在 OpenShift 4.x 上为 Fuse 控制台禁用基于角色的访问控制

如果您使用命令行安装了 Fuse 控制台,并且指定了其中一个 Fuse 控制台 RBAC 模板,则 Fuse Console 的 HAWTIO_ONLINE_RBAC_ACL 环境变量将基于角色的访问控制(RBAC)ConfigMap 配置文件路径传递给 OpenShift 服务器。如果没有指定 HAWTIO_ONLINE_RBAC_ACL 环境变量,则只禁用 RBAC 支持,只有在 pod 资源(OpenShift 中)上授予 更新 动词的用户才可以在 Fuse 控制台中调用 MBeans 操作。

请注意,当使用 OperatorHub 安装 Fuse 控制台时,默认启用基于角色的访问权限,而 HAWTIO_ONLINE_RBAC_ACL 环境变量不适用。

前提条件

您使用命令行安装 Fuse 控制台,并指定了其中一个 Fuse 控制台 RBAC 模板(deployment-cluster-rbac.ymldeployment-namespace-rbac.yml)。

流程

为 Fuse 控制台禁用基于角色的访问控制访问:

  1. 在 OpenShift 中,编辑 Fuse 控制台的 Deployment Config 资源。
  2. 删除整个 HAWTIO_ONLINE_RBAC_ACL 环境变量定义。

    (请注意,仅清除其值就不足)。

  3. 保存文件以使改变生效。OpenShift 会自动重启 Fuse 控制台 Pod。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.