Учебники

13) Безопасность

Существует два типа безопасности в Apache Cassandra и Datastax Enterprise.

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

В этом уроке вы узнаете,

Что такое внутренняя аутентификация и авторизация

Внутренняя аутентификация в основном проверяет пользовательское соединение. Пользователь аутентифицирован с логином и паролем. Все учетные записи пользователей управляются внутри Cassandra.

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

Тем не менее, проверка подлинности также может контролироваться извне с помощью Kerberos (Kerberos используется для безопасного управления учетными данными) и LDAP (LDAP используется для хранения достоверной информации об учетных записях, например того, к чему им разрешен доступ).

Внешняя аутентификация — это аутентификация, поддерживаемая Kerberos и LDAP. Apache Cassandra не поддерживает внешнюю аутентификацию.

Только Datastax Enterprise поддерживает внешнюю аутентификацию с Kerberos и LDAP. Принимая во внимание, что внутренняя аутентификация поддерживается как в Apache Cassandra, так и в Datastax enterprise.

Настроить аутентификацию и авторизацию

В Cassandra по умолчанию параметры аутентификации и авторизации отключены. Вы должны настроить файл Cassandra.yaml для включения аутентификации и авторизации.

Откройте файл Cassandra.yaml и удалите комментарии, касающиеся внутренней аутентификации и авторизации.

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

  • В файле Cassandra.yaml по умолчанию значением аутентификатора является «AllowAllAuthenticator». Измените значение этого аутентификатора с «AllowAllAuthenticator» на «com.datastax.bdp.cassandra.auth.PasswordAuthenticator».
  • Аналогично, в файле Cassandra.yaml по умолчанию значением авторизатора будет AllowAllAuthorizor. Измените значение этого авторизатора с «AllowAllAuthorizor» на «com.datastax.bdp.cassandra.auth.CassandraAuthorizor».

Вход в систему

Теперь аутентификация включена, если вы попытаетесь получить доступ к любому пространству клавиш, Cassandra выдаст ошибку.

По умолчанию Cassandra предоставляет супер-аккаунту имя пользователя «cassandra» и пароль «cassandra». Входя в учетную запись «Cassandra», вы можете делать все, что захотите.

Давайте посмотрим на скриншот ниже для этого, где он не позволит вам войти в систему, если вы не используете Cassandra по умолчанию «имя пользователя» и «пароль».

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

Теперь на втором снимке экрана вы можете видеть, что после использования учетных данных Cassandra по умолчанию вы можете войти в систему.

Вы также можете создать другого пользователя с этой учетной записью. Рекомендуется изменить пароль по умолчанию. Вот пример входа пользователя Cassandra и изменения пароля по умолчанию.

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

alter user cassandra with password 'newpassword';

Создать нового пользователя

Новые учетные записи могут быть созданы с помощью учетной записи «Cassandra».

Для создания нового пользователя, логин, пароль указывается вместе с тем, является ли пользователь суперпользователем или нет. Только Супер пользователь может создавать новых пользователей.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

Вы можете получить список всех пользователей по следующему синтаксису.

list users;

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

Пользователи могут быть удалены с помощью следующего синтаксиса.

drop user laura;

авторизация

Авторизация — это предоставление пользователям разрешения на действия, которые может выполнять конкретный пользователь.

Вот общий синтаксис для назначения разрешений пользователям.

GRANT permission ON resource TO user

Существуют следующие типы разрешений, которые могут быть предоставлены пользователю.

  1. ВСЕ
  2. ALTER
  3. AUTHORIZIZE
  4. СОЗДАЙТЕ
  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, поэтому была возвращена ошибка.

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

select* form emp_bonus;

Вы можете получить список всех разрешений, которые назначены пользователю. Вот пример получения информации о разрешении.

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

list all permissions of laura;

Вы также можете перечислить все разрешения на ресурсе. Вот пример получения разрешения из таблицы.

Cassandra SECURITY - Создать пользователя и аутентификацию с JMX

list all permissions on dev.emp;

Настройка брандмауэра

Если межсетевой экран работает, должны быть открыты следующие порты для связи между узлами, включая некоторые порты Cassandra. Если порты Cassandra не будут открыты, узлы Cassandra будут действовать как автономный сервер базы данных, а не присоединяться к кластеру базы данных.

Cassandra Client Ports

Номер порта

Описание

9042

Cassandra Client Port

9160

Клиент Кассандра Порт Комиссионный

Кассандра Internode порты

Номер порта

Описание

7000

Кассандровская междоменная кластерная связь

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-env.sh

LOCAL_JMX=no
  1. Скопируйте jmxremote.password.template из / jdk_install_location / lib / management / в / etc / cassandra / и переименуйте его в jjxxremote.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. Перезагрузите Кассандру
  2. Запустите nodetool с пользователем и паролем Cassandra.
$ nodetool status -u cassandra -pw cassandra

Резюме:

В этом руководстве рассказывается о безопасности в Cassandra и о настройке файла Cassandra.yaml для обеспечения безопасности. Кроме того, в нем также объясняется, как можно создать новую учетную запись пользователя, назначить права доступа, настроить брандмауэр и т. Д.