4.4. AMQ 管理コンソールの設定


ユーザーアクセスを設定し、ブローカーのリソースへのアクセスを要求します。

4.4.1. Red Hat Single Sign-On を使用した AMQ 管理コンソールの保護

前提条件

  • Red Hat Single Sign-On 7.4

手順

  1. Red Hat Single Sign-On の設定

    1. AMQ 管理コンソールを保護するために使用する Red Hat Single Sign-On のレルムに移動します。Red Hat Single Sign-On の各レルムには、Broker という名前のクライアントが含まれます。このクライアントは AMQ とは関係ありません。
    2. Red Hat Single Sign-On で、artemis-console のような新しいクライアントを作成します。
    3. クライアント設定ページに移動し、次を設定します。

      • AMQ 管理コンソール URL への 有効なリダイレクト URI の後に * が続きます。例を以下に示します。

        https://broker.example.com:8161/console/*
      • Web OriginsValid Redirect URIs と同じ値にします。Red Hat Single Sign-On では、+ を入力できます。これは、許可される CORS オリジンに Valid Redirect URIs の値が含まれていることを示します。
    4. クライアントのロールを作成します (例:guest)。
    5. AMQ Management Console へのアクセスが必要なすべてのユーザーに上記のロールが割り当てられていることを確認します (たとえば、Red Hat Single Sign-On グループを使用)。
  2. AMQ Broker インスタンスを設定します。

    1. <broker-instance-dir>/instances/broker0/etc/login.config ファイルに以下を追加して、AMQ Management Console が Red Hat Single Sign-On を使用するように設定します。

      console {
          org.keycloak.adapters.jaas.BearerTokenLoginModule required
              keycloak-config-file="${artemis.instance}/etc/keycloak-bearer-token.json"
              role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal
          ;
      };

      この設定を追加すると、JAAS プリンシパルと、Red Hat Single Sign-On からのベアラートークンの要件が設定されます。次のステップで説明するように、Red Hat Single Sign-On への接続は keycloak-bearer-token.json ファイルで定義されます。

    2. 以下の内容で <broker-instance-dir>/etc/keycloak-bearer-token.json ファイルを作成し、ベアラートークンの交換に使用する Red Hat Single Sign-On への接続を指定します。

      {
        "realm": "<realm-name>",
        "resource": "<client-name>",
        "auth-server-url": "<RHSSO-URL>/auth",
        "principal-attribute": "preferred_username",
        "use-resource-role-mappings": true,
        "ssl-required": "external",
        "confidential-port": 0
      }
      <realm-name>
      Red Hat Single Sign-On のレルムの名前
      <client-name>
      Red Hat Single Sign-On でのクライアントの名前
      <RHSSO-URL>
      Red Hat Single Sign-On の URL
    3. 以下の内容で <broker-instance-dir>/etc/keycloak-js-token.json ファイルを作成し、Red Hat Single Sign-On 認証エンドポイントを指定します。

      {
        "realm": "<realm-name>",
        "clientId": "<client-name>",
        "url": "<RHSSO-URL>/auth"
      }
    4. <broker-instance-dir>/etc/broker.xml ファイルを編集して、セキュリティー設定を行います。

      たとえば、amq ロールを持つユーザーがメッセージを消費できるようにし、guest ロールを持つユーザーがメッセージを送信できるようにするには、以下を追加します。

               <security-setting match="Info">
                  <permission roles="amq" type="createDurableQueue"/>
                  <permission roles="amq" type="deleteDurableQueue"/>
                  <permission roles="amq" type="createNonDurableQueue"/>
                  <permission roles="amq" type="deleteNonDurableQueue"/>
                  <permission roles="guest" type="send"/>
                  <permission roles="amq" type="consume"/>
               </security-setting>
  3. AMQ Broker インスタンスを実行し、AMQ 管理コンソールの設定を検証します。

4.4.2. AMQ 管理コンソールへのユーザーアクセスの設定

ブローカーのログインクレデンシャルを使用して、AMQ 管理コンソールにアクセスできます。以下の表は、AMQ 管理コンソールにアクセスするためにブローカーユーザーを追加するさまざまな方法を説明します。

