В Cassandra 2.2 невозможно создать роль, содержащую пароль

Безуспешная попытка создать новую роль (ранее пользователь), которая может входить в систему с паролем на основе нового контроля доступа на основе ролей в Cassandra 2.2, следуя документации из здесь.

В частности, следующая инструкция предоставляет следующую ошибку:

CREATE ROLE pam WITH PASSWORD = 'abc123' AND LOGIN = true;

InvalidRequest: code = 2200 [Недействительный запрос] message = "org.apache.cassandra.auth.CassandraRoleManager не поддерживает ПАРОЛЬ"

Контекст. Свежая Cassandra 2.2 устанавливается с 3 узлов. Таблица system_auth содержит только следующие таблицы: resource_role_permissons_index role_permissions role_members роли - и не содержит устаревших таблиц аутентификации, что является предупреждением при обновлении.


person Mike Biglan MS    schedule 04.08.2015    source источник
comment
вы можете войти в свой кластер с помощью кассандры / кассандры?   -  person mikea    schedule 05.08.2015
comment
Да, имя пользователя / пароль по умолчанию работает, и это контекст при выполнении команды создания роли   -  person Mike Biglan MS    schedule 07.08.2015


Ответы (2)


Вы используете IAuthenticator в своих узлах? Переключитесь на использование PasswordAuthenticator для поддержки использования паролей.

Ниже взято со страницы CassandraRoleManager: https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/auth/CassandraRoleManager.java

Альтернативные реализации IAuthenticator могут использоваться вместе с * CassandraRoleManager, но WITH PASSWORD = 'password' не будет поддерживаться * в операторах CREATE / ALTER ROLE.

person Alec Collier    schedule 04.08.2015
comment
Хороший вопрос. Но в cassandra.yaml у меня есть: Authenticator: PasswordAuthenticator и авторизатор: AllowAllAuthorizer - person Mike Biglan MS; 05.08.2015
comment
Хм, обычно AllowAllAuthorizer используется только с AllowAllAuthenticator и не поддерживает работу с привилегиями. Можете попробовать использовать CassandraAuthorizer? - person Alec Collier; 05.08.2015
comment
Отличное предложение. К сожалению, просто переключился на CassandraAuthorizer без изменений ошибки - person Mike Biglan MS; 05.08.2015
comment
Вам не нужно менять авторизатор, AllowAllAuthorizer должен нормально работать с PasswordAuthenticator и CassandraRoleManager. - person beobal; 05.08.2015

Я подозреваю, что проблема в том, что параметр role_manager отсутствует в cassandra.yaml. В этом случае Cassandra инициализирует экземпляр диспетчера ролей по умолчанию (CassandraRoleManager), но делает это до того, как конфигурация будет полностью обработана. В частности, он делает это до того, как был установлен аутентификатор, поэтому он не инициализируется с правильными параметрами для PasswordAuthenticator.

К счастью, есть простой обходной путь, который гарантирует, что параметр диспетчера ролей добавлен в cassandra.yaml:

role_manager: CassandraRoleManager

Билет для этого в системе отслеживания ошибок Cassandra - CASSANDRA-10209. Это означает, что ошибка была исправлена ​​в Cassandra 2.2.2 и 3.0.0.

person beobal    schedule 27.08.2015