Как обеспечить обратную совместимость при чтении после включения аутентификации на основе ролей в cassandra? - PullRequest
0 голосов
/ 04 октября 2019

Мы собираемся изменить настройку кассандры с authenticator: AllowAllAuthentication на authenticator: PasswordAuthenticator, чтобы включить аутентификацию на основе ролей. Будет две роли:

  • admin, который является суперпользователем
  • read-only, который может только читать.

Я хотел быобеспечить обратную совместимость для пользователей кластера cassandra. В частности, многие пользователи используют

  • сценарий оболочки, который использует cqlsh
  • пакет python cassandra
  • пакет php cassandra

для только чтение данных с Кассандры. В настоящее время они не указывают никакого имени пользователя или пароля. Поэтому я хотел бы сделать роль read-only своего рода ролью «по умолчанию», т. Е. Если имя пользователя и пароль не предоставлены, тогда роль автоматически устанавливается на read-only, поэтому пользователи могут читать данные и, таким образом, клиентам не нужныизменить их код.

Есть ли способ сделать это? В настоящее время у меня возникают проблемы в следующих двух частях:

  • пользователь по умолчанию - cassandra, если в cqlsh не указана роль / пользователь. Я не нашел способа установить пользователя / роль по умолчанию.
  • , а для пользователя по умолчанию cassandra мне все еще нужно установить пароль для него.

Любые предложения будутбыть оцененным! Заранее спасибо.

1 Ответ

0 голосов
/ 04 октября 2019

Я родом из оракула, где я делал "sqlplus" / as sysdba "" в течение многих лет. Мне это нравится, потому что O / S аутентифицирует меня. Сейчас в Кассандре есть нечто похожее, но оно небезопасно. В основном в вашем домашнем каталоге есть подкаталог с именем .cassandra (скрытый). В этом каталоге есть файл (если его нет, создайте его) с именем "cqlshrc" (так что ~ / .cassandra / cqlshrc). В этот файл вы можете добавить аутентификационную информацию, которая позволит кому-то войти в систему, просто набрав «cqlsh» без чего-либо еще (если вы не делаете удаленный доступ, где вам нужны «host» и «port»). Файл cqlshrc имеет, помимо прочего, раздел аутентификации, который выглядит следующим образом:

[authentication]
username = <your_user_name>
password = <your_password>

Таким образом, вы можете просто вставить желаемое имя пользователя и пароль в этот файл, и вы по сути сможете подключиться без указания имени пользователя. и пароль (вы также можете запустить «cqlsh -u your_user_name», и он также найдет ваш пароль в вашем файле cqlshrc).

Здесь вы можете увидеть несколько очевидных проблем: 1) Пароль в открытом виде. 2) Если вы меняете пароль, вам нужно изменить пароль в файле cqlshrc

Я не рекомендуюВы используете пользователя "Кассандра" для НИЧЕГО. На самом деле, я бы бросил это. Причина в том, что пользователь cassandra все делает с CL = quorum. Мы выяснили это при исследовании огромных запросов ввода-вывода, поступающих от OpsCenter и нашего инструмента резервного копирования (как вы можете видеть, мы используем DSE). Все они использовали кассандру и стучали по узлу (ам), у которого была информация аутентификации кассандры. Он встроен в код, очевидно, для того, чтобы иметь CL = кворум - вроде тупой. В любом случае, вышеперечисленное - это один из способов заставить пользователей войти в систему с определенным пользователем и не предоставлять учетные данные, что делает его довольно простым для переключения.

Надеюсь, это поможет

-Jim

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...