10 Oracle Coherenceメトリックの保護

Oracle Coherenceメトリック・セキュリティを使用すると、認証および認可構成によってメトリック・データへのアクセスを制限できます。

この章の内容は次のとおりです。

Oracle Coherenceメトリックの保護の概要

Coherenceメトリックの認可および認証はデフォルトでは無効化されており、必要に応じて有効化できます。

Coherenceメトリックの認証では、HTTP Basic、クライアント側のSSL証明書、およびHTTP Basicとクライアント側のSSL証明書の併用がサポートされています。

Oracle CoherenceのマネージメントCoherenceメトリックの使用に関する項を参照してください。

CoherenceメトリックHTTPアクセプタの基本認証

Coherenceメトリックの認証を行うようにHTTPアクセプタを構成できます。HTTP Basic認証は、HTTP認可リクエスト・ヘッダーにエンコードされて送信される資格証明(ユーザー名とパスワード)を使用して認証を行います。

この項には次のトピックが含まれます:

CoherenceメトリックHTTPアクセプタの基本認証の指定

デフォルトのmetrics-http-config.xmlは、coherence-metrics.jarにあります。

HTTPアクセプタの基本認証を指定するには、システム・プロパティcohererence.metrics.http.authを値basicに設定するか、デフォルトのmetrics-http-config.xmlをオーバーライドし、<auth-method>子xml要素を値basicに指定します。

Coherenceメトリック・ログイン・モジュールの指定

HTTP Basic認証は、HTTP Basic認証ヘッダーから渡されたクライアントの資格証明を認証するJAAS javax.security.auth.spi.LoginModule実装を必要とします。その結果として生成されるSubjectは、必要に応じて、Oracle Coherenceセキュリティ・フレームワークの認可に使用できます。『Java認証・承認サービス(JAAS)リファレンス・ガイド』LoginModuleに関する項を参照してください。

ログイン・モジュールを指定するには、COHERENCE_HOME/lib/security/login.configログイン構成ファイルを変更し、使用するログイン・モジュール実装を含むCoherenceエントリを追加します。たとえば:

CoherenceMetrics {
    package.MyLoginModule required;
};

実行時、コマンド行から(java.security.auth.login.configシステム・プロパティを使用)、またはJavaセキュリティ・プロパティ・ファイルで、使用するlogin.configファイルを指定します。

便宜を図るため、標準的なJavaランタイム・クラスにのみ依存するJavaキーストア(JKS) LoginModuleの実装が用意されています。このクラスは、COHERENCE_HOME/lib/security/coherence-login.jarファイルにあります。実装を使用するには、このライブラリを、プロキシ・サーバーのクラスパスか、JREのlib/ext (標準拡張)ディレクトリに配置します。

login.config構成ファイルで、次のとおりJKSログイン・モジュール実装を指定します。

CoherenceMetrics {
    com.tangosol.security.KeystoreLogin required
      keyStorePath="${user.dir}${/}security${/}keystore.jks";
};

エントリには、キーストアへのパスが含まれています。keyStorePath変数をキーストアの場所に変更します。「Java SSLアーティファクトの生成」を参照してください。

CoherenceメトリックHTTPクライアントの基本認証の指定

Prometheusは、Coherenceメトリック・エンドポイントからメトリック・データをスクレイプするように構成できるHTTPクライアント・メトリック収集システムです。

ユーザー名およびパスワードを使用するhttpsおよびbasic_authにスキームを構成するためのパラメータは、Prometheus <scrape_config> configurationを参照してください。

Oracle CoherenceメトリックでのSSL認証の使用方法

SSLを使用してCoherenceメトリックの認証を行うことができます。SSLは、デジタル証明書および暗号化キーを使用して識別と信頼の両方を確立する認証メカニズムを提供します。「SSLの概要」を参照してください。

クライアント側のSSL証明書は、クライアントを認証するHTTPアクセプタに渡されます。SSLでは、SSLベースのソケット・プロバイダがHTTPアクセプタ用に構成されている必要があります。

この項には次のトピックが含まれます:

CoherenceメトリックHTTPアクセプタ用のSSLソケット・プロバイダの構成

