В 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
Пользователю могут быть предоставлены следующие типы разрешений.
- ВСЕ
- ИЗМЕНИТЬ
- РАЗРЕШИТЬ
- СОЗДАЙТЕ
- УРОНИТЬ
- ИЗМЕНИТЬ
- ВЫБРАТЬ
Вот примеры назначения прав пользователю.
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, выполните следующие действия.
- В файле 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
- Скопируйте 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
- Измените владельца jmxremote.password на пользователя, с которым вы запускаете Cassandra, и измените разрешение только на чтение
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
- Отредактируйте jmxremote.password и добавьте пользователя и пароль для JMX-совместимых утилит:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
- Добавьте пользователя Cassandra с разрешениями на чтение и запись в /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
- Перезапустить Кассандру
- Запустите nodetool с пользователем и паролем Cassandra.
$ nodetool status -u cassandra -pw cassandra
Резюме:
В этом руководстве рассказывается о безопасности в Cassandra и о настройке файла Cassandra.yaml для включения безопасности. Помимо этого, также объясняется, как можно создать новую учетную запись пользователя, назначить разрешения, настроить брандмауэр и так далее.