表4.1 ユーザーに AMQ 管理コンソールへのアクセス権限を付与する方法
認証方法説明

ゲスト認証

匿名アクセスを有効にします。この設定では、クレデンシャルなしまたは誤ったクレデンシャルで接続するユーザーは自動的に認証され、特定のユーザーとロールが割り当てられます。

詳細は、Configuring AMQ BrokerConfiguring guest access を参照してください。

基本的なユーザーとパスワード認証

各ユーザーに、ユーザー名とパスワードを定義してセキュリティーロールを割り当てる必要があります。ユーザーは、これらのクレデンシャルを使用して AMQ 管理コンソールにのみログインできます。

詳細は、Configuring AMQ BrokerConfiguring basic user and password authentication を参照してください。

LDAP 認証

ユーザーは、中央の X.500 ディレクトリーサーバーに保存されているユーザーデータに対してクレデンシャルをチェックして認証および認可されます。

詳細は、Configuring AMQ BrokerConfiguring LDAP to authenticate clients を参照してください。

4.4.3. AMQ 管理コンソールへのネットワークアクセスのセキュリティー保護

コンソールが WAN またはインターネット経由でアクセスされる際に AMQ 管理コンソールのセキュリティーを保護するには、ネットワークアクセスが http ではなく https を使用するように SSL で指定します。

前提条件

以下は、<broker_instance_dir>/etc/ ディレクトリーに配置されている必要があります。

  • Java キーストア
  • Java トラストストア (クライアント認証が必要な場合のみ必要)

手順

  1. <broker_instance_dir>/etc/bootstrap.xml ファイルを開きます。
  2. <web> 要素に以下の属性を追加します。

    <web path="web">
        <binding uri="https://0.0.0.0:8161" keyStorePath="<path_to_keystore>" keyStorePassword="<password>"
        clientAuth="<true/false>" trustStorePath="<path_to_truststore>" trustStorePassword="<password>">
        </binding>
    </web>
    bind
    コンソールへのセキュアな接続では、URI スキームを https に変更します。
    keyStorePath

    キーストアファイルのパス。以下に例を示します。

    keyStorePath="<broker_instance_dir>/etc/keystore.jks"
    keyStorePassword
    キーストアのパスワード。このパスワードは暗号化できます。
    clientAuth
    クライアント認証が必要であるかどうかを指定します。デフォルト値は false です。
    trustStorePath
    トラストストアファイルのパス。clientAuthtrue に設定されている場合のみ、この属性を定義する必要があります。
    trustStorePassword
    トラストストアのパスワード。このパスワードは暗号化できます。

関連情報

4.4.4. 証明書ベースの認証を使用するように AMQ 管理コンソールを設定する

パスワードの代わりに証明書を使用してユーザーを認証するように AMQ Management Console を設定できます。

