Существует два типа безопасности в 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 по умолчанию вы можете войти в систему.
Вы также можете создать другого пользователя с этой учетной записью. Рекомендуется изменить пароль по умолчанию. Вот пример входа пользователя 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
Существуют следующие типы разрешений, которые могут быть предоставлены пользователю.
- ВСЕ
- ALTER
- AUTHORIZIZE
- СОЗДАЙТЕ
- DROP
- ИЗМЕНИТЬ
- ВЫБРАТЬ
Вот примеры назначения разрешения пользователю.
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 Client Ports
Номер порта |
Описание |
9042 |
Cassandra Client Port |
9160 |
Клиент Кассандра Порт Комиссионный |
Кассандра Internode порты
Номер порта |
Описание |
7000 |
Кассандровская междоменная кластерная связь |
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 / и переименуйте его в jjxxremote.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
- Перезагрузите Кассандру
- Запустите nodetool с пользователем и паролем Cassandra.
$ nodetool status -u cassandra -pw cassandra
Резюме:
В этом руководстве рассказывается о безопасности в Cassandra и о настройке файла Cassandra.yaml для обеспечения безопасности. Кроме того, в нем также объясняется, как можно создать новую учетную запись пользователя, назначить права доступа, настроить брандмауэр и т. Д.