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
Существуют следующие типы разрешений, которые могут быть предоставлены пользователю.
- BCE
- ALTER
- АВТОРИЗОВАТЬ
- СОЗДАТЬ
- 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 Клиентские порты
Номер порта | Описание |
---|---|
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, выполните следующие действия.
- В файле 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.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
- Restart Cassandra
- Запустите nodetool с помощью Cassandra пользователь и пароль.
$ nodetool status -u cassandra -pw cassandra
Резюме
В этом руководстве рассказывается о безопасности в Cassandra и настройка CassandraФайл .yaml для включения безопасности. Помимо этого, здесь также объясняется, как можно создать новую учетную запись пользователя, назначить разрешения, настроить брандмауэр и т. д.