Cassandra JMX 認証と認可: ユーザーの作成
⚡ スマートサマリー
Cassandra セキュリティは、内部認証、ロール権限、ファイアウォールルール、およびJMXアクセス制御に基づいています。このページでは、各レイヤーの有効化、ユーザーの作成、権限の付与、およびリモートのnodetoolアクセスを保護する方法について説明します。
セキュリティにはXNUMX種類あります Apache Cassandra およびDataStax Enterprise。
- 内部認証
- Authorization
内部認証と認可とは何ですか
内部認証は基本的にユーザー接続の検証です。ユーザーはログイン名とパスワードで認証されます。すべてのユーザーアカウントは Cassandra 内部的に。
内部認証は、ユーザーの権限を管理します。つまり、ユーザーが実行できる操作を規定します。例えば、どのユーザーにデータ読み取り権限のみ、どのユーザーにデータ書き込み権限、どのユーザーにデータ削除権限を与えるかといった権限を設定できます。
ただし、認証はKerberos(Kerberosは認証情報を安全に管理するために使用されます)やLDAP(LDAPはアカウントに関する信頼できる情報、例えばアクセス権限などを保持するために使用されます)を使用して外部から制御することもできます。
外部認証は、Kerberos および LDAP でサポートされる認証です。 Apache Cassandra 外部認証はサポートされていません。
DataStax EnterpriseのみがKerberosとLDAPによる外部認証をサポートしていますが、内部認証は Apache Cassandra DataStax Enterpriseも同様です。
認証と認可を構成する
In Cassandraデフォルトでは、認証と認可のオプションは無効になっています。認証と認可を有効にするには、cassandra.yaml ファイルを設定する必要があります。
cassandra.yaml ファイルを開き、以下に示すように、内部認証と認可に関する行のコメントを解除してください。
- cassandra.yaml ファイルでは、デフォルトでは認証子の値は「AllowAllAuthenticator」になっています。この認証子の値を「AllowAllAuthenticator」から「com.datastax.bdp.cassandra.auth.PasswordAuthenticator」に変更してください。
- 同様に、cassandra.yaml では、デフォルトでは authorizer の値は 'AllowAllAuthorizer' になります。この authorizer の値を 'AllowAllAuthorizer' から 'com.datastax.bdp.cassandra.auth' に変更します。Cassandra承認者」。
これら2つのクラス名はDataStax Enterpriseの値です。オープンソースでは Apache Cassandra 同じ設定で PasswordAuthenticator (NAIST) と CassandraAuthorizerそして認証情報は system_auth キースペースの複製係数は1より大きくする必要があります。
ログイン
これで認証が有効になり、キースペースにアクセスしようとすると、 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
ユーザーに付与できる権限には以下の種類があります。
- 全て
- 変更する
- 承認する
- CREATE
- DROP
- 変更
- 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テーブルへのアクセス権限は持っていないため、エラーが返されました。
select* form emp_bonus;
ユーザーに割り当てられているすべての権限の一覧を取得できます。権限情報を取得する例を以下に示します。
list all permissions of laura;
リソースに対するすべての権限を一覧表示することもできます。以下は、テーブルから権限を取得する例です。
list all permissions on dev.emp;
ファイアウォールの構成
ファイアウォールが動作している場合、ノード間の通信のために以下のポートを開く必要があります。 Cassandra ポート。もし Cassandra ポートは開かれません、 Cassandra ノードは、データベースクラスタに参加するのではなく、独立したデータベースサーバーとして機能します。
Cassandra クライアントポート
| ポート番号 | 詳細説明 |
|---|---|
| 9042 | Cassandra クライアントポート |
| 9160 | Cassandra クライアントポートの節約 |
Cassandra ノード間ポート
| ポート番号 | 詳細説明 |
|---|---|
| 7000 | Cassandra ノード間クラスタ通信 |
| 7001 | Cassandra SSL ノード間クラスタ通信 |
| 7199 | Cassandra JMXモニタリングポート |
公共ポート
| ポート番号 | 詳細説明 |
|---|---|
| 22 | SSHポート |
| 8888 | OpsCenter Web サイト。 ブラウザの http リクエスト。 |
Cassandra OpsCenterポート
| ポート番号 | 詳細説明 |
|---|---|
| 61620 | OpsCenter モニタリング ポート。 |
| 61621 | Opscenterエージェントポート |
現在のドライバは9042番ポートのみを使用します。9160番ポートは従来のThriftインターフェースに使用され、新しいクラスタでは閉じたままにすることができます。
JMX認証の有効化
デフォルト設定では、 CassandraJMX はローカルホストからのみアクセスできます。リモートから JMX にアクセスするには、cassandra-env.sh の LOCAL_JMX 設定を変更し、認証または SSL を有効にしてください。
JMX 認証を有効にした後、次のことを確認してください。 オペレーションセンター およびnodetoolは認証を使用するように構成されています。
手順
JMX 認証を有効にするには、次の手順を実行します。
- 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"
また、cassandra-env.sh ファイルの LOCAL_JMX 設定を変更してください。
LOCAL_JMX=no
- /jdk_install_location/lib/management/ から jmxremote.password.template を /etc/cassandra/ にコピーし、jmxremote.password に名前を変更します。
cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password - jmxremote.password の所有権を実行するユーザーに変更します。 Cassandra 権限を読み取り専用に変更します。
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- jmxremote.password を編集し、JMX 準拠ユーティリティのユーザーとパスワードを追加します。
monitorRole QED controlRole R&D cassandra cassandrapassword
- 加えます Cassandra /jdk_install_location/lib/management/jmxremote.access に対する読み取りおよび書き込み権限を持つユーザー
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- 再起動 Cassandra.
- を使用してnodetoolを実行します。 Cassandra ユーザーとパスワード。
$ nodetool status -u cassandra -pw cassandra








