Cassandra Автентифікація та авторизація JMX: створити користувача

Є два види безпеки в Apache Cassandra і підприємство Datastax.

  • Внутрішня автентифікація
  • авторизація

Що таке внутрішня автентифікація та авторизація

Внутрішня автентифікація в основному перевіряє підключення користувача. Користувач аутентифікується за допомогою логіна та пароля. Усі облікові записи користувачів керуються в Cassandra внутрішньо.

Внутрішня авторизація стосується дозволу користувача. Це стосується того, які дії може виконувати користувач. Наприклад, ми можемо надати дозвіл користувача, наприклад, який користувач має дозвіл лише на читання даних, який користувач має дозвіл на запис даних і який користувач має дозвіл на видалення даних.

Однак автентифікацією також можна керувати ззовні за допомогою Керберос (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

Існують такі типи дозволів, які можна надати користувачеві.

  1. ALL
  2. АЛЬТЕР
  3. АВТОРИЗУВАТИ
  4. CREATE
  5. DROP
  6. ЗМІНИТИ
  7. ВИБІР

Ось приклади надання дозволу користувачу.

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 Веб-сайт OpsCenter. http-запит браузера.

Cassandra Порти OpsCenter

Номер порту Опис
61620 Порт моніторингу OpsCenter.
61621 Порт агента Opscenter

Увімкнення автентифікації JMX

З налаштуваннями за замовчуванням Cassandra, JMX доступний лише з локального хосту. Якщо ви хочете віддалено отримати доступ до JMX, змініть налаштування LOCAL_JMX Cassandra-env.sh і ввімкніть автентифікацію або SSL.

Увімкнувши автентифікацію JMX, переконайтеся OpsCenter і nodetool налаштовані на використання автентифікації.

Процедура

Щоб увімкнути автентифікацію JMX, виконайте наступні дії.

  1. У файлі 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-енв.ш

LOCAL_JMX=no
  1. Скопіюйте jmxremote.password.template з /jdk_install_location/lib/management/ до /etc/cassandra/ і перейменуйте його na tojmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Змініть право власності на jmxremote.password на користувача, якого ви запускаєте Cassandra з і змінити дозвіл лише на читання
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Відредагуйте jmxremote.password і додайте користувача та пароль для JMX-сумісних утиліт:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Додати Cassandra користувач із дозволом на читання та запис до /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. перезапуск Cassandra
  2. Запустіть nodetool за допомогою Cassandra користувача та пароль.
$ nodetool status -u cassandra -pw cassandra

Підсумки

Цей посібник пояснює безпеку в Cassandra і налаштування Cassandraфайл .yaml для забезпечення безпеки. Окрім цього, тут також пояснюється, як можна створити новий обліковий запис користувача, призначити дозволи, налаштувати брандмауер тощо.