Работа с сертифицированной версией¶
Данный раздел описывает особенности установки и настройки версий плагина Radix, сертифицированных ФСТЭК. Информация, изложенная для этих версий ниже, является приоритетной по сравнению с остальными разделами документации Radix.
Radix 1.0.5¶
Установка¶
Особенность данной версии состоит в том, что перед включением плагина
нужно создать пользователя, который указан в настройке
authorization_mode.default_user_name. По умолчанию этот пользователь
называется default. Если его не создать, то плагин не сможет
включиться. Эта проблема была исправлена в более поздних версиях. После
включения плагина, пользователю нужно будет выдать роли radix_reader и
radix_writer.
Рассмотрим эти шаги подробнее. Для примера используем роль Ansible для Picodata.
Первым делом убедитесь что вы используете роль Ansible версии 26.2.1 или более новую.
Обратите внимание на изменения в роли:
- параметр
sql_fileпереименован вsql_file_pre_plugins. В этом параметре указан файл с SQL-командами, выполняемыми до активации плагинов - появился параметр
sql_file_post_plugins— с файлом, выполняемым после включения плагинов.
Если необходимо поменять имя пользователя c default на, к примеру,
radixuser1, то его нужно будет поменять в
files/radix_plugin_config.ymlи files/pre_plugin.sql. В данном
примере оставлено имя по умолчанию.
Другая особенность 1.0.5 — пользователь по умолчанию должен иметь пустой пароль. Чтобы создать такого пользователя, нужно временно ослабить парольные политики. После создания нужно вернуть их обратно. Если требуется, чтобы доступ в Radix всё-таки был защищён паролем — нужно создать ещё одного пользователя, после включения плагина выдать новому пользователю все права, а у пользователя по умолчанию их изъять.
Рассмотрим содержимое файлов, которые будут использоваться для развёртывания Radix.
files/pre_plugin.sql — создаём пользователя до включения плагина
ALTER SYSTEM SET auth_password_length_min TO 0;
ALTER SYSTEM SET auth_password_enforce_uppercase TO FALSE;
ALTER SYSTEM SET auth_password_enforce_lowercase TO FALSE;
ALTER SYSTEM SET auth_password_enforce_digits TO FALSE;
CREATE USER IF NOT EXISTS default WITH PASSWORD '' OPTION(TIMEOUT=1200);
ALTER SYSTEM SET auth_password_enforce_digits TO TRUE;
ALTER SYSTEM SET auth_password_enforce_lowercase TO TRUE;
ALTER SYSTEM SET auth_password_enforce_uppercase TO TRUE;
ALTER SYSTEM SET auth_password_length_min TO 8;
files/post_plugin.sql — назначаем нужные права пользователю по умолчанию в Radix
GRANT radix_reader TO default;
GRANT radix_writer TO default;
files/radix_plugin_config.yml — указываем имя пользователя по умолчанию для Radix
radix:
authorization_mode:
state: enabled
default_user_name: default
Содержимое инвентарного файла:
sql_file_pre_plugins: files/pre_plugin.sql
sql_file_post_plugins: files/post_plugin.sql
tiers:
default:
replicaset_count: 1
replication_factor: 3
can_vote: true
config:
memtx:
memory: 2G
bucket_count: 16384 # обязательная опция для radix
plugins:
radix:
path: files/radix_1.0.5-astra_1.8_x86-64.tar.gz
config: files/radix_plugin_config.yml
tiers:
- default
services:
radix:
tiers:
- default:
listener:
enabled: true
listen: "0.0.0.0:73<INSTANCE_NUM>"
advertise: "<INSTANCE_ADDR>:73<INSTANCE_NUM>"
tls:
enabled: false
migration_context:
tier_for_db_0: 'default'
tier_for_db_1: 'default'
tier_for_db_2: 'default'
tier_for_db_3: 'default'
tier_for_db_4: 'default'
tier_for_db_5: 'default'
tier_for_db_6: 'default'
tier_for_db_7: 'default'
tier_for_db_8: 'default'
tier_for_db_9: 'default'
tier_for_db_10: 'default'
tier_for_db_11: 'default'
tier_for_db_12: 'default'
tier_for_db_13: 'default'
tier_for_db_14: 'default'
tier_for_db_15: 'default'
unlogged: ''
После установки с этим инвентарным файлом можно создать нового пользователя для Radix и ограничить пользователя default. Для примера назовём нового пользователя radix_default.
Выполните следующие команды в SQL-консоли Picodata:
CREATE USER IF NOT EXISTS radix_default WITH PASSWORD 'mypassword1' OPTION(TIMEOUT=1200);
GRANT radix_reader TO radix_default;
GRANT radix_writer TO radix_default;
Теперь через redis-cli выдайте все права radix_default и заберите их у default:
redis-cli -h localhost -p 7300
acl setuser radix_default +@all ~* &*
acl setuser default -@all resetkeys resetchannels
Аутентификация клиентов¶
При аутентификации в Radix 1.0.5 присутствует ошибка, которая была исправлена в более новых версиях 1.0.6 и 1.1.0.
Симптом: Клиент передаёт имя пользователя и пароль при подключении, но команда выполняется от имени default:
$ redis-cli -h 127.0.0.1 -p 7300 --user myuser1 -a 'mypassword1' get key1
AUTH failed: INSUFFICIENT PRIVILEGES no required rights assigned
(error) NOPERM User default has no permissions to run the 'get' command
Вместо INSUFFICIENT PRIVILEGES может быть WRONGPASS invalid
username-password pair or user is disabled. Ошибка в данном случае
выдаётся из-за того, что у пользователя default отобраны все права.
Причина: В 1.0.5 команда AUTH отклоняется, если это первая
команда в соединении. Если до AUTH была любая другая команда, AUTH
работает. Ошибка исправлена в версии 1.0.6.
Кого затрагивает:
redis-cliс параметрами--user/-a: он отправляетAUTHсразу после подключения- приложения и библиотеки, которые отправляют
AUTHпервой командой
Ошибка не затрагивает интерактивный redis-cli и клиентов, которые при
подключении сначала отправляют HELLO (go-redis, lettuce, node-redis и
др.).
Обход на 1.0.5: Сначала отправить любую команду, потом AUTH, например в интерактивном redis-cli:
$ redis-cli -h 127.0.0.1 -p 7300
127.0.0.1:7300> auth myuser1 mypassword1
OK
127.0.0.1:7300> get key1
"value1"