サーバー設定
jvmguard UIで変更できないjvmguard設定オプションは、jvmguardインストールディレクトリのテキストファイルconfig/application.yamlに含まれています。値を変更するには、そのファイルをテキストエディターで編集し、jvmguardサーバーを再起動します。個々のキーは、-Djvmguard.<key>=<value>システムプロパティでオーバーライドすることもできます。
プロパティ自体は、config/application.yaml内のコメントでドキュメント化されています。ここでは、デフォルトパラメータを調整する必要があるいくつかのシナリオについて説明します。
データディレクトリ
Section titled “データディレクトリ”dataDirectoryプロパティは、すべての可変データが配置されるディレクトリを指します。次のサブディレクトリがjvmguardによって作成されます。
- db: 組み込みのH2データベースが含まれます。
- log: すべてのログファイルが含まれます。デフォルトでは、ログファイルはローテーションされます。ローテーション設定は、jvmguardインストールディレクトリの
logback.xmlファイルで変更できます。3つの異なるログファイル「server」、「connection」、「event」に異なる設定を適用できます。すべてのログファイルはjvmguard UIで表示できます。 - snapshots: メモリスナップショットとプロファイリングスナップショットがこのディレクトリに保存されます。これらのスナップショットは、jvmguardの「スナップショット」ビューでダウンロードまたは削除できます。
- ssl: このディレクトリには、認証と暗号化のためのファイルペアagent.ks / server.ksと、WebサーバーのSSL証明書が含まれます。
同じマシンで2つのjvmguardサーバーを実行する場合、それらは異なるデータディレクトリを持つ必要があります。デフォルトでは、インストーラーは常にデータディレクトリに同じ場所を提案するため、複数のインストールの場合は、インストーラーで、またはインストール後にconfig/application.yamlで調整する必要があります。
Webサーバー
Section titled “Webサーバー”jvmguardには、デフォルトでポート8020でリッスンする組み込みWebサーバーが付属しています。そのポートはhttpPortプロパティで調整でき、useHttpsをtrueに設定してHTTPSに切り替えることができます。
HTTPSを使用する場合、jvmguardはjvmguardデータディレクトリに自己署名証明書ssl/self_signed.ksを生成します。ブラウザーはこの証明書で警告メッセージを表示します。認証局によって署名された証明書がある場合は、PKCS12形式でssl/web.pkcs12にコピーできます。証明書ファイルの名前が異なる場合は、keystoreNameプロパティを指定できます。
証明書がパスワードで保護されている場合は、keystorePasswordプロパティで指定できます。パスワードは暗号化できませんが、コマンドラインツールjvmguard_obfuscateで少なくとも難読化できます。
jvmguard_obfuscate [password]jvmguardをリバースプロキシの背後に配置する場合は、reverseProxyプロパティをtrueに設定する必要があります。Webサーバーはプロキシヘッダーを分析して正しいURLを作成します。リバースプロキシの問題によりこれが機能しない場合は、reverseProxyHostにプロキシのホスト名を設定します。jvmguardがパスプレフィックスの下で提供される場合は、contextPathプロパティにそのプレフィックス(例えばjvmguard)を先頭または末尾のスラッシュなしで設定します。
REST APIサービスは、restApiEnabledプロパティをfalseに設定すると無効になります。有効な場合、REST APIはWebサーバーと同じポートの/apiパスで提供され、Webサーバーに設定されているのと同じプロトコル(HTTP/HTTPS)を使用します。
監視対象VMとの通信
Section titled “監視対象VMとの通信”監視対象VMは、vmPortプロパティで設定されたポートでTCP接続を作成します。
デフォルトでは、監視対象VMとjvmguardコレクター間の通信は暗号化も認証もされません。これは、すべてのVMがjvmguardサーバーに接続でき、jvmguardエージェントは反対側のjvmguardサーバーが信頼できるかどうかを知る方法がないことを意味します。これは特定のローカルエリアネットワークでは許容できるかもしれませんが、WANやインターネット経由の接続には適していません。
認証と暗号化を有効にするには、プロパティvmUseSslをtrueに設定します。その場合、ファイルペアssl/agent.ksとssl/server.ksが作成されます。これで、サーバーはagent.ksファイルを持つエージェントからの接続のみを許可し、エージェントはserver.ksファイルを持つサーバーにのみ接続します。さらに、通信プロトコルが暗号化されます。
このトピックの詳細については、JVMの監視の章を参照してください。
シークレットの環境変数によるオーバーライド
Section titled “シークレットの環境変数によるオーバーライド”コンテナ化されたデプロイメントでは、秘密をデータベースに保存するよりも、環境変数を通じて注入することが望ましいことがよくあります。起動時に、jvmguardは次の環境変数をチェックし、サーバー管理およびシングルサインオン設定の対応する値をオーバーライドします。
LDAPの場合:
JVMGUARD_LDAP_PASSWORD各SSOプロバイダーの場合、環境変数名はプロバイダーの表示名から派生し、大文字に変換され、英数字以外の文字はアンダースコアに置き換えられます。
JVMGUARD_SSO_<NAME>_CLIENT_IDJVMGUARD_SSO_<NAME>_CLIENT_SECRET例えば、「Google」という名前のプロバイダーはJVMGUARD_SSO_GOOGLE_CLIENT_IDとJVMGUARD_SSO_GOOGLE_CLIENT_SECRETを使用します。「Company Okta」という名前のプロバイダーはJVMGUARD_SSO_COMPANY_OKTA_CLIENT_IDとJVMGUARD_SSO_COMPANY_OKTA_CLIENT_SECRETを使用します。
これらのオーバーライドは、設定がデータベースからロードされた後に適用され、保存された値よりも優先されます。環境変数が設定されていない場合、データベースの値が使用されます。jvmguardがオーバーライドの適用をログに記録するとき、秘密の値自体がログに記録されることはありません。