第 3 章 RBAC 映射配置
在 OpenShift Container Platform (OCP)上,Cryostat 使用权限配置将 OCP 资源映射到 Cryostat 管理的资源。权限配置为 Cryostat 提供了一个框架,用于授权用户执行某些操作,如创建 JFR 记录或查看发现的目标。
下表概述了代表 Cryostat 管理的资源的定义:
资源 | 描述 |
---|---|
| 通过启用加密连接到 JVM 应用的 SSL 证书。 |
| 为启用了 JMX 的身份验证的目标存储凭证。 |
| 为 JVM 应用程序创建的记录。 |
| 报告从记录生成的内容。 |
| 自动规则在匹配目标上开始记录,以非交互方式使用 Cryostat。 |
| 要监控的 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
字段中定义的 ConfigMap
、ClusterRole
和 filename
字段的 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 命名空间中运行的每个用户设置特定权限时,此功能很有用。
前提条件
- 使用 OpenShift Web 控制台登录到 OpenShift Container Platform。
- 在项目中创建 Cryostat 实例。请参阅使用 操作器在 OpenShift 上安装 Cryostat (使用 Cryostat 开始)。
流程
在
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 令牌。在 Cryostat 自定义资源(CR)中提供
authProperties
spec,以引用包含映射内容的ConfigMap
和ClusterRole
,为映射的 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 Name
、ConfigMap Name
和Filename
属性,您可以在Advanced configuration
部分中访问它们。图 3.1. OpenShift Web 控制台中的高级配置部分
验证
- 在 Installed Operators 菜单中,选择您的 Cryostat 实例。
-
单击 Application URL 部分中的链接,以访问登录屏幕。
OAuth
服务器将您重定向到 OpenShift Container Platform 登录页面。 -
输入您的凭证详情,然后点 Login。第一次通过
OAuth
服务器登录时,网页浏览器上打开一个 Authorize Access 页面。 - 在 Requested Permissions 选项中,确认集群角色名称与您在 Cryostat CR 中指定的名称匹配。
在 Authorize Access 窗口中,您可以选择所需的复选框。为了获得最佳 Cryostat 性能,请选中所有复选框。
图 3.2. 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)的访问外。
选择以下选项之一:
- 如果要接受所选请求的权限,请点击 Allow selected permissions。
如果要拒绝所有请求的权限选项,请单击 Deny 按钮。
您的 Web 浏览器将您重定向到 Cryostat Web 控制台,您可以在其中监控 Java 虚拟机(JVM)中运行的 Java 应用程序。
其他资源
- 请参阅使用 Cryostat Operator (通过 Cryostat 开始)在 OpenShift 上安装 Cryostat。
修订于 2022-12-17 19:28:32 +1000