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

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

  • 内部認証
  • 承認

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

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

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

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

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

Kerberos と LDAP による外部認証をサポートしているのは datastax enterprise のみです。 一方、内部認証は Apache Cassandra と Datastax enterprise の両方でサポートされています。

認証と認可を構成する

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

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

認証と認可を構成する

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

ログイン

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

デフォルトでは、Cassandra はユーザー名「cassandra」とパスワード「cassandra」を持つスーパー アカウントを提供します。 「Cassandra」アカウントにログインすると、やりたいことが何でもできるようになります。

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

ログイン

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

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

ログイン

alter user cassandra with password 'newpassword';

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

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

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

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

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

list users;

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

ユーザーは次の方法でドロップできますwing 構文。

drop user laura;

承認

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

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

GRANT permission ON resource TO user

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

  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;

A new user ‘laura’ is created with password ‘newhire '。

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

承認

select* form emp_bonus;

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

承認

list all permissions of laura;

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

承認

list all permissions on dev.emp;

ファイアウォールの構成

ファイアウォールが実行されている場合は、次のようにしますwing 一部の 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 にリモートでアクセスする場合は、Cassandra-env.sh の LOCAL_JMX 設定を変更し、認証または SSL を有効にします。

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

手順

以下がありますwing JMX 認証を有効にする手順。

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

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

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. カサンドラを再起動する
  2. Cassandra ユーザーとパスワードを使用して、nodetool を実行します。
$ nodetool status -u cassandra -pw cassandra

まとめ

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