検索

第3章 RBAC マッピングの設定

download PDF

OpenShift Container Platform (OCP)では、Cryostat は OCP リソースを Cryostat が管理するリソースにマップするパーミッション設定を使用します。パーミッション設定は、JFR レコーディングの作成や検出されたターゲットの表示など、特定のアクションを実行するようにユーザーを承認するためのフレームワークを Cryostat に提供します。

次の表は、Cryostat のマネージドリソースを表す定義の概要を示しています。

リソース説明

CERTIFICATE

暗号化を有効にして Java 仮想マシン (JVM) アプリケーションに接続する SSL 証明書。

CREDENTIALS

ターゲット JVM アプリケーションの保存された認証情報。

RECORDING

JVM アプリケーション用に作成された記録。

REPORT

レコーディングから生成された報告の内容

RULE

一致するターゲットを非対話的に利用できるようになったときに、一致するターゲットのレコーディングを開始する自動化ルール。

TARGET

監視対象として検出された JVM アプリケーション。

TEMPLATE

レコーディングを設定するためのイベントテンプレート。

パーミッション設定は、前述のリソース定義と同等の 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 フィールドで定義された ConfigMapClusterRole、および 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

関連情報

3.1. RBAC マッピングの設定

Cryostat 固有の RBAC 権限を持つカスタムロールを作成し、このロールをユーザーの Red Hat OpenShift アカウントにバインドできます。この機能は、同じ Cryostat namespace 内で操作する各ユーザーに特定の権限を設定する場合に役立ちます。

前提条件

手順

  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 仕様を指定して、マッピングコンテンツを保持する 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 Name、および Filename プロパティーを定義できます。これは、Advanced configuration セクションでアクセスできます。

    図3.1 OpenShift Web コンソールの Advanced configuration セクション

    Red Hat OpenShift Web コンソールの Advanced configuration セクション

検証

  1. Installed Operators メニューから、Cryostat インスタンスを選択します。
  2. Application URL セクションのリンクをクリックして、ログイン画面にアクセスします。OAuth サーバーは、ユーザーを OpenShift Container Platform ログインページにリダイレクトします。
  3. 認証情報の詳細を入力し、ログイン をクリックします。OAuth サーバーを介して初めてログインすると、Web ブラウザーに Authorize Access ページが開きます。
  4. Requested Permissions オプションから、クラスターのロール名が Cryostat CR で指定した名前と一致することを確認します。
  5. Authorize Access ウィンドウで、必要なチェックボックスを選択します。Cryostat のパフォーマンスを最適化するには、すべてのチェックボックスを選択します。

    図3.2 3 つのパーミッションを一覧表示する Authorize Access ウィンドウ

    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 で指定する操作を実行するアクセス権をユーザーに割り当てます。
  6. 以下のいずれかのオプションを選択します。

    1. 要求したパーミッションのうち、選択した内容で問題がなければ、Allow selected permissions をクリックします。
    2. 要求したパーミッションの選択内容をすべて拒否する場合は、Deny ボタンをクリックします。

      Web ブラウザーによって Cryostat Web コンソールにリダイレクトされます。このコンソールでは、Java 仮想マシン (JVM) で実行されている Java アプリケーションを監視できます。

関連情報

改訂日時: 2023-12-13

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.