手順

  1. 信頼できる認証局からブローカーとクライアントの証明書を取得するか、自己署名証明書を生成します。自己署名証明書を生成する場合は、次の手順を実行します。

    1. ブローカーの自己署名証明書の生成

      $ keytool -storetype pkcs12 -keystore broker-keystore.p12 -storepass securepass -keypass securepass -alias client -genkey -keyalg "RSA" -keysize 2048 -dname "CN=ActiveMQ Broker, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -ext bc=ca:false -ext eku=cA
    2. ブローカーキーストアから証明書をエクスポートし、クライアントと共有できるようにします。

      $ keytool -storetype pkcs12 -keystore broker-keystore.p12 -storepass securepass -alias client -exportcert -rfc > broker.crt
    3. クライアントで、ブローカー証明書をクライアントのトラストストアにインポートします。

      $ keytool -storetype pkcs12 -keystore client-truststore.p12 -storepass securepass -keypass securepass -importcert -alias client-ca -file broker.crt -noprompt
    4. クライアントで、クライアントの自己署名証明書を生成します。

      $ keytool -storetype pkcs12 -keystore client-keystore.p12 -storepass securepass -keypass securepass -alias client -genkey -keyalg "RSA" -keysize 2048 -dname "CN=ActiveMQ Client, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -ext bc=ca:false -ext eku=cA
    5. クライアント証明書をクライアント鍵ストアからファイルにエクスポートして、ブローカーのトラストストアに追加できるようにします。

      $ keytool -storetype pkcs12 -keystore client-keystore.p12 -storepass securepass -alias client -exportcert -rfc > client.crt
    6. クライアント証明書をブローカーのトラストストアにインポートします。

      $ keytool -storetype pkcs12 -keystore client-truststore.p12 -storepass securepass -keypass securepass -importcert -alias client-ca -file client.crt -noprompt
      注記

      ブローカマシンで、キーストアファイルとトラストストアファイルがブローカからアクセスできる場所にあることを確認します。

  2. <broker_instance_dir>/etc/bootstrap.xml ファイルで、Web 設定を更新して、ブローカーコンソールの HTTPS プロトコルとクライアント認証を有効にします。以下に例を示します。

    ...
    <web path="web">
        <binding uri="https://localhost:8161" keyStorePath="${artemis.instance}/etc/server-keystore.p12" keyStorePassword="password"
        clientAuth="true" trustStorePath="${artemis.instance}/etc/client-truststore.p12" trustStorePassword="password">
        ...
        </binding>
    </web>
    ...
    binding uri
    https プロトコルを指定して SSL を有効にし、ホスト名とポートを追加します。
    keystorePath
    ブローカー証明書がインストールされているキーストアへのパス。
    keystorePassword
    ブローカー証明書がインストールされているキーストアのパスワード。
    ClientAuth
    クライアントがブローカーコンソールに接続しようとしたときに各クライアントが証明書を提示することを要求するようにブローカーを設定するには、true に設定します。
    trustStorePath
    クライアントが自己署名証明書を使用している場合は、クライアント証明書がインストールされているトラストストアへのパスを指定します。
    trustStorePassword

    クライアントが自己署名証明書を使用している場合は、クライアント証明書がインストールされているトラストストアのパスワードを指定します。

    注記:クライアントが自己署名証明書を使用している場合にのみ、trustStorePath および trustStorePassword プロパティーを設定する必要があります。

  3. 各クライアント証明書からサブジェクト 識別名 (DN) を取得して、各クライアント証明書とブローカーユーザー間のマッピングを作成できるようにします。

    1. 各クライアント証明書をクライアントのキーストアファイルから一時ファイルにエクスポートします。以下に例を示します。

      keytool -export -file <file_name> -alias broker-localhost -keystore broker.ks -storepass <password>
    2. エクスポートされた証明書の内容を出力します。

      keytool -printcert -file <file_name>

      出力は以下のようになります。

      Owner: CN=AMQ Client, OU=Artemis, O=AMQ, L=AMQ, ST=AMQ, C=AMQ
      Issuer: CN=AMQ Client, OU=Artemis, O=AMQ, L=AMQ, ST=AMQ, C=AMQ
      Serial number: 51461f5d
      Valid from: Sun Apr 17 12:20:14 IST 2022 until: Sat Jul 16 12:20:14 IST 2022
      Certificate fingerprints:
      	 SHA1: EC:94:13:16:04:93:57:4F:FD:CA:AD:D8:32:68:A4:13:CC:EA:7A:67
      	 SHA256: 85:7F:D5:4A:69:80:3B:5B:86:27:99:A7:97:B8:E4:E8:7D:6F:D1:53:08:D8:7A:BA:A7:0A:7A:96:F3:6B:98:81

      Owner エントリーは Subject DN です。Subject DN の入力の使用形式はプラットフォームによって異なります。上記の文字列は、以下のように表現することもできます。

      Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
  4. ブローカーのコンソールに対して証明書ベースの認証を有効にします。

    1. <broker_instance_dir>/etc/login.config 設定ファイルを開きます。証明書ログインモジュールを追加し、ユーザーとロールのプロパティーファイルを参照します。以下に例を示します。

      activemq {
          org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
              debug=true
              org.apache.activemq.jaas.textfiledn.user="artemis-users.properties"
              org.apache.activemq.jaas.textfiledn.role="artemis-roles.properties";
      };
      org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
      実装クラス。
      org.apache.activemq.jaas.textfiledn.user
      ログイン設定ファイルが含まれるディレクトリーを基準としたユーザープロパティーファイルの場所を指定します。
      org.apache.activemq.jaas.textfiledn.role

      ユーザーをログインモジュール実装に定義されたロールにマップするプロパティーファイルを指定します。

      注記

      <broker_instance_dir>/etc/login.config ファイルの証明書ログインモジュール設定のデフォルト名を変更する場合は、<broker_instance_dir>/etc/artemis.profile ファイルの -dhawtio.realm 引数の値を次のように更新する必要があります。新しい名前に合わせます。デフォルト名は activemq です。

    2. <broker_instance_dir>/etc/artemis-users.properties ファイルを開きます。各クライアント証明書から取得したサブジェクト DNS をブローカーユーザーに追加して、クライアント証明書とブローカーユーザー間のマッピングを作成します。以下に例を示します。

      user1=CN=user1,O=Progress,C=US
      user2=CN=user2,O=Progress,C=US

      この例では、user1 ブローカーユーザーは、サブジェクト識別名 CN=user1,O=Progress,C=US サブジェクト DN を持つクライアント証明書にマップされます。クライアント証明書とブローカーユーザー間のマッピングを作成すると、ブローカーは証明書を使用してユーザーを認証できます。

    3. <broker_instance_dir>/etc/artemis-roles.properties ファイルを開きます。<broker_instance_dir>/etc/artemis.profile ファイルの HAWTIO_ROLE 変数に指定されているロールにユーザーを追加して、コンソールにログインする権限をユーザーに付与します。HAWTIO_ROLE 変数のデフォルト値は amq です。以下に例を示します。

      amq=user1, user2
  5. HTTPS プロトコルの次の推奨セキュリティープロパティーを設定します。

    1. <broker_instance_dir>/etc/artemis.profile ファイルを開きます。
    2. hawtio.http.strictTransportSecurity プロパティーを設定して、AMQ 管理コンソールへの HTTPS リクエストのみを許可し、すべての HTTP リクエストを HTTPS に変換します。以下に例を示します。

      hawtio.http.strictTransportSecurity = max-age=31536000; includeSubDomains; preload
    3. hawtio.http.publicKeyPins プロパティーを設定して、特定の暗号化公開鍵を AMQ 管理コンソールに関連付けるよう Web ブラウザーに指示し、偽造された証明書を使用した “中間者攻撃“ のリスクを減らします。以下に例を示します。

      hawtio.http.publicKeyPins = pin-sha256="..."; max-age=5184000; includeSubDomains

