JMXユーザー認証の設定

ローカルホストまたはリモート・ホストからの接続にJMX認証を有効にするための手順。

JMX(Java Management Extensions)テクノロジーは、Java仮想マシン(JVM)のインスタンスに関連するリソースを管理および監視する単純で標準的な方法を提供します。そのためには、MBeanサーバーに登録される、マネージドBean(MBean)と呼ばれるJavaオブジェクトでリソースをインストルメント化します。DataStax Enterprise(DSE)は、MBeanに対するJMXユーザーの認証とロール・ベース・アクセス制御をサポートしています。「DSE Unified Authentication(DSE統合認証)について」を参照してください。DSEは、nodetoolと、JConsoleなどの外部監視ツールのJMX認証を提供します。

JMXクライアントのアクセスを管理するには、「マネージドBeanの呼び出しの権限管理」を参照してください。

注: JavaによりローカルJMX認証も可能になります。ローカルJMX認証では、ローカル・ファイルを使用して認証情報が格納され、アクセス制御が提供されます。認証情報と権限管理がDSEで無効な場合は、ファイル・ベースのJMXリモート認証を実装できます。

デフォルト設定

デフォルトでは、JMXリモート接続が無効で、JMXセキュリティ認証はcassandra-env.shファイルのローカル接続とリモート接続の両方で無効になっています。
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
cassandra-env.shファイルの場所は、インストールのタイプによって異なります。

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

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

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

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

始める前に

JMXユーザーにDSE Unified Authentication(DSE統合認証)を使用するには、「DSE Unified Authentication(DSE統合認証)の有効化」の手順を完了します。
注: DSE Unified Authentication(DSE統合認証)とRBACが無効な環境では、ローカル・ファイルを使用したJava JMXリモート認証のみを使用します。

手順

  • 検証のために認証情報をDSE Authenticator(DSEオーセンティケーター)に渡すようにJMXを設定するには:
    1. アクセスを許可するDSEノードで、リモートまたはローカルのJMXリモート認証をtrueに設定します。
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
      注: 接続がローカルかどうかを確認するテストが行われます。最初のインスタンスを変更してローカル接続で認証を有効にし、他の文で2番目のインスタンスを変更してリモートを有効にします。
    2. 以下の行をコメントアウトして、ローカル認証を無効にします。
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
      #JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"
    3. DSE Authenticator(DSEオーセンティケーター)を使用して外部認証を有効にするには、以下の行をコメント解除します。
      JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"'
      JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_CONF/cassandra-jaas.config"
      JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy"
  • ローカル・ファイルに対してJMX認証を設定するには:
    1. アクセスを許可するDSEノードで、リモートまたはローカルのJMXリモート認証をtrueに設定します。
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
      注: 接続がローカルかどうかを確認するテストが行われます。最初のインスタンスを変更してローカル接続で認証を有効にし、他の文で2番目のインスタンスを変更してリモートを有効にします。
    2. アクセスを無効にするDSEノードで、リモートまたはローカルのJMXリモート認証をfalseに設定します。
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
      警告: ローカルを無効にすると、ノードでdsetoolを実行できないなど予期しない動作が発生する場合があります。
    3. アクセスを許可するノードで、認証情報ファイルのパスを設定します。
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/dse/cassandra/jmxremote.password"
      注: cassandraを実行するユーザーがそのパスにアクセスできることを確認します。
    4. 各行にユーザー名とパスワードを含むファイルを作成し、前の手順で入力した場所に保存します。
      sallyjones 123DSEadmin
    5. ユーザーが実行できるアクションの種類を制限するには、jmxremote.accessファイルを作成し、リモート・アクセス・オプションをコメント解除し、以下の設定でパスを指定します。
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/dse/cassandra/jmxremote.access
    6. クラスター上のすべてのノードが更新された場合は、ローリング再起動を実行します。それ以外の場合は、影響を受けるノードのみを再起動します。
    7. 以下の認証情報でnodetoolコマンドを実行して、認証が機能していることを確認します。
      nodetool -u sallyjones -pw 123DSEadmin status
      結果が表示されます。
      Datacenter: DataStax
      =====================
      Status=Up/Down
      |/ State=Normal/Leaving/Joining/Moving
      --  Address         Load       Tokens       Owns    Host ID                               Rack
      UN  10.200.182.180  316.76 KiB  1            ?       5ca115f6-250a-4964-9a52-c10926031f1b  rack1
      UN  10.200.182.181  446.76 KiB  1            ?       74a44407-5e26-43d4-83dc-aae9fe35c2f4  rack1
      Datacenter: Solr
      ================
      Status=Up/Down
      |/ State=Normal/Leaving/Joining/Moving
      --  Address         Load       Tokens       Owns    Host ID                               Rack
      UN  10.200.182.183  368.38 KiB  1            ?       d59d912c-dcc9-469f-8ae1-1c14313e16b1  rack1
      
      Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
    8. クラスター内のノードごとに構成を繰り返します。
      ヒント: 通常、JMX設定はcassandra-env.shファイルに挿入されます。ただし、コマンドラインで指定することもできます。
      cassandra -Dcom.sun.management.jmxremote.authenticate=true
        -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password