30日間の無料評価版をお試しいただけます。

概要

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

HTTPSの設定

HTTPSはTomcatレベルで設定することができ、利用可能なプロトコルを完全に制御し、サービスがHTTP経由でアクセス可能かどうかを確認することができます。より詳細な情報は、こちらの記事で確認できます。

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

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

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

自動リダイレクト

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

<!-- 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などのセキュアなチャネルでのみ送信されることを宣言します。

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


OWASPセキュアヘッダー

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

<!-- 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:</param-value> 
          </init-param> 
  </filter> 
  <filter-mapping> 
          <filter-name>OWASPSecureHeaders</filter-name> 
          <url-pattern>/*</url-pattern> 
  </filter-mapping> 


CSRF フィルター

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

<!-- 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から任意のページへのエントリーを許可するように指示します。


参照元フィルター

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

<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を検索し、このブロックをコメントアウトすることで無効にします。

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

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

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

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

<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アドレスによってアクセスを制限します。

<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項目を参照してください。



導入および強化ガイド

概要に戻る



  • No labels