4.4.5. X 転送ヘッダーを処理するための AMQ 管理コンソールの設定

AMQ 管理コンソールへのリクエストがプロキシーサーバー経由でルーティングされる場合は、AMQ 管理コンソールをホスティングする AMQ Broker 組み込み Web サーバーを X-Forwarded ヘッダーを処理するように設定できます。X-Forwarded ヘッダーを処理することにより、AMQ 管理コンソールは、プロキシーがリクエストのパスに関与している場合に変更または失われるヘッダー情報を受け取ることができます。たとえば、プロキシーは HTTPS を使用して AMQ 管理コンソールを公開でき、HTTP を使用する AMQ 管理コンソールは、ブラウザーとプロキシーの間の接続が HTTPS を使用していることを X-Forwarded ヘッダーから識別し、ブラウザーのリクエストを処理するために HTTPS に切り替えることができます。

手順

  1. <broker_instance_dir>/etc/bootstrap.xml ファイルを開きます。
  2. <web> 要素に、org.eclipse.jetty.server.ForwardedRequestCustomizer の値を持つ customizer 属性を追加します。以下に例を示します。

    <web path="web" customizer="org.eclipse.jetty.server.ForwardedRequestCustomizer">
    ..
    </web>
  3. bootstrap.xml ファイルを保存します。
  4. 次のコマンドを入力して、ブローカーを起動または再起動します。

    • Linux の場合: <broker_instance_dir>/bin/artemis run
    • Windows の場合: <broker_instance_dir>\bin\artemis-service.exe start
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.