データベースエージェントの SSL の有効化

このページでは、SSL を使用してコントローラに接続するようにデータベースエージェントを設定する方法について説明します。SaaS コントローラを使用しているか、SSL を使用するようにオンプレミスコントローラを設定していることを前提としています。

データベースエージェントは、SSL モード時の SSL 信頼チェーンの拡張および強制実行をサポートしています。

要件

次の情報を収集します。

  • コントローラの SSL ポート。
    • SaaSコントローラの場合、SSLポートは443です。
    • オンプレミスコントローラの場合、デフォルトのSSLポートは8181ですが、別のポートでSSLをリッスンするようにコントローラーを構成することもできます。
  • コントローラの SSL 証明書の署名メソッド。
    • パブリック証明機関(CA)が証明書に署名。DigiCert、Verisign、Thawteおよびその他の商用CAなど。
    • 組織内部のCAが署名した証明書。一部の企業では内部の証明機関を保持し、その内部CAがドメイン内のトラストと暗号化を管理します。
    • コントローラでは、自己署名証明書が使用されます。

コントローラのSSL証明書の信頼性を確立

データベースエージェントと AppDynamics コントローラとの間で信頼関係を確立するには、コントローラの証明書に署名した機関のルート証明書を含むエージェントトラストストアを作成する必要があります。

オンプレミスコントローラを自己署名証明書で保護した場合、エージェントのキーストアを作成する手順については「Keystore Certificate Extractor Utility」を参照してください。

  1. 次のいずれかのルート証明書を取得します。
    • AppDynamics SaaS コントローラの DigiCert Global Root CA
    • オンプレミスコントローラの証明書に署名したパブリック認証局(CA)のルート証明書
    • オンプレミスコントローラのコントローラ証明書に署名した内部 CA のルート証明書

  2. Java keytool コマンドを実行して、データベース エージェント トラストストアを作成します。

    keytool -import -alias rootCA -file <root_certificate_file_name> -keystore cacerts.jks -storepass <truststore_password>

    例:

    keytool -import -alias rootCA -file /usr/home/appdynamics/DigicertGlobalRootCA.pem -keystore cacerts.jks -storepass MySecurePassword

    トラストストアパスワードはメモしておいてください。データベースエージェントの構成に必要となります。

  3. エージェントのトラストストアをデータベースエージェント構成ディレクトリにインストールします。

    <db_agent_home>/conf/

データベース エージェント トラストストアの保護

AppDynamics では、データベース エージェント トラストストアの改ざんを防ぐため以下の安全対策を行うことを推奨しています。

  • ファイルシステムの権限を通じたトラストストアファイルの保護:

    • あらゆるユーザにエージェントトラストストアの読み取りを許可。

    • 権限のあるユーザーがtruststoreを所有。

    • 指定された権限のあるユーザーのみにtruststoreの書き込みを制限。

  • データベースエージェント構成ファイルを保護して、読み取りはエージェントのランタイムユーザのみ、書き込みは権限のあるユーザのみに設定:

    • グローバル構成ファイル:<db_agent_home>/conf/controller-info.xml

データベースエージェントの SSL システムプロパティの構成

  1. バージョン管理された controller-info.xml でシステムプロパティ(<db_agent_home>/<version_number>/conf/controller-info.xml)を設定します。各プロパティの詳細については、「データベースエージェントの構成プロパティ」の「SSL 構成プロパティ」を参照してください。
    • Controller Port:コントローラの SSL ポート。AppDynamics SaaSの場合は443。

      <controller-port>443</controller-port>

    • Controller SSL Enabled: 話でした。 

      <controller-ssl-enabled>true</controller-ssl-enabled>

    • Controller Keystore Password: データベース エージェント トラストストアのプレーンテキストパスワード。

      <controller-keystore-password>MySecurePassword</controller-keystore-password>

    • Controller Keystore Filename:  <db_agent home>/<version>/conf を基準としたデータベース エージェント トラストストアの相対パス。デフォルトの <db_agent_home>/<version_number>/conf/cacerts.jks 以外のトラストストアを使用する場合は必須です。

      <controller-keystore-filename>../../conf/cacerts.jks</controller-keystore-filename>

      コントローラポートを指定し、JVM 起動スクリプトでコントローラ用 SSL を有効化できますが、controller-info.xml ファイルでトラストストアのパスワードとファイル名を指定する必要があります。

  2. 変更を controller-info.xml ファイルに保存し、データベースエージェントを再起動します。

controller-info.xml の SSL 設定例

<?xml version="1.0" encoding="UTF-8"?>
<controller-info>
	<controller-host>mycompany.saas.appdynamics.com</controller-host>
	<controller-port>443</controller-port>
	<controller-ssl-enabled>true</controller-ssl-enabled>
	<controller-keystore-password>MySecurePassword</controller-keystore-password>
	<controller-keystore-filename>../../conf/cacerts.jks</controller-keystore-filename>
	...
</controller-info>
CODE

Keystore証明書抽出ユーティリティ

