搜索

第 3 章 RBAC 映射配置

download PDF

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

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

资源描述

CERTIFICATE

通过启用加密连接到 JVM 应用的 SSL 证书。

凭证

为启用了 JMX 的身份验证的目标存储凭证。

记录

为 JVM 应用程序创建的记录。

报告

报告从记录生成的内容。

规则

自动规则在匹配目标上开始记录,以非交互方式使用 Cryostat。

TARGET

要监控的 JVM 应用。

模板

配置记录的事件模板。

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

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

您可以在这些 Cryostat-managed 资源上实施以下操作动词:

  • CREATE :create
  • DELETE: delete
  • READ: get
  • UPDATE: patch

以下示例显示了将 Cryostat-managed 资源链接到 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-managed 资源。如果 ConfigMap 中缺少 Cryostat 管理的资源,Cryostat 会在处理 API 请求期间跳过权限检查。

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

显示了一个在 spec 字段中定义的 ConfigMapClusterRolefilename 字段的 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

其他资源

  • 请参阅 RBAC 权限 (使用 Cryostat 开始)。

3.1. 配置 RBAC 映射

您可以使用特定于 Cryostat 的 RBAC 权限创建自定义角色,然后将此角色绑定到用户的 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 必须存在,并包含自定义权限映射中列出的所有 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

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

  2. 在 Cryostat 自定义资源(CR)中提供 authProperties spec,以引用包含映射内容的 ConfigMapClusterRole,为映射的 OpenShift 资源定义 RBAC 访问权限。

    带有定义自定义权限映射的 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

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

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

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

验证

  1. Installed Operators 菜单中,选择您的 Cryostat 实例。
  2. 单击 Application URL 部分中的链接,以访问登录屏幕。OAuth 服务器将您重定向到 OpenShift Container Platform 登录页面。
  3. 输入您的凭证详情,然后点 Login。第一次通过 OAuth 服务器登录时,网页浏览器上打开一个 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 应用程序。

修订于 2022-12-17 19:28:32 +1000

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.