Cassandra Аутентификация и авторизация JMX: создать пользователя

В системе существует два типа безопасности. Apache Cassandra и предприятие Datastax.

  • Внутренняя аутентификация
  • Авторизация

Что такое внутренняя аутентификация и авторизация

Внутренняя аутентификация — это, по сути, проверка соединения пользователя. Пользователь авторизуется с помощью логина и пароля. Все учетные записи пользователей управляются в Cassandra внутренне.

Внутренняя авторизация связана с разрешением пользователя. Речь идет о том, какие действия может выполнять пользователь. Например, мы можем предоставить права пользователя, например, какой пользователь имеет разрешение только на чтение данных, какой пользователь имеет разрешение на запись данных и какой пользователь имеет разрешение на удаление данных.

Однако аутентификацией также можно управлять извне с помощью Kerberos (Kerberos используется для безопасного управления учетными данными) и LDAP (LDAP используется для хранения достоверной информации об учетных записях, например, о том, к чему им разрешен доступ).

Внешняя аутентификация — это аутентификация, поддерживаемая Kerberos и LDAP. Apache Cassandra не поддерживает внешнюю аутентификацию.

Только datastax Enterprise поддерживает внешнюю аутентификацию с помощью Kerberos и LDAP. Принимая во внимание, что внутренняя аутентификация поддерживается как в Apache Cassandra а также предприятие Datastax.

Настройка аутентификации и авторизации

In Cassandra, по умолчанию параметры аутентификации и авторизации отключены. Вам нужно настроить CassandraФайл .yaml для включения аутентификации и авторизации.

Открыто Cassandra.yaml и раскомментируйте строки, относящиеся к внутренней аутентификации и авторизации.

Настройка аутентификации и авторизации

  • In CassandraФайл .yaml, по умолчанию значение аутентификатора — «AllowAllAuthenticator». Измените значение аутентификатора с «AllowAllAuthenticator» на «com.datastax.bdp.cassandra.auth.PasswordAuthenticator».
  • Аналогично, в CassandraФайл .yaml, по умолчанию значение авторизатора будет 'AllowAllAuthorizor'. Измените это значение авторизатора с 'AllowAllAuthorizor' на 'com.datastax.bdp.cassandra.auth.CassandraАвторизатор».

Вход в систему

Теперь аутентификация включена, если вы попытаетесь получить доступ к любому пространству ключей, Cassandra вернет ошибку.

По умолчанию Cassandra предоставляет супераккаунт с именем пользователя 'cassandra' и паролем 'cassandra'. Войдя в 'Cassandra'аккаунт, вы можете делать все, что захотите.

Давайте посмотрим на скриншот ниже, где вы не сможете войти в систему, если вы не используете настройки по умолчанию. Cassandra "имя пользователя и пароль".

Вход в систему

Теперь на втором скриншоте вы можете увидеть после использования 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;

Авторизация

Авторизация — это предоставление пользователям разрешения на то, какие действия может выполнять конкретный пользователь.

Вот общий синтаксис для назначения разрешений пользователям.

GRANT permission ON resource TO user

Существуют следующие типы разрешений, которые могут быть предоставлены пользователю.

  1. BCE
  2. ALTER
  3. АВТОРИЗОВАТЬ
  4. СОЗДАТЬ
  5. DROP
  6. ИЗМЕНИТЬ
  7. ВЫБОР

Ниже приведены примеры назначения разрешений пользователю.

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. У Лауры есть только разрешение на доступ к 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 Клиентский порт Thrift

Cassandra Межузловые порты

Номер порта Описание
7000 Cassandra межузловая связь кластера
7001 Cassandra Межузловая связь кластера SSL
7199 Cassandra Порт мониторинга JMX

Публичные порты

Номер порта Описание
22 SSH порт
8888 Сайт Операционного центра. HTTP-запрос браузера.

Cassandra Порты Операционного центра

Номер порта Описание
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. Restart Cassandra
  2. Запустите nodetool с помощью Cassandra пользователь и пароль.
$ nodetool status -u cassandra -pw cassandra

Резюме

В этом руководстве рассказывается о безопасности в Cassandra и настройка CassandraФайл .yaml для включения безопасности. Помимо этого, здесь также объясняется, как можно создать новую учетную запись пользователя, назначить разрешения, настроить брандмауэр и т. д.