搜索

第 3 章 RBAC 映射配置

download PDF

在 OpenShift Container Platform (OCP)上,Cryostat 使用一个权限配置,它将 OCP 资源映射到 Cryostat 管理的资源。权限配置提供 Cryostat 框架,用于授权用户执行某些操作,如创建 JFR 记录或查看发现的目标。

下表概述了代表 Cryostat 管理的资源的定义:

资源描述

CERTIFICATE

通过启用加密连接到 Java 虚拟机(JVM)应用的 SSL 证书。

凭证

存储的目标 JVM 应用凭据。

记录

为 JVM 应用创建的记录。

报告

报告从记录生成的内容。

规则

自动规则在匹配目标上开始记录,当它们对 Cryostat 可用时,以非交互方式进行记录。

TARGET

用于监控的 JVM 应用。

模板

配置记录的事件模板。

权限配置定义与前面列出的资源定义等效的 OCP 资源列表。API 请求指定资源操作,以将 Cryostat 管理的资源权限转换为 OCP 资源。Cryostat 检查这个操作的每个 API 请求,然后处理 API 请求。

Cryostat 为每个端点分配 resource-verb 对。这些动词是自定义的,特定于 Cryostat。在权限检查过程中,Cryostat 会将自定义动词转换为 RBAC 动词。

您可以在这些 Cryostat 管理的资源上实现以下动词:

  • CREATE :创建
  • DELETE :删除
  • READ: get
  • UPDATE: patch

以下示例显示了将 Cryostat 管理的资源链接到 Red Hat OpenShift 资源列表的映射配置:

TARGET=pods,services

要创建输出已发现 JVM 目标列表的 API 请求,例如从 Recordings 页面上的 Target JVM 窗格,您必须具有 READ 权限才能查看可发现的 TARGET。在 RBAC 系统中,READ 权限提供对读取 pod 和服务的访问。

默认情况下,Cryostat 使用以下 RBAC 映射配置。

auth.properties:
    TARGET=pods,services
    RECORDING=pods,pods/exec,cryostats.operator.cryostat.io
    CERTIFICATE=pods,cryostats.operator.cryostat.io
    CREDENTIALS=pods,cryostats.operator.cryostat.io
注意

ConfigMap 定义映射内容。前面的例子不会列出所有 Cryostat 管理的资源。如果 ConfigMap 中没有 Cryostat 管理的资源,Cryostat 会在处理 API 请求的过程中跳过权限检查。

Red Hat build of Cryostat Operator 将提供的 ConfigMap API 对象中的这些设置项目到 Red Hat OpenShift 上的 Cryostat pod 中。您的 Cryostat pod 可以随时访问这些设置,以确认用户可以访问的 Cryostat 功能。然后,您可以在自定义资源(CR)中定义 ClusterRole,为这些映射的 Red Hat OpenShift 资源提供特定权限。

显示 Cryostat CR 示例,其中包含 spec 字段中定义的 ConfigMapClusterRolefilename 字段

apiVersion: operator.cryostat.io/v1beta1
kind: Cryostat
metadata:
  name: cryostat-sample
spec:
  authProperties:
    configMapName: auth-properties
    filename: auth.properties
    clusterRoleName: oauth-cluster-role

其他资源

3.1. 配置 RBAC 映射

您可以使用特定于 Cryostat 的 RBAC 权限创建自定义角色,然后将此角色绑定到用户的 Red Hat OpenShift 帐户。当您想为在同一 Cryostat 命名空间中运行的每个用户设置特定权限时,此功能很有用。

先决条件

流程

  1. ConfigMap 中定义自定义权限映射。

    包含权限映射的 ConfigMap 示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: auth-properties
    data:
      auth.properties: |
        TARGET=pods,deployments.apps
        RECORDING=pods,pods/exec
        CERTIFICATE=deployments.apps,pods,cryostats.operator.cryostat.io
        CREDENTIALS=cryostats.operator.cryostat.io

    要使用自定义权限映射,ClusterRole 必须存在,并包含自定义权限映射中列出的所有 Red Hat OpenShift 对象的权限。

    包含必要规则的 ClusterRole 示例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: additional-oauth-client
    rules:
    - apiGroups:
      - operator.cryostat.io
      resources:
      - cryostats
      verbs:
      - create
      - patch
      - delete
      - get
    - apiGroups:
      - ""
      resources:
      - pods
      - pods/exec
      verbs:
      - create
      - patch
      - delete
      - get
    - apiGroups:
      - apps
      resources:
      - deployments
      verbs:
      - create
      - patch
      - delete
      - get

    在 Red Hat OpenShift Web 控制台中输入凭证后,OAuth 服务器使用您的凭证和指定的范围来生成 API 令牌。

  2. 在 Cryostat 自定义资源(CR)中提供 authProperties spec,以引用包含映射内容的 ConfigMap,以及为这些映射的 Red Hat OpenShift 资源定义 RBAC 访问的 ClusterRole

    带有定义自定义权限映射的 authProperties 的 Cryostat CR 示例

    apiVersion: operator.cryostat.io/v1beta1
    kind: Cryostat
    metadata:
      name: cryostat-sample
    spec:
      authProperties:
    	configMapName: auth-properties
    	filename: auth.properties
    	clusterRoleName: oauth-cluster-role

    另外,您可以打开 Red Hat OpenShift Web 控制台,创建一个 Cryostat 实例,并在 Authorization Properties 选项中定义 ClusterRole NameConfigMap NameFilename 属性,您可以在 Advanced configuration 部分中访问它。

    图 3.1. OpenShift Web 控制台的高级配置部分

    Red Hat OpenShift Web 控制台的高级配置部分

验证

  1. Installed Operators 菜单中,选择 Cryostat 实例。
  2. 单击 Application URL 部分中的链接,以访问登录屏幕。OAuth 服务器将您重定向到 OpenShift Container Platform 登录页面。
  3. 输入您的凭证详情,然后点 Login。对于您第一次通过 OAuth 服务器登录时,您的 Web 浏览器上会打开一个 Authorize Access 页面。
  4. Requested Permissions 选项中,确认集群角色名称与您在 Cryostat CR 中指定的名称匹配。
  5. Authorize Access 窗口中,您可以选择所需的复选框。要获得最佳 Cryostat 性能,请选择所有复选框。

    图 3.2. 列出三个权限的 Authorize Access 窗口

    列出三个权限的 *Authorize Access* 窗口

    Authorize Access 窗口列出了以下权限:

    • user:check-access,这是检查内部 Cryostat 应用程序请求的权限。权限为用户提供了查看其特权的只读访问权限。
    • role:cryostat-operator-oauth-client:<namespace >,它是内部 Cryostat 应用程序请求的权限检查。通过 CLI 将 < namespace > 替换为项目名称或命名空间的名称。权限允许用户完成 cryostat-operator-oauth-client 角色指定的操作,但升级资源(如 secret)的权限除外。
    • role:<user-define-clusterrole-name>:<namespace > : 您在 Cryostat CR spec 中定义的 clusterrole。通过 CLI 将 < namespace > 替换为项目名称或命名空间的名称。权限允许用户完成 additional-oauth-client 角色 指定的任何操作的访问权限,但升级对资源(如 secret)的访问。
  6. 选择以下选项之一:

    1. 如果要接受所选请求权限,请点击 Allow selected permissions
    2. 如果要拒绝所有请求的权限选项,请单击 Deny 按钮。

      您的 Web 浏览器会将您重定向到 Cryostat web 控制台,您可以在其中监控 Java 虚拟机(JVM)中运行的 Java 应用程序。

更新于 2023-12-13

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.