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

Содержание:

Anonim

В Apache Cassandra и Datastax Enterprise есть два типа безопасности.

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

В этом руководстве вы узнаете,

  • Что такое внутренняя аутентификация и авторизация
  • Настроить аутентификацию и авторизацию
  • Вход в систему
  • Создать нового пользователя
  • Авторизация
  • Настройка межсетевого экрана
  • Включение аутентификации JMX

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

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

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

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

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

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

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

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

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

  • В файле Cassandra.yaml по умолчанию значением аутентификатора является AllowAllAuthenticator. Измените значение аутентификатора с AllowAllAuthenticator на com.datastax.bdp.cassandra.auth.PasswordAuthenticator.
  • Точно так же в файле Cassandra.yaml по умолчанию значением авторизатора будет AllowAllAuthorizor. Измените значение этого авторизатора с AllowAllAuthorizor на com.datastax.bdp.cassandra.auth.CassandraAuthorizor.

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

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

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

Давайте посмотрим на приведенный ниже снимок экрана, где он не позволит вам войти в систему, если вы не используете стандартные «имя пользователя» и «пароль» Cassandra.

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

Вы также можете создать другого пользователя с этой учетной записью. Рекомендуется изменить пароль по умолчанию. Вот пример входа пользователя Cassandra и изменения пароля по умолчанию.

alter user cassandra with password 'newpassword';

Создать нового пользователя

Новые учетные записи могут быть созданы с помощью учетной записи «Кассандра».

Для создания нового пользователя, логина, пароль указывается вместе с тем, является ли пользователь суперпользователем или нет. Только суперпользователь может создавать новых пользователей.

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. ВСЕ
  2. ИЗМЕНИТЬ
  3. РАЗРЕШИТЬ
  4. СОЗДАЙТЕ
  5. УРОНИТЬ
  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 Internode порты

Номер порта

Описание

7000

Межузловая связь кластера Cassandra

7001

Межузловая связь кластера Cassandra SSL

7199

Порт мониторинга Cassandra JMX

Общественные порты

Номер порта

Описание

22

SSH порт

8888

Веб-сайт OpsCenter. HTTP-запрос браузера.

Cassandra OpsCenter порты

Номер порта

Описание

61620

Порт мониторинга OpsCenter.

61621

Порт агента Opscenter

Включение аутентификации JMX

С настройками Cassandra по умолчанию доступ к JMX возможен только с локального хоста. Если вы хотите получить доступ к JMX удаленно, измените параметр LOCAL_JMX в Cassandra-env.sh и включите аутентификацию или SSL.

После включения аутентификации JMX убедитесь, что OpsCenter и 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.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Отредактируйте jmxremote.password и добавьте пользователя и пароль для JMX-совместимых утилит:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Добавьте пользователя Cassandra с разрешениями на чтение и запись в /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Перезапустить Кассандру
  2. Запустите nodetool с пользователем и паролем Cassandra.
$ nodetool status -u cassandra -pw cassandra

Резюме:

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