認証にSSLを使用する場合は、HTTPアクセプタ用のSSLソケット・プロバイダを構成します。HTTPアクセプタ用にSSLを構成するには、SSLソケット・プロバイダ定義を明示的に追加するか、オペレーション・オーバーライド・ファイル内のSSLソケット・プロバイダ定義を参照します。

SSLソケット・プロバイダの明示的な定義

HTTPアクセプタ用にSSLソケット・プロバイダを明示的に構成するには、各<proxy-scheme>定義の<http-acceptor>要素内に<socket-provider>要素を追加します。Oracle Coherenceでのアプリケーションの開発socket-providerを参照してください。デフォルトのmetrics-http-config.xmlをオーバーライドするには、このデフォルトをコピーして、改訂したmetrics-http-config.xmlcoherence-metrics.jarの発生前のクラスパスに配置します。

例10-1は、<protocol>要素および<algorithm>要素にデフォルト値(それぞれ、TLSおよびSunX509)を使用するSSLソケット・プロバイダの構成を示しています。これらは完全を期して示しますが、デフォルト値使用の際には省略されることがあります。

例10-1では、アイデンティティ・キーストア(server.jks)と信頼キーストア(trust.jks)の両方を構成します。これは典型的な双方向SSL認証であり、クライアントとプロキシの双方が、デジタル証明書を交換し、互いのIDを確認する必要があります。一方向SSL認証の場合は、プロキシ・サーバーの構成にアイデンティティ・キーストアを含める必要がありますが、信頼キーストアは含める必要がありません。

例10-1 HTTP Acceptor用のSSL構成のサンプル

<proxy-scheme>
   <service-name>MetricsHttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         ...
        <socket-provider>
	   <ssl>
            <protocol>TLS</protocol>
            <identity-manager>
              <algorithm>SunX509</algorithm>
              <provider system-property="coherence.metrics.security.keystore.provider"/>
              <key-store>
                <url system-property="coherence.metrics.security.keystore">file:server.jks</url>
                <password system-property="coherence.metrics.security.keystore.password"/> 
                <type>JKS</type>
              </key-store>
              <password system-property="coherence.metrics.security.identitymanager.password”/> 
            </identity-manager>
            <trust-manager>
              <algorithm/>SunX509</algorithm>
              <provider system-property="coherence.metrics.security.truststore.provider"/>
              <key-store>
                <url system-property="coherence.metrics.security.truststore">file:truststore.jks</url>
                <password system-property="coherence.metrics.security.truststore.password"/>
                <type>JKS</type>
              </key-store>
            </trust-manager>
          </ssl>
        </socket-provider>
         ...
        <auth-method>cert</auth-method>
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

Coherenceメトリックを使用したSSLソケット・プロバイダ定義の参照

次の例では、オペレーション・デプロイメント・ディスクリプタの<socket-providers>要素で定義されているSSLソケット・プロバイダの構成を、構成のid属性(ssl)を指定することによって参照します。『Oracle Coherenceでのアプリケーションの開発』socket-providersに関する項を参照してください。

ノート:

事前定義済SSLソケット・プロバイダが、オペレーション・デプロイメント・ディスクリプタに含まれており、sslという名前です。事前定義済SSLソケット・プロバイダは、双方向SSL接続用に構成されており、信頼されているピアがすべて単一のJKSキーストア内に存在するピア信頼に基づいています。「事前定義済SSLソケット・プロバイダの使用方法」を参照してください。別のSSLソケット・プロバイダを構成するには、オペレーション・オーバーライド・ファイルを使用して事前定義済SSLソケット・プロバイダを変更するか、必要に応じてソケット・プロバイダの構成を作成します。

<proxy-scheme>
  <service-name>MetricsHttpProxy</service-name>
  <acceptor-config>
        <http-acceptor>
           ...
           <socket-provider>ssl</socket-provider>
           ...
           <auth-method>cert</auth-method>
        </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

Prometheus構成でのHTTPクライアント側の構成

Prometheusは、Coherenceメトリック・エンドポイントをスクレイプするために使用するHTTPクライアント・メトリック収集システムです。ユーザー名およびパスワードを使用するhttpsおよびbasic_authスキームを構成するためのパラメータは、Prometheus <scrape_config> configurationを参照してください。TLS接続を構成するには、Prometheus <tls_config> configurationを参照してください。