Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

7.4. エージェントおよびリソースのシステムユーザーとの対話

エージェントは特定のシステムユーザーとして実行されるため、JBoss ON によって管理される JBoss や Apache などのサーバーも実行できます。検出などの多くのエージェント管理タスクに関する一般的な仮定は、エージェントユーザーがリソースユーザーと同じであることです。ユーザーが異なる場合は、リソースの検出および管理方法に影響を及ぼす可能性があります。
JBoss ON が管理するサーバーの一般的なタイプは以下のとおりです。
  • JBoss EAP サーバー
  • PostgreSQL データベース
  • Tomcat サーバー
  • Apache サーバー
  • 汎用 JVM
JBoss ON エージェントが開始する一部の管理操作では、エージェントのシステムユーザーは関与することはありません。たとえば、JBoss EAP プラグインは JBoss EAP 自体が管理する認証メカニズムを使用して EAP インスタンスに接続するため、システム ACL やユーザーパーミッションは必要ありません。ユーザーが JBoss EAP インスタンスにアクセスできる限り、すべてが機能します。

Agent and Resource Users のスプレッドシート

PostgreSQL
監視および検出には影響しません。
設定の表示および編集には、エージェントユーザーに PostgreSQL 設定ファイルへの読み取り/書き込み権限が必要です。
apache
監視および検出には影響しません。
設定の表示および編集には、エージェントユーザーに Apache 設定ファイルへの読み取り/書き込み権限が必要です。
Tomcat
同じユーザーを使用する必要があります。またはエージェントを検出できません。
JMX サーバーまたは JVM
JMX リモーティングを使用する場合は、ユーザーごとに問題ありません。異なるユーザーやアタッチ API では検出できません。
JBoss AS/EAP
ユーザーはすべて問題ありませんが、run.jar で読み取り権限が必要で、run.jar のすべての先祖ディレクトリーに対して実行および検索パーミッションが必要になります。

7.4.1. エージェントユーザー

通常、エージェントは管理リソースと同じユーザーとして実行され、これが設定の最もクリーンなオプションであることを前提としています。
エージェントインストーラーの JAR ファイルから JBoss ON エージェントをインストールする場合、エージェントのインストールファイルを所有するシステムユーザーとグループは JAR をインストールしたユーザーと同じです。したがって、特別なシステムユーザーを作成または選択でき、そのユーザーがエージェントをインストールできます。

7.4.2. エージェントユーザーおよび検出

エージェントは、PID やプロセス、起動スクリプトなどの特定の共通プロパティーを検索してリソースを検出します。
このエージェントがリソースユーザーとして上位の権限を持っているかどうかは必ずしも問題ありません。
ほとんどのリソースでは、エージェントはそのリソースの設定への読み取りアクセスを必要とします。Apache や Postgres などのリソースでは、エージェントがリソース設定を読み取ることができる限り、リソースを検出できます。
他のリソースに関して、agent ユーザーには、非常に特殊なパーミッションが必要です。
  • JBoss EAP リソースでは、エージェントにファイルに対する読み取り権限が必要です。さらに、run.jar ファイルへのパス内のすべてのディレクトリーに対して実行および検索のパーミッションが必要になり run.jar ます。
  • Tomcat サーバーは、JBoss ON エージェントと Tomcat サーバーが同じユーザーとして稼働している場合にのみ検出できます。エージェントが root として実行されていても、Tomcat サーバーがエージェントとは異なるユーザーとして実行されている場合は検出できません。
  • JVM または JMX サーバーが JMX リモーティングで実行されている場合は、エージェントが別のユーザーとして実行されているかどうかを検出できます。ただし、attach API を使用して実行している場合は、リソースを検出するためのエージェントと同じユーザーとして実行する必要があります。

7.4.3. ユーザーおよび管理タスク

エージェントが実行しているシステムユーザーは、いくつかの一般的なエージェントタスクに影響します。
  • 検出
  • アプリケーションのデプロイ
  • スクリプトの実行
  • 起動、停止、および再起動の操作の実行
  • JBoss ON UI を使用した子リソースの作成
  • リソース設定の表示および編集
実行するタスクと、権限または承認のためにリソースまたはオペレーティングシステムの制限に基づいて、その操作を実行する必要があるタスクを決定することが重要になります。
一部のアクション: 検出、アプリケーションのデプロイ、または子リソースの作成 - エージェントユーザーにパーミッションを付与するシステム ACL を設定するだけで十分です。これは、で説明してい 「root 以外のユーザーとしてエージェントの実行」 ます。
操作の実行やスクリプトの実行には、エージェントユーザー以外のユーザーとしてタスクを実行する必要があります。これはを使用して実行でき sudoます。
いずれの方法でも、JBoss ON ユーザーに、操作の実行に必要なすべてのシステムパーミッションを付与することが目的です。

7.4.4. JBoss ON 操作での sudo の使用

使用の時間は、サービス sudo の起動やプロセス、リソースユーザーが所有するスクリプトなど、長時間実行される操作に使用されます。スクリプトを実行するユーザーは、適切な承認とパーミッションを持つため、リソースユーザーと同じである必要があります。
ユーザーは実際に同じであることや、JBoss ON ユーザーに指定コマンドへの sudo 権限を付与できます。
エージェントユーザーのパーミッションを昇格する場合は、以下の 2 つの項目が true である必要があります。
  • パスワードのプロンプトなしでユーザーとの対話を必要としません。
  • エージェントが変数をスクリプトに渡すことができるはずです。
リソーススクリプトを設定するには sudo、以下を行います。
  1. JBoss ON エージェントユーザーに特定のスクリプトまたはコマンドへの sudo 権限を付与します。たとえば、jbossadmin ユーザーとしてスクリプトを実行するには、以下を実行します。
    [root@server ~]# visudo
    
    jbosson-agent     hostname=(jbossadmin)  NOPASSWD: /opt/jboss-eap/jboss-as/bin/*myScript*.sh
    NOPASSWD オプションを使用すると、パスワードを要求せずにコマンドが実行されます。
    重要
    JBoss ON は、EAP インスタンスの開始時に、コマンドライン引数を start スクリプトで渡します。これは、sudoers エントリーに完全なコマンドラインスクリプト(引数を含む)を含めるか、ラッパースクリプトの sudo -u user コマンドを使用するか、スクリプト接頭辞のいずれかを指定して実行できます。
    2 つ目のオプションには、簡単な sudoers エントリーがあります。
  2. 使用するラッパースクリプトを作成または編集します。リソースのスクリプトを直接呼び出す代わりに、スクリプトの実行 sudo に使用するラッパースクリプトを呼び出します。
    注記
    EAP 起動スクリプトでは、別のラッパースクリプトを作成する代わりに、接続設定にスクリプト接頭辞を設定できます。
    /usr/bin/sudo -u jbosson-agent
    たとえば、開始スクリプトラッパーの場合は、start-myScript.sh以下を行います。
    #!/bin/sh
    # start-myScript.sh
    # Helper script to execute start-myConfig.sh as the user jbosson-agent
    #
    sudo -u jbosson-agent /opt/jboss-eap/jboss-as/bin/start-myConfig.sh
  3. スクリプトで渡す引数または設定を使用して、開始 run.sh スクリプトを作成します。たとえば、start-myConfig.sh以下のようになります。
    nohup ./run.sh -c MyConfig -b jonagent-host 2>&1> jboss-MyConfig.out &