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
Існують такі типи дозволів, які можна надати користувачеві.
- 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. Лаура має дозвіл лише на доступ до 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, виконайте наступні дії.
- У файлі 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
- Скопіюйте 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
- Змініть право власності на 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
Підсумки
Цей посібник пояснює безпеку в Cassandra і налаштування Cassandraфайл .yaml для забезпечення безпеки. Окрім цього, тут також пояснюється, як можна створити новий обліковий запис користувача, призначити дозволи, налаштувати брандмауер тощо.