第3章 RBAC マッピングの設定
OpenShift Container Platform (OCP)では、Cryostat は OCP リソースを Cryostat が管理するリソースにマップするパーミッション設定を使用します。パーミッション設定は、JFR レコーディングの作成や検出されたターゲットの表示など、特定のアクションを実行するようにユーザーを承認するためのフレームワークを Cryostat に提供します。
次の表は、Cryostat のマネージドリソースを表す定義の概要を示しています。
リソース | 説明 |
---|---|
| 暗号化を有効にして Java 仮想マシン (JVM) アプリケーションに接続する SSL 証明書。 |
| ターゲット JVM アプリケーションの保存された認証情報。 |
| JVM アプリケーション用に作成された記録。 |
| レコーディングから生成された報告の内容 |
| 一致するターゲットを非対話的に利用できるようになったときに、一致するターゲットのレコーディングを開始する自動化ルール。 |
| 監視対象として検出された JVM アプリケーション。 |
| レコーディングを設定するためのイベントテンプレート。 |
パーミッション設定は、前述のリソース定義と同等の OCP リソースのリストを定義します。API リクエストは、リソースアクションを指定して、Cryostat が管理するリソースパーミッションを OCP リソースに変換します。Cryostat は、このアクションの各 API 要求を確認してから、API 要求を送信します。
Cryostat はリソース検証ペアを各エンドポイントに割り当てます。これらの動詞はカスタムであり、Cryostat に固有のものです。パーミッションの確認時に、Cryostat はカスタム動詞を RBAC 動詞に変換します。
以下の動詞をこれらの Cryostat が管理するリソースに実装できます。
-
CREATE
: create -
DELETE
: delete -
READ
: get -
UPDATE
: patch
以下の例は、Cryostat が管理するリソースを Red Hat OpenShift リソースの一覧にリンクするマッピング設定を示しています。
TARGET=pods,services
Recordings ページの Target JVM ペインから検出された JVM ターゲットの一覧を出力する API 要求を作成するには、検出可能な TARGET
を表示するには、READ
パーミッションが必要です。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 が管理するリソースがすべてリストされていません。Cryostat が管理するリソースが ConfigMap
にない場合、Cryostat は API 要求の処理中のパーミッションチェックを省略します。
Red Hat build of Cryostat Operator は、提供された ConfigMap
API オブジェクトから Red Hat OpenShift 上の Cryostat Pod にこれらの設定を適用します。Cryostat Pod はいつでもこれらの設定にアクセスし、ユーザーが Cryostat 機能にアクセスできるパーミッションを確認できます。次に、これらのマッピングされた Red Hat OpenShift リソースに特定の権限を提供するカスタムリソース (CR) で ClusterRole
を定義できます。
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 権限を持つカスタムロールを作成し、このロールをユーザーの Red Hat OpenShift アカウントにバインドできます。この機能は、同じ Cryostat namespace 内で操作する各ユーザーに特定の権限を設定する場合に役立ちます。
前提条件
- Red Hat OpenShift Web コンソールを使用して OpenShift Container Platform にログインしている。
- プロジェクトに Cryostat インスタンスを作成している。Operator を使用して Red Hat 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
が存在し、カスタムパーミッションマッピングにリストされているすべての 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 トークンを生成します。Cryostat カスタムリソース (CR) に
authProperties
仕様を指定して、マッピングコンテンツを保持する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 Name
、ConfigMap Name
、およびFilename
プロパティーを定義できます。これは、Advanced configuration
セクションでアクセスできます。図3.1 OpenShift Web コンソールの Advanced configuration セクション
検証
- Installed Operators メニューから、Cryostat インスタンスを選択します。
-
Application URL セクションのリンクをクリックして、ログイン画面にアクセスします。
OAuth
サーバーは、ユーザーを OpenShift Container Platform ログインページにリダイレクトします。 -
認証情報の詳細を入力し、ログイン をクリックします。
OAuth
サーバーを介して初めてログインすると、Web ブラウザーに Authorize Access ページが開きます。 - Requested Permissions オプションから、クラスターのロール名が Cryostat CR で指定した名前と一致することを確認します。
Authorize Access ウィンドウで、必要なチェックボックスを選択します。Cryostat のパフォーマンスを最適化するには、すべてのチェックボックスを選択します。
図3.2 3 つのパーミッションを一覧表示する Authorize Access ウィンドウ
Authorize Access ウィンドウには、以下のパーミッションが一覧表示されます。
- user:check-access: 内部 Cryostat アプリケーションリクエストを確認するパーミッションです。パーミッションは、権限を表示する読み取り専用権限を持つユーザーを提供します。
-
role:cryostat-operator-oauth-client:<namespace> は、内部の Cryostat アプリケーション要求を確認するパーミッションです。<namespace> は、CLI からのプロジェクト名または namespace に置き換えます。パーミッションにより、シークレットなどのリソースのエスカレーションへのアクセスを除き、
cryostat-operator-oauth-client
ロールが指定する操作を完了するためのアクセスをユーザーに提供します。 -
role:<user-define-clusterrole-name>:<namespace>: Cryostat CR 仕様で定義した
clusterrole
。<namespace> は、CLI からのプロジェクト名または namespace に置き換えます。パーミッション は、シークレットなどのリソースへのアクセスを昇格する場合を除き、additional-oauth-client role
で指定する操作を実行するアクセス権をユーザーに割り当てます。
以下のいずれかのオプションを選択します。
- 要求したパーミッションのうち、選択した内容で問題がなければ、Allow selected permissions をクリックします。
要求したパーミッションの選択内容をすべて拒否する場合は、Deny ボタンをクリックします。
Web ブラウザーによって Cryostat Web コンソールにリダイレクトされます。このコンソールでは、Java 仮想マシン (JVM) で実行されている Java アプリケーションを監視できます。
関連情報
- Red Hat build of Cryostat Operator を使用した Red Hat OpenShift への Cryostat のインストール (Cryostat のインストール) を参照してください。
改訂日時: 2023-12-13