Cassandra Аутентификация и авторизация JMX: создать пользователя
⚡ Умное резюме
Cassandra Безопасность обеспечивается внутренней аутентификацией, правами доступа к ролям, правилами брандмауэра и контролем доступа JMX. На этой странице показано, как включить каждый уровень, создать пользователей, предоставить права доступа и обеспечить безопасный удаленный доступ к nodetool.

В системе существует два типа безопасности. Apache Cassandra и DataStax Enterprise.
- Внутренняя аутентификация
- Авторизация
Что такое внутренняя аутентификация и авторизация
Внутренняя аутентификация, по сути, представляет собой проверку подключения пользователя. Пользователь аутентифицируется с помощью логина и пароля. Все учетные записи пользователей управляются в Cassandra внутренне.
Внутренняя авторизация определяет права пользователя и то, какие действия он может выполнять. Например, мы можем установить права доступа, которые разрешат пользователю только читать данные, права на запись данных и права на удаление данных.
Однако аутентификацию также можно контролировать извне с помощью Kerberos (Kerberos используется для безопасного управления учетными данными) и LDAP (LDAP используется для хранения авторитетной информации об учетных записях, например, о том, к чему им разрешен доступ).
Внешняя аутентификация — это аутентификация, поддерживаемая Kerberos и LDAP. Apache Cassandra не поддерживает внешнюю аутентификацию.
Только DataStax Enterprise поддерживает внешнюю аутентификацию с использованием Kerberos и LDAP, тогда как внутренняя аутентификация поддерживается обоими способами. Apache Cassandra а также DataStax Enterprise.
Настройка аутентификации и авторизации
In CassandraПо умолчанию параметры аутентификации и авторизации отключены. Для включения аутентификации и авторизации необходимо настроить файл cassandra.yaml.
Откройте файл cassandra.yaml и раскомментируйте строки, отвечающие за внутреннюю аутентификацию и авторизацию, как показано ниже.
- В файле cassandra.yaml по умолчанию значение параметра authenticator равно 'AllowAllAuthenticator'. Измените это значение с 'AllowAllAuthenticator' на 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
- Аналогично, в файле cassandra.yaml по умолчанию значение параметра authorizer будет равно 'AllowAllAuthorizer'. Измените это значение параметра authorizer с 'AllowAllAuthorizer' на 'com.datastax.bdp.cassandra.auth'.CassandraАвторизатор».
Эти два имени класса — значения DataStax Enterprise. В открытом исходном коде Apache Cassandra те же самые настройки PasswordAuthenticator и CassandraAuthorizerи учетные данные затем хранятся в system_auth пространство ключей, коэффициент репликации которого должен быть выше единицы.
Вход в систему
Теперь аутентификация включена, если вы попытаетесь получить доступ к любому пространству ключей, 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. У Laura есть только разрешение на доступ к таблице 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 |
В настоящее время драйверы используют только порт 9042; порт 9160 обслуживает устаревший интерфейс Thrift и может оставаться закрытым в новых кластерах.
Включение аутентификации 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







