---
title: "アプリケーションサーバのセキュリティ"
canonical: "https://wiki.yellowfin.co.jp/space/yfcurrent/1903238/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3"
format: markdown
---
> Macro (anchor)



> Macro (toc)

## 概要

最もセキュアなバックエンドインフラであっても、フロントエンドの設定が高いセキュリティ基準をサポートしていない場合は、リスクに直面します。Yellowfin ソフトウェアは、いくつかの設定を調整し、使用する予定のない設定を無効にすることで、非常に高いセキュリティを維持することができます。

## HTTPSの設定

HTTPSはTomcatレベルで設定することができ、利用可能なプロトコルを完全に制御し、サービスがHTTP経由でアクセス可能かどうかを確認することができます。より詳細な情報は、[こちらの記事](https://support.yellowfin.co.jp/hc/ja/articles/115012569308-HTTPS%E7%B5%8C%E7%94%B1%E3%81%A7Yellowfin%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)で確認できます。

## Yellowfin web.xmlの強化構成の改善

アプリケーションサーバレベルで強化をする場合、いくつかの考慮事項があります。公開または非公開のディプロイか、Yellowfinが他のアプリケーションに組み込まれているかどうか、ネットワーク構成や使用するAPIなど、様々な要因によりニーズは異なります。

Yellowfinのweb.xmlファイルは、<Yellowfin インストールディレクトリ>/appserver/webapps/ROOT/WEB-INF/web.xmlにあります。

### 自動リダイレクト

YellowfinがHTTPSでサービスを提供するように設定されている場合、セキュアポートに自動的にリダイレクトするように設定することもできます。

```xml
<!-- Forward traffic to secure port --> 
  <security-constraint> 
          <web-resource-collection> 
                  <web-resource-name>Automatic TLS Forwarding</web-resource-name> 
                  <url-pattern>/*</url-pattern> 
          </web-resource-collection> 
          <user-data-constraint> 
                  <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
          </user-data-constraint> 
  </security-constraint> 
```


### セキュアセッションCookie

JSESSION Cookieにセキュア属性を設定するには、web.xmlに以下を挿入します。この属性は、CookieがHTTPSなどのセキュアなチャネルでのみ送信されることを宣言します。

```xml
<!-- Secure cookie attribute --> 
  <session-config> 
          <cookie-config> 
                  <secure>true</secure> 
          </cookie-config> 
  </session-config>  
```


### OWASPセキュアヘッダー

Yellowfinは、OWASPセキュアヘッダーフィルターを実装しており、[これらの標準](https://owasp.org/www-project-secure-headers/)に従ってセキュリティヘッダーを設定するために使用できます。構成の例を以下に示します。しかし、これらの値は組織の標準やポリシーに合わせて調整する必要があります。Content-Security-Policyの場合、<param-value>で定義されている値のセットが、Yellowfin 機能の最小エントリーであることに注意してください。

```xml
<!-- OWASP Secure Headers --> 
  <filter> 
          <filter-name>OWASPSecureHeaders</filter-name> 
          <filter-class>com.hof.servlet.OWASPSecureHeaders</filter-class> 
          <init-param> 
                  <param-name>Strict-Transport-Security</param-name> 
                  <param-value>max-age=315360000</param-value> 
          </init-param> 
          <init-param> 
                  <param-name>X-Frame-Options</param-name> 
                  <param-value>sameorigin</param-value> 
          </init-param> 
          <init-param> 
                  <param-name>X-Content-Type-Options</param-name> 
                  <param-value>nosniff</param-value> 
          </init-param> 
          <init-param> 
                  <param-name>X-Permitted-Cross-Domain-Policies</param-name> 
                  <param-value>none</param-value> 
          </init-param> 
          <init-param> 
            <param-name>Content-Security-Policy</param-name> 
            <param-value>default-src 'self' 'unsafe-inline' 'unsafe-eval'; font-src data: http:; img-src data: http:; frame-ancestors 'self';</param-value> 
          </init-param> 
  </filter> 
  <filter-mapping> 
          <filter-name>OWASPSecureHeaders</filter-name> 
          <url-pattern>/*</url-pattern> 
  </filter-mapping> 
```


### CSRF フィルター

YellowfinのCSRFフィルターを有効にすると、アプリケーションリクエストにnonceが追加され、クロスサイトリクエストフォージェリ攻撃からインスタンスが保護されます。

```xml
<!-- Yellowfin CSRF Filter --> 
  <filter> 
          <filter-name>CSRFFilter</filter-name> 
          <filter-class>com.hof.servlet.CSRFFilter</filter-class> 
          <init-param> 
                  <param-name>AllowedEntry</param-name> 
                  <param-value>/info.jsp,info_/threads.jsp</param-value> 
          </init-param> 
  </filter> 
  <filter-mapping> 
          <filter-name>CSRFFilter</filter-name> 
          <url-pattern>*.i4</url-pattern> 
  </filter-mapping> 
  <filter-mapping> 
          <filter-name>CSRFFilter</filter-name> 
          <url-pattern>*.jsp</url-pattern> 
  </filter-mapping> 
```

ここで特に重要なのは、AllowedEntryパラメーターです。カンマで区切られたこのURL一覧は、Yellowfinにnonceチェックをバイパスし、これらのURLから任意のページへのエントリーを許可するように指示します。

### Host ヘッダーフィルター

「Hostヘッダーフィルター」を有効にすると、リクエスト内のホスト名が正しいかどうかが検証されます。これにより、Hostヘッダーポイズニングから保護されます。「AllowedHosts」パラメータには、ユーザーがYellowfinにアクセスする際に使用する有効なドメイン名またはホスト名を、コンマ区切りで指定して設定する必要があります。

```
<filter>
    <filter-name>HostHeaderFilter</filter-name>
    <filter-class>com.hof.servlet.HostHeaderFilter</filter-class>
    <init-param>
         <param-name>AllowedHosts</param-name>
         <param-value>localhost:8080,banana:8080</param-value>
       </init-param>
  </filter>
  <filter-mapping>
    <filter-name>HostHeaderFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
```

起動時、Yellowfinの起動ログには、設定されているホスト名が表示されます。

![image-20260715-072155.png](media://b6ac1386-c99b-42d2-ae85-e1ec3b985dc5)

Yellowfinサーバーに無効なホスト名でアクセスした場合、403エラーが発生し、無効なドメイン名またはホスト名を特定するログエントリが記録されます。

![image-20260715-072235.png](media://b0e0fda6-3d53-4b0a-832b-8247ef393cdc)


### 参照元フィルター

参照元フィルターは、CSRFフィルターに追加のセキュリティ層として提供されます。これにより、リクエストを処理する前に、リクエスト内の参照元フィールドがhostingdomainURLパラメーターに対して検証されます。ignoreパラメーターには、少なくとも次の項目と、Yellowfinを統合する場合などの外部アプリケーションから、その他のエントリーポイントが必要です。

```xml
<filter> 
          <filter-name>RefererFilter</filter-name> 
          <filter-class>com.hof.servlet.RefererFilter</filter-class> 
          <init-param> 
                  <param-name>hostingdomainURL</param-name> 
                  <param-value>https://54.151.18.219</param-value> 
          </init-param> 
          <init-param> 
                  <param-name>ignore</param-name> 
                  <param-value>/RunDashboard.i4,/RunReport.i4,/*.js</param-value> 
          </init-param> 
  </filter> 
  <filter-mapping> 
          <filter-name>RefererFilter</filter-name> 
          <url-pattern>/*</url-pattern> 
  </filter-mapping> 
```


### 未使用のAPIへのアクセスの無効化または制限

Yellowfin 9.3以降のリリースには、新しいREST APIが導入されています。REST APIを使用する場合は、従来のSOAP webサービスAPIを無効にできます。従来のAPIを有効にするスニペットであるAxisServletを検索し、このブロックをコメントアウトすることで無効にします。

```xml
 <!-- Web Services Servlet 
  <servlet> 
    <servlet-name>AxisServlet</servlet-name> 
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 
  </servlet> 
 -->  
```

または、RESTおよびJS APIの場合、使用していない場合は、次を追加します。

```xml
<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>UnusedAPI’s</web-resource-name> 
      <url-pattern>/api</url-pattern> 
      <url-pattern>/JsAPI</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
      <role-name>denyaccess</role-name> 
    </auth-constraint> 
  </security-constraint> 
```


### 情報ページ

情報ページは、サポートや分析に使用できます。これらのページには、OSバージョン、RDBMSタイプ、実行中のアプリケーションスレッドなどのシステム情報が含まれます。

|  |  |
| --- | --- |
| **URL** | **説明** |
| <sup>https://<YellowfinHostURL>/info.jsp </sup> | システム、アプリケーション、ロケール、ライセンス、サーバ側のソフトウェア詳細、ライブラリのバージョンなど、OS環境の詳細を表示します。 |
| <sup>https://<YellowfinHostURL>/info_cache.jsp </sup> | Yellowfinのキャッシュステータスおよび容量情報を表示します。 |
| <sup>https://<YellowfinHostURL>/info_cluster.jsp </sup> | 必要に応じて、Yellowfin クラスタ構成に関する情報を表示します。 |
| <sup>https://<YellowfinHostURL>/info_language.jsp </sup> | 使用可能およびデフォルトのロケールを表示します。 |
| <sup>https://<YellowfinHostURL>/info_threads.jsp </sup> | JVMスレッドとそのステータスを出力します。 |
| <sup>https://<YellowfinHostURL>/info_threads_enhanced.jsp </sup> | 該当する場合は、スレッドの所有権とCPU時間を含めることで、上記を拡張します。 |

以下のスニペットを追加することで、これらを無効にすることができます。

```xml
<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>server-info</web-resource-name> 
      <url-pattern>/info.jsp</url-pattern> 
      <url-pattern>/info_browser.jsp</url-pattern> 
      <url-pattern>/info_cache.jsp</url-pattern> 
      <url-pattern>/info_threads.jsp</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
      <role-name>denyaccess</role-name> 
    </auth-constraint> 
  </security-constraint>  
```

これらのページは、問題が発生したときに、Yellowfin サポートから提供を依頼する場合があります。これらのページを無効にする以外にも、様々な要因に基づいてアクセスを制限できる方法があります。例えば、RemoteAddrFilterは、IPアドレスによってアクセスを制限します。

```xml
<filter> 
    <filter-name>IPFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class> 
    <init-param> 
        <param-name>allow</param-name> 
        <param-value>127\.\d+\.\d+\.\d+</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>IPFilter</filter-name> 
      <url-pattern>/info.jsp</url-pattern> 
      <url-pattern>/info_browser.jsp</url-pattern> 
      <url-pattern>/info_cache.jsp</url-pattern> 
      <url-pattern>/info_threads.jsp</url-pattern> 
</filter-mapping> 
```

これにより、任意の127.x.x.xアドレスからページにアクセスできるようになります。詳細については、Tomcatドキュメントの[Access Control](https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Control)項目を参照してください。


---

## 導入および強化ガイド

[概要に戻る](https://yellowfinjp.atlassian.net/wiki/spaces/yfcurrent/pages/1906185)

- [セキュリティインフラに関する一般的な考慮事項](https://yellowfinjp.atlassian.net/wiki/spaces/yfcurrent/pages/1906690)
- [unnamed link](#)
- [Yellowfin UIのセキュリティ設定](https://yellowfinjp.atlassian.net/wiki/spaces/yfcurrent/pages/1907557)


> Macro (horizontalrule)



> Macro (styleclass)
> 
> [ページトップ](#)