nodetool用にSSLを設定する

SSL暗号化を用いたnodetoolの使用

nodetoolでSSLを使用するには、JMXのセットアップが必要です。変更をcassandra-env.shに加えて、構成ファイル~/.cassandra/nodetool-ssl.propertiesを作成します。

cassandra-env.shファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/cassandra-env.sh

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/cassandra-env.sh

始める前に

SSL証明書の設定」の手順を完了します。さらに、クライアントとノード間の暗号化を構成します。

手順

  1. nodetoolでSSL暗号化を実行するには、追加の変更をcassandra-env.shに加える必要があります。以下の設定をファイルに追加する必要があります。キーストアとトラストストアに対するファイル・パス、および各ファイルごとに適切なパスワードを使用します。これらの変更は、クラスター内の各ノードで行う必要があります。
    実稼働環境:
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=true"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.need.client.auth=true"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.enabled.protocols=<enabled-protocols>"
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.enabled.cipher.suites=<enabled-cipher-suites>"
      
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/usr/local/lib/cassandra/conf/server-keystore.jks"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=myKeyPass"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStore=/usr/local/lib/cassandra/conf/server-truststore.jks"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStorePassword=truststorePass"
    開発環境:
       JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=true"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.need.client.auth=true"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.enabled.protocols=<enabled-protocols>"
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl.enabled.cipher.suites=<enabled-cipher-suites>"
    
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=keystore.node0"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=cassandra"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStore=truststore.node0"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.trustStorePassword=cassandra"

    com.sun.management.jmxremote.ssltrueに設定して、JMXのSSLを有効にします。双方向の証明書認証が必要な場合、com.sun.management.jmxremote.ssl.need.client.authtrueに設定します。com.sun.management.jmxremote.registry.ssltrueに設定した場合、Java VMが起動した時点でSSLで保護されたRMIレジストリーが作成され、そのまま使用できる管理エージェントによって構成されます。com.sun.management.jmxremote.registry.sslプロパティをtrueに設定した場合、フル・セキュリティを確保するには、com.sun.management.jmxremote.ssl.need.client.authも有効にする必要があります。keystoreファイルとtruststoreファイルの適切なパスを設定します。これらのパスワードは、キーストアとトラストストアの生成時に設定したパスワードに設定します。

  2. DSEを再起動します
  3. nodetoolの実行でSSL暗号化を使用するには、以下の設定を使用して、nodetoolを実行するノードのホームまたはクライアント・プログラム・ディレクトリーに.cassandra/nodetool-ssl.propertiesファイルを作成します。
    実稼働環境:
    -Dcom.sun.management.jmxremote.ssl=true
    -Dcom.sun.management.jmxremote.ssl.need.client.auth=false
    -Dcom.sun.management.jmxremote.registry.ssl=true  
    -Djavax.net.ssl.keyStore=/usr/local/lib/dse/resources/dse/conf/.keystore
    -Djavax.net.ssl.keyStorePassword=cassandra
    -Djavax.net.ssl.trustStore=/usr/local/lib/cassandra/conf/.truststore
    -Djavax.net.ssl.trustStorePassword=cassandra

    開発環境:

    -Djavax.net.ssl.keyStore=keystore.node0
    -Djavax.net.ssl.keyStorePassword=cassandra
    -Djavax.net.ssl.trustStore=truststore.node0
    -Djavax.net.ssl.trustStorePassword=cassandra
    -Dcom.sun.management.jmxremote.ssl.need.client.auth=true
    -Dcom.sun.management.jmxremote.registry.ssl=true
  4. すべてのnodetool操作で暗号化接続が行われるように、--sslオプションを指定してnodetoolを起動します。
    $ nodetool --ssl info ## Package installations $ installation_location/bin/nodetool -ssl info ## Tarball installations
  5. すべてのnodetool操作で暗号化接続が行われるように--sslオプションを指定し、認証と権限管理のためのユーザー名とパスワードを指定して、nodetoolを起動します。
    $ nodetool --ssl -u username -pw password status ## Package installations $ installation_location/bin/nodetool -ssl -u username -pw password status ## Tarball installations