Keystore 証明書抽出ユーティリティは、コントローラの Java Keystore からデータベース エージェント トラストストアに対して証明書をエクスポートします。次の場所にインストールされます。

<agent_home>/utils/keystorereader/kr.jar
CODE

コントローラキーストアがデータベース エージェント マシンにコピーされるのを防ぐには、コントローラサーバからこのユーティリティを実行します。次の場所でコントローラのエージェント ディストリビューションにアクセスしてください。

  1. コントローラからキーストア証明書抽出ユーティリティを実行します。

    % /<full path to application JRE>/bin/java -jar <controller_home>/appserver/glassfish/domains/domain1/appagent/<controller_version>/utils/keystorereader/kr.jar
    CODE
  2. プロンプトが表示されたら、以下を入力します。
    • コントローラのKeystoreへの完全なパス

      Enter input keystore: <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks
      CODE
    • トラストストア出力ファイル名。デフォルトでは、データベースエージェントは cacerts.jks を探します。

      Enter output agent truststore file name: <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks
      CODE

      コントローラの証明書のパスワード(デフォルトで「changeit」)。パスワードを含まない場合、エクストラクターはパスワード「changeit」を出力されたtruststoreに適用。

    • Example command to execute kr.jar

      /<full path to application JRE>/bin/java -jar kr.jar <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks cacerts.jks <controller_certificate_password>
      CODE
  3. エージェントのトラストストアをエージェント構成ディレクトリにインストールします。

    <db_agent_home>/conf/

データベースエージェントの SSH の有効化

Linux ホストの場合のみ

Linux ホストでデータベースエージェントが実行されている場合にのみ適用されます。 


データベースエージェントが Linux で実行されていて、ローカルホストをモニタするのではなくハードウェアをモニタする場合、認証が必要であり、パスワードはデータベースエージェントとデータベースサーバの間で渡されます。 

SSH ポートオプション

SSH ポートオプションは、データベースエージェントが Linux で実行されていない場合は表示されません。
  1. エージェントマシンで、次のように rsa または dsa キーを生成します。

    Generate rsa key

    % ssh-keygen -b 1024 -f id_rsa -t rsa
    CODE

    または

    Generate dsa key

    % ssh-keygen -b 1024 -f id_dsa -t dsa
    CODE

    これにより、rsa または dsa 1024 ビットキーが作成され、それらのキーが /home/<user_name>/.ssh/id_rsa/home/<user_name>/.ssh/id_rsa.pub または /home/<user_name>/.ssh/id_dsa' /home/<user_name>/.ssh/ida_dsa.pub' ファイルに書き込まれます。これらのファイル名は変更しないでください。

  2. 秘密キー(/home/<user_name>/.ssh/id_rsa  または /home/<user_name>/.ssh/id_id_dsa)を <db-agent_home>/keys ディレクトリにコピーします。

  3. モニタ対象マシンとエージェントマシンの両方で、.ssh ディレクトリに対する適切な権限があることを確認するか、または次のように設定します。

    .ssh directory permissions

    % cd /home/<user_name>
    % chmod 755 .ssh
    CODE
  4. モニタ対象マシンで、/home/<user_name>/.ssh/authorized_keys ファイルがあることを確認します。このファイルがない場合は、次のようにモニタ対象マシンで authorized_keys ファイルを作成します。

    Create authorized_keys file

    % cd /home/<user_name>/.ssh
    % touch .ssh/authorized_keys
    CODE
  5. /home/<user_name>/.ssh/authorized_keys ファイルに対する適切な権限を持っていることを確認するか、次のように権限を変更します。

    authorized_keys file permissions

    % cd /home/<user_name>/.ssh
    % chmod 644 authorized_keys
    CODE
  6. 次のように、ファイル「id_rsa.pub」または「'id_dsa.pub」をファイル /home/<user_name>/.ssh/authorized_keys に追加します(コピーではありません)。

    Append rsa public key to authorized key

    % echo /home/<user_name>/.ssh/id_rsa.pub >> /home/<user_name>/.ssh/authorized_keys
    CODE

    または 

    Append dsa public key to authorized key

    % echo /home/<user_name>/.ssh/id_dsa.pub >> /home/<user_name>/.ssh/authorized_keys
    CODE
  7. データベースコレクタの SSH ポートは、デフォルトでは 22 に設定されています。これを変更するには、[Collector configuration] ダイアログの [Monitoring Hardware] セクションに移動します。ダイアログで、必要なポートに SSH ポートを設定します。

  8. [Collector configuration] への変更を保存し、データベースエージェントを再起動します。

PEM 証明書を使用した SSH の有効化

Linux の場合、AppDynamics はプライバシー強化メール(PEM)を介した証明書ベースの認証もサポートしています。証明書ベースの認証を実装するには、次の手順を実行します。

  1. [Collector configuration] ダイアログの [Monitoring hardware] セクションで [Use certificate] オプションを有効にします。 
  2. PEM ファイルを <db_agent_home>/keys ディレクトリにコピーします。home/<user_home>/.ssh ディレクトリが存在する場合、エージェントはそこで見つかった証明書を使用します。 
  3. エージェントを再起動します。