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 за замовчуванням значення автентифікатора — «AllowAllAuthenticator». Змініть це значення автентифікатора з «AllowAllAuthenticator» на «com.datastax.bdp.cassandra.auth.PasswordAuthenticator».
- Аналогічно, у cassandra.yaml за замовчуванням значенням авторизатора буде «AllowAllAuthorizer». Змініть це значення авторизатора з «AllowAllAuthorizer» на «com.datastax.bdp.cassandra.auth».CassandraУповноважений'.
Ці дві назви класів є значеннями DataStax Enterprise. На відкритому коді Apache Cassandra ті ж самі налаштування PasswordAuthenticator та CassandraAuthorizer, а облікові дані потім залишаються в system_auth ключовий простір, коефіцієнт реплікації якого слід підвищити вище одиниці.
Вхід у систему
Тепер автентифікацію ввімкнено, якщо ви спробуєте отримати доступ до будь-якого простору ключів, 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
Існують такі типи дозволів, які можна надати користувачеві.
- ALL
- АЛЬТЕР
- АВТОРИЗАЦІЯ
- CREATE
- 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 | Веб-сайт OpsCenter. http-запит браузера. |
Cassandra Порти OpsCenter
| Номер порту | Опис |
|---|---|
| 61620 | Порт моніторингу OpsCenter. |
| 61621 | Порт агента Opscenter |
Поточні драйвери використовують лише 9042; порт 9160 обслуговує застарілий інтерфейс Thrift і може залишатися закритим на нових кластерах.
Увімкнення автентифікації 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.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
- перезапуск Cassandra.
- Запустіть nodetool за допомогою Cassandra користувача та пароль.
$ nodetool status -u cassandra -pw cassandra







