Сегодня мы поговорим о СУБД Redis, рассмотрим процесс установки и настройки. В отличие от реляционных систем управления базами данных, Redis является СУБД класса NoSQL с открытым исходным кодом, работающей  со структурами данных типа «ключ — значение».  Разберемся для начала с тем, что такое NoSQL. Представим, что у нас есть приложение, которому необходимо быстро и без задержек обрабатывать разные по структуре данные, не имеющие определенной структуры. В таком случае использование “классических”, реляционных баз данных будет не самым лучшим решением, так как нам необходимо будет сначала каким-то образом структурировать эти данные, а уже потом с ними работать. При использовании NoSQL мы можем использовать структуру “ключ-значение” и иметь возможность быстро обрабатывать неструктурированные данные. NoSQL используются как для баз данных, так и для реализации кэшей, брокеров сообщений. При этом, NoSQL стала популярным решением из-за простоты разработки, функционала, высокой производительности и возможности горизонтального масштабирования. Но, вернемся к СУБД Redis. Redis - это хранилище значений ключей в памяти, известное своей гибкостью, производительностью и широкой языковой поддержкой. Данная система ориентирована на достижение максимальной производительности на атомарных операциях (заявляется о приблизительно 100 тыс. SET- и GET-запросов в секунду на Linux-сервере начального уровня). Написана на Си, интерфейсы доступа созданы для большинства основных языков программирования. Далее мы поговорим о том, как установить и безопасно настроить Redis на сервере Ubuntu 22.04. Процесс базовой установки Redis достаточно прост. Необходимо выполнить всего две команды: sudo apt update sudo apt install redis-server Это позволит загрузить и установить Redis и его зависимости. После того как мы успешно установили систему, нам необходимо внести одно важное изменение конфигурации в конфигурационный файл, который был сгенерирован автоматически во время установки. Откройте этот файл в вашем предпочтительном текстовом редакторе:  sudo nano /etc/redis/redis.conf  Внутри файла найдите директиву supervised. По умолчанию для директивы supervised установлено значение no. Поскольку мы применяем Ubuntu, который использует систему инициализации systemd, измените это на systemd: Это единственное изменение, которое вам нужно внести в конфигурационный файл Redis на данный момент, поэтому сохраните изменения в файле. Затем перезапустите службу Redis, чтобы отразить изменения, внесенные вами в файл конфигурации: sudo systemctl restart redis.service Таким образом, мы установили и настроили Redis, и он запущен на вашем компьютере. Однако, прежде чем мы начнем его использовать, разумно сначала проверить, правильно ли работает Redis. Для этого мы воспользуемся командой redis-cli и затем выполним ping: В ответ мы должны получить сообщение PONG. Таким образом, наша установка Redis полностью работоспособна и готова к использованию. И собственно, на этом статью можно было бы завершить, однако некоторые параметры конфигурации по умолчанию небезопасны и предоставляют злоумышленникам возможность атаковать ваш сервер и его данные и получить к ним доступ. Поэтому дальше мы будем говорить о безопасной настройке Redis. При использовании настроек по умолчанию наша СУБД доступна только с локального узла. Для того, чтобы убедиться в этом снова откроем конфигурационный файл /etc/redis/redis.conf. Далее найдем строку bind. Убедимся, что эта строка раскомментирована и содержит значение 127.0.0.1 В случае, если вам пришлось внести в файл какие-либо изменения, необходимо перезапустить сервис: sudo systemctl restart redis И посмотрим, какие порты у нас слушаются системой: sudo netstat -lnp | grep redis Этот вывод показывает, что программа redis-server привязана к localhost (127.0.0.1). Если в этом столбце есть другой IP-адрес (например, 0.0.0.0), то вам следует дважды проверить, что вы раскомментировали правильную строку, и снова перезапустить службу Redis. Теперь, когда ваша установка Redis прослушивает только localhost, злоумышленникам будет сложнее отправлять запросы или получать доступ к вашему серверу. Далее давайте настроим аутентификацию пользователей при работе с redis-cli. Пароль для доступа к Redis настраивается непосредственно в конфигурационном файле Redis, /etc/redis/redis.conf, поэтому откройте этот файл снова и найдите секцию SECURITY. И в этой секции необходимо раскомментировать ключ requiredpass. Однако, если вы оставите это значение в таком виде, у вас будет использоваться не слишком сложный пароль foobared, поэтому после rerquiredpass укажите достаточно сложный пароль. Он будет использоваться для входа в redis-cli.   Сохраняем изменения и перезапускаем Redis: sudo systemctl restart redis.service Для проверки корректности настройки пароля запустите redis-cli и войдите в систему. Другая функция безопасности, встроенная в Redis, включает переименование или полное отключение определенных команд, которые считаются опасными. При запуске неавторизованными пользователями такие команды могут быть использованы для перенастройки, уничтожения или модификации ваших данных. Как и ранее при настройке пароля,  переименование или отключение команд настраивается в том же разделе SECURITY файла /etc/redis/redis.conf. Вот некоторые из команд, которые считаются опасными: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME и DEBUG.  Неумелое использование семейства команд FLUSH*, к примеру, может привести к удалению данных. Это неполный список, но переименование или отключение всех команд в этом списке является хорошей отправной точкой для повышения безопасности вашего сервера Redis. Например: А если мы не хотим полностью отключать потенциально опасную команду, так как предполагаем, что она нам может потребоваться в работе, то можно вместо этого дать ей длинное, сложное название. В качестве примера переименуем FLUSHDB: rename-command FLUSHDB  "pleaseflushmydb" Принятие решения о необходимости переименования команд остается за администратором БД и определяется теми потребностями, которые у него имеются. Если вы знаете, что никогда не будете использовать команду, которой может воспользоваться злоумышленник, то вы можете отключить ее. В противном случае, возможно, в ваших интересах было бы переименовать ее, назначив более сложное имя. В этой статье мы поговорили о том, что такое СУБД Redis, как ее можно установить и как ее использование можно сделать более безопасным, выполнив некоторые не очень сложные но полезные настройки. Статья подготовлена в рамках запуска курса "Базы данных". На странице курса вы можете подробно ознакомиться с программой, а также зарегистрироваться на бесплатные вебинары про миграцию между кластерами PostgreSQL, а также про формирование аналитической отчетности clickhouse + superset. Регистрируйтесь, будет интересно.