Cassandra JMX 認証と認可: ユーザーの作成

セキュリティにはXNUMX種類あります Apache Cassandra そしてDatastaxエンタープライズ。

  • 内部認証
  • Authorization

内部認証と認可とは何ですか

内部認証は基本的にユーザー接続を検証します。ユーザーはログインとパスワードで認証されます。すべてのユーザーアカウントはで管理されます Cassandra 内部的に。

内部承認はユーザーの許可を扱います。 ユーザーが実行できるアクションを扱います。 たとえば、どのユーザーにデータの読み取り権限だけを与えるか、どのユーザーにデータの書き込み権限を与えるか、どのユーザーにデータの削除権限を与えるかといった権限をユーザーに与えることができます。

ただし、認証は次のように外部から制御することもできます。 Kerberos (Kerberos は認証情報を安全に管理するために使用されます) および LDAP (LDAP はアクセスが許可されている内容など、アカウントに関する権限のある情報を保持するために使用されます)。

外部認証は、Kerberos および LDAP でサポートされる認証です。 Apache Cassandra 外部認証はサポートされていません。

Kerberos と LDAP による外部認証をサポートしているのは datastax enterprise のみです。内部認証は両方でサポートされていますが、 Apache Cassandra Datastaxエンタープライズも同様です。

認証と認可を構成する

In Cassandra、デフォルトでは、認証および認可のオプションは無効になっています。設定する必要があります Cassandra認証と認可を有効にするための .yaml ファイル。

Open Cassandra.yaml ファイルを編集し、内部認証と認可を扱う行のコメントを解除します。

認証と認可を構成する

  • In Cassandra.yaml ファイルでは、デフォルトでは、認証子の値は「AllowAllAuthenticator」です。この認証子の値を「AllowAllAuthenticator」から「com.datastax.bdp.cassandra.auth.PasswordAuthenticator」に変更します。
  • 同様に、 Cassandra.yaml ファイルでは、デフォルトでは、authorizer の値は 'AllowAllAuthorizo​​r' になります。この authorizer の値を 'AllowAllAuthorizo​​r' から 'com.datastax.bdp.cassandra.auth' に変更します。Cassandra承認者」。

ログイン

これで認証が有効になり、キースペースにアクセスしようとすると、 Cassandra エラーを返します。

デフォルトでは、 Cassandra ユーザー名「cassandra」とパスワード「cassandra」を持つスーパーアカウントを提供します。Cassandra' アカウントでは、何をしても構いません。

これについては、以下のスクリーンショットを見てみましょう。デフォルトを使用していない場合、ログインは許可されません。 Cassandra "ユーザー名とパスワード"。

ログイン

2 番目のスクリーンショットでは、使用後がわかります。 Cassandra デフォルトのログイン資格情報を使用すると、ログインできます。

このアカウントで別のユーザーを作成することもできます。パスワードはデフォルトから変更することをお勧めします。ログイン例はこちら Cassandra ユーザーを変更し、デフォルトのパスワードを変更します。

ログイン

alter user cassandra with password 'newpassword';

新しいユーザーを作成する

新しいアカウントは「」で作成できます。Cassandra' アカウント。

新しいユーザーを作成してログインするには、ユーザーがスーパー ユーザーであるかどうかとともにパスワードを指定します。 スーパー ユーザーのみが新しいユーザーを作成できます。

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

次の構文ですべてのユーザーのリストを取得できます。

list users;

新しいユーザーを作成する

次の構文でユーザーを削除できます。

drop user laura;

Authorization

認可とは、特定のユーザーが実行できるアクションをユーザーに割り当てる権限です。

ユーザーに権限を割り当てるための一般的な構文を次に示します。

GRANT permission ON resource TO user

ユーザーに付与できる権限には以下の種類があります。

  1. 全て
  2. 変更する
  3. 承認する
  4. CREATE
  5. DROP
  6. 変更
  7. SELECT

ユーザーに権限を割り当てる例を次に示します。

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

新しいユーザー「laura」がパスワード「newhire」で作成されます。

ユーザー「laura」が emp_bonus テーブルにアクセスしようとする例を次に示します。 Laura には dev.emp にアクセスする権限のみがあり、このテーブル dev.emp_bonus に対する権限がないため、エラーが返されました。

Authorization

select* form emp_bonus;

ユーザーに割り当てられているすべての権限のリストを取得できます。 以下は許可情報を取得する例です。

Authorization

list all permissions of laura;

リソースに対するすべての権限をリストすることもできます。 以下はテーブルから許可を取得する例です。

Authorization

list all permissions on dev.emp;

ファイアウォールの構成

ファイアウォールが動作している場合、ノード間の通信のために以下のポートを開く必要があります。 Cassandra ポート。もし Cassandra ポートは開かれません、 Cassandra ノードは、データベース クラスターに参加するのではなく、スタンドアロン データベース サーバーとして機能します。

Cassandra クライアントポート

ポート番号 Description
9042 Cassandra クライアントポート
9160 Cassandra クライアントポートの節約

Cassandra ノード間ポート

ポート番号 Description
7000 Cassandra ノード間クラスタ通信
7001 Cassandra SSL ノード間クラスタ通信
7199 Cassandra JMXモニタリングポート

公共ポート

ポート番号 Description
22 SSHポート
8888 OpsCenter Web サイト。 ブラウザの http リクエスト。

Cassandra OpsCenterポート

ポート番号 Description
61620 OpsCenter モニタリング ポート。
61621 Opscenterエージェントポート

JMX認証の有効化

デフォルト設定では、 Cassandra, JMX にはローカルホストからのみアクセスできます。 JMX にリモートでアクセスする場合は、LOCAL_JMX 設定を変更します。 Cassandra-env.sh を指定し、認証または SSL を有効にします。

JMX 認証を有効にした後、次のことを確認してください。 オペレーションセンター およびnodetoolは認証を使用するように構成されています。

手順

JMX 認証を有効にするには、次の手順を実行します。

  1. cassandra-env.sh ファイルで、次の行を追加または更新します。
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

また、LOCAL_JMX 設定を変更します。 Cassandra-env.sh

LOCAL_JMX=no
  1. jmxremote.password.template を /jdk_install_location/lib/management/ から /etc/cassandra/ にコピーし、名前を jmxremote.password に変更します。
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. jmxremote.password の所有権を実行するユーザーに変更します。 Cassandra 読み取り専用の権限を付与して変更する
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. jmxremote.password を編集し、JMX 準拠ユーティリティのユーザーとパスワードを追加します。
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. 加えます Cassandra /jdk_install_location/lib/management/jmxremote.access に対する読み取りおよび書き込み権限を持つユーザー
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. 再起動 Cassandra
  2. を使用してnodetoolを実行します。 Cassandra ユーザーとパスワード。
$ nodetool status -u cassandra -pw cassandra

まとめ

このチュートリアルでは、セキュリティについて説明します。 Cassandra および構成 Cassandraセキュリティを有効にするための .yaml ファイル。これに加えて、新しいユーザー アカウントの作成方法、権限の割り当て、ファイアウォールの設定などについても説明します。