JMX認証の構成

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

cassandra-env.sh

cassandra-env.shファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-env.sh
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-env.sh

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

JMXクライアント・アクセスを管理するには、「JMX MBeansへのアクセスの制御」を参照してください。

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

デフォルト設定

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

DSE Unified Authentication(DSE統合認証)の有効化

JMX接続用のDSE統合認証を有効にします。

DSEは、dsetoolnodetoolなどのユーティリティからの統合認証と、Java Management Extensions(JMX)MBeanを使用してデータベースとやり取りするJConsoleなどの外部監視ツールを提供しています。

アクセスを許可するには、「JMX MBeansへのアクセスの制御」を参照してください。

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

始める前に

JMXユーザーにDSE Unified Authentication(DSE統合認証)を使用するには、「DSE Unified Authentication(DSE統合認証)の有効化」の手順を完了します。
注: DSE Unified Authentication(DSE統合認証)とRBACが無効な環境では、ローカル・ファイルを使用したJava 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を使用して外部認証を有効にするには、以下の行をコメント解除します。
    JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"'
    JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config"
    JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy"
  4. DSEを再起動します。

JMXネイティブ認証の有効化

ローカルまたはリモートのユーティリティ接続で、組み込みのJava Management Extensionsネイティブ認証方法を有効にします。

Javaにより提供されているローカルJMX認証方法を使用します。ローカルJMX認証では、ローカル・ファイルを使用して認証情報が格納され、アクセスが制御されます。この方法は、DSE Unified Authentication(DSE統合認証)がDSEで無効にされているときにnodetoolなどのユーティリティを実行するために認証を要求する場合にのみ使用してください。
ヒント: 通常、JMX設定はcassandra-env.shファイルに挿入されます。ただし、コマンドラインで指定することもできます。
cassandra -Dcom.sun.management.jmxremote.authenticate=true
  -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password

cassandra-env.sh

cassandra-env.shファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-env.sh
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-env.sh

手順

  1. リモートおよび/またはローカルの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. クラスター内のノードごとに構成を繰り返します。