3.2. JMX 接続を使用したアプリケーションの設定


Cryostat がターゲット Java アプリケーションを検出して通信できるようにする場合、リモート Java Management Extensions (JMX) 接続を許可するようにアプリケーションを設定できます。

前提条件

  • Cryostat Web コンソールにログインしている。
  • プロジェクトに Cryostat インスタンスを作成している。

手順

  1. リモート JMX 接続を有効にするには、次の手順を実行します。

    1. アプリケーションで、次の Java システムプロパティーを定義します。

      -Dcom.sun.management.jmxremote.port=<port_num>
      注記

      ターゲットアプリケーションを再構築せずに -Dcom.sun.management.jmxremote.port=<port_num> プロパティーを追加するには、アプリケーションで JAVA_OPTS_APPEND 環境変数を設定します。JAVA_OPTS_APPEND は、Red Hat Universal Base Images (UBI) のみが使用する環境変数です。

      Red Hat UBI を使用してアプリケーションイメージをビルドする場合は、ビルド時にアプリケーション Docker ファイルで JAVA_OPTS_APPEND 変数を設定するか、ランタイム時に次のコマンドを実行して、JAVA_OPTS_APPEND 変数を設定します。

      oc set env deployment <name> JAVA_OPTS_APPEND="..."

      Red Hat UBI を使用してアプリケーションイメージをビルドしない場合は、ベースイメージのドキュメントを参照し、ビルド時またはランタイム時に Java システムプロパティーを追加する方法を確認してください。

    2. アプリケーションへのトラフィックを許可して、アプリケーションがリモート JMX 接続をリッスンするように指定します。Red Hat OpenShift Service を使用し、そのリモート JMX ポートに次の値を指定します。

      service.yaml の例

      apiVersion: v1
      kind: Service
      ...
      spec:
        ports:
          - name: "jfr-jmx"
            port: 9091
            targetPort: 9091
      ...

  2. リモート JMX 接続をセキュリティー保護します。

    1. アプリケーションで、リモート JMX 接続の認証と SSL/TLS を有効にして設定します。

      -Dcom.sun.management.jmxremote.port=<port_num>
      
       # enable JMX authentication
      -Dcom.sun.management.jmxremote.authenticate=true
      
      # define users for JMX auth
      -Dcom.sun.management.jmxremote.password.file=</path/to/jmxremote.password>
      
      # set permissions for JMX users
      -Dcom.sun.management.jmxremote.access.file=</path/to/jmxremote.access>
      
       # enable JMX SSL
       -Dcom.sun.management.jmxremote.ssl=true
      
      # enable JMX registry SSL
      -Dcom.sun.management.jmxremote.registry.ssl=true
      
      # set your SSL keystore
      -Djavax.net.ssl.keyStore=</path/to/keystore>
      
      # set your SSL keystore password
      -Djavax.net.ssl.keyStorePassword=<password>
    2. アプリケーションの TLS 証明書を信頼するように Cryostat を設定します。Cryostat アプリケーションと同じ namespace にアプリケーションのシークレットを作成し、そのシークレットを参照するように Cryostat を設定します。証明書のシークレットを作成するには、次のコマンドを実行します。

      oc create secret generic myapp-cert --from-file=tls.crt=/path/to/cert.pem
      注記

      証明書は .pem ファイル形式である必要があります。

    3. Cryostat インスタンスの作成時に、信頼できる TLS 証明書のリストにシークレットを追加します。詳細は、TLS 証明書の設定 を参照してください。
    4. パスワード認証以外の方法で Cryostat がアプリケーションに接続していることをアプリケーションが検証できるようにするために、TLS クライアント認証を有効にします。

      -Dcom.sun.management.jmxremote.ssl.need.client.auth=true
      -Djavax.net.ssl.trustStore=</path/to/truststore>
      -Djavax.net.ssl.trustStorePassword=<password>
      注記

      TLS クライアント認証には、Red Hat OpenShift の cert-manager Operator が必要です。

    5. リモート JMX 接続に TLS クライアント認証を使用する場合、アプリケーションのトラストストアに Cryostat 証明書が含まれている必要があります。Cryostat Operator の cert-manager の統合により、Cryostat デプロイメント用の自己署名証明書が作成されます。この証明書は <cryostat>-tls シークレットにあります。<cryostat> は作成した Cryostat インスタンスの名前です。

      注記

      cert-manager Operator は、このシークレットに Java キーストアトラストストアも配置します。

      このトラストストアをアプリケーションデプロイメントにマウントするには、次のコマンドを実行します。"<myapp>" はアプリケーションデプロイメントの名前に置き換え、"<cryostat>" は Cryostat インスタンスの名前に置き換えてください。

      oc set volumes deploy <myapp> --add --name=truststore \
        --secret-name=<cryostat>-tls --sub-path=truststore.p12 \
        --mount-path=/var/run/secrets/<myapp>/truststore.p12
    6. Cryostat Operator はトラストストアのパスワードを生成します。このパスワードは、<cryostat>-keystore シークレットにあります。これをアプリケーションのデプロイメントで環境変数としてマウントするには、次のコマンドを実行します。

      oc set env deploy <myapp> --from='secret/<cryostat>-keystore'
    7. コンテナーの Java 引数を設定します。以下のコマンドを実行します。

      -Dcom.sun.management.jmxremote.ssl.need.client.auth=true
      -Djavax.net.ssl.trustStore=/var/run/secrets/<myapp>/truststore.p12
      -Djavax.net.ssl.trustStorePassword="$(KEYSTORE_PASS)"
      警告

      Cryostat とアプリケーションをテスト環境にデプロイした場合は、JMX または TLS 認証を使用せずにターゲットアプリケーションを設定することもできます。これは、次の Java システムプロパティーのセットを使用して行うことができますが、この設定はセキュアではないため、推奨されません。

      -Dcom.sun.management.jmxremote.port=<port_num>
      -Dcom.sun.management.jmxremote.ssl=false
      -Dcom.sun.management.jmxremote.authenticate=false
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る