Redis (Remote dictionary server)

Продукт
Разработчики: Redis Ltd.
Дата премьеры системы: 2009/05/10
Дата последнего релиза: 2023/02/02
Технологии: СУБД

Содержание

Основная статья: Система управления базами данных (СУБД)

Redis (от англ. remote dictionary server) — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Используется как для баз данных, так и для реализации кэшей, брокеров сообщений[1].

2024: Доступность в облаке Т1 Cloud

Клиентам T1 Cloud стали доступны сразу три облачных сервиса в формате Managed Services (управляемые сервисы) на основе актуальных версий систем управления базами данных PostgreSQL, MongoDB и Redis. Об этом T1 Cloud сообщил 19 марта 2024 года. Подробнее здесь.

2023: Заражение около 1200 серверов Redis вредоносом HeadCrab

2 февраля 2023 года стало известно о том, что вредоносная программа, предназначенная для выслеживания уязвимых серверов Redis в Интернете, заразила более тысячи из них, начиная с сентября 2021 года. Исследователи из компании Aqua Security, которые обнаружили эту программу, дали ей название HeadCrab. По их словам, вредонос пока что невозможно обнаружить традиционными антивирусными решениями.

Иллюстрация:YouTube
«
Была обнаружена не только вредоносная программа HeadCrab, но и метод определения её заражения на серверах Redis. Данный метод выявил около 1200 зараженных серверов,
заявили исследователи.
»

Злоумышленники, стоящие за созданием ботнета, воспользовались уязвимостью серверов Redis: на них по умолчанию не включена аутентификация. Однако они предназначены для использования в сети организации и вообще не должны иметь доступа в Интернет.Бизнес уходит в облако: стратегии и подходы

Таким образом, вина в распространении вредоноса во многом лежит на администраторах, обслуживающих сервера. Потому что если случайно или намеренно настроить сервера так, чтобы они были доступны для подключения из Интернета, злоумышленники могут легко скомпрометировать и захватить их с помощью своих вредоносных инструментов. ​После установки и запуска HeadCrab предоставляет злоумышленникам все возможности, необходимые для получения полного контроля над целевым сервером и добавления его в свою ботнет-сеть криптомайнинга. Также HeadCrab делает всё возможное, чтобы избежать обнаружения.

«
Вредоносная программа основана на процессах Redis, которые вряд ли будут помечены как вредоносные. Полезная нагрузка загружается через memfd непосредственно в оперативную память сервера, избегая записи на диск,
сказали исследователи.
»

Анализируя вредоносное ПО, исследователи также обнаружили, что злоумышленники в основном используют пулы майнинга, размещенные на ранее скомпрометированных серверах, чтобы усложнить атрибуцию и обнаружение.

Кроме того, по статистике криптокошелька Monero, связанного с этим ботнетом, злоумышленники получают годовую прибыль в размере около 4500 долларов с одного устройства, что намного выше, чем обычные 200 долларов на рядовых компьютерах.

Для защиты своих серверов Redis администраторам рекомендуется убедиться, что доступ имеют только клиенты в пределах сети, отключить функцию «slaveof», если она не используется, и включить защищенный режим. [2]

2022: Redis 7.0

28 апреля 2022 года стало известно о том, что опубликован релиз СУБД Redis 7.0, относящейся к классу NoSQL-систем. Redis предоставляет функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. Код проекта поставляется под лицензией BSD. Дополнительные модули, в которых предлагаются расширенные возможности для корпоративных пользователей, такие как RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, с 2019 года поставляются под проприетарной лицензией RSAL. Развитие открытых вариантов данных модулей под лицензией AGPLv3 пытался продолжить проект GoodFORM, который последнее время находится в стагнации.

Redis

Как сообщалось, в отличие от систем хранения в оперативной памяти, таких как Memcached, Redis обеспечивает постоянное хранение данных на диске и обеспечивает сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, обеспечивая непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти.

Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае обеспечивается полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями "публикация/подписка", при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.

Ключевые изменения в Redis 7.0:

  • Добавлена поддержка функций, выполняемых на стороне сервера. В отличие от ранее поддерживаемых скриптов на языке Lua, функции не привязаны к приложению и нацелены реализацию дополнительной логики, расширяющей возможности сервера. Функции обрабатываются неразрывно с данными и в привязке к БД, а не к приложению, в том числе реплицируются и сохраняются в постоянном хранилище.
  • Предложена вторая редакция ACL, позволяющая управлять доступом к данным на основе ключей и допускающая определение разных наборов правил доступа к командам с возможностью привязки нескольких селекторов (наборов полномочий) к каждому пользователю. Каждый ключ может быть отождествлён с определённым полномочиями, например, можно ограничить доступ только чтением или записью определённого подмножества ключей.
  • Предоставлена работающая в кластере секционированная (sharded) реализация парадигмы распространения сообщений по подписке (Publish-Subscribe), при которой сообщение отправляется определённому узлу, к которому привязан канал сообщений, после чего это сообщение перенаправляется остальным узлам, входящим в секцию (shard). Клиенты могут получать сообщения по подписке на канал, как подключаясь к основному узлу, так и ко вторичным узлам секции. Управление производится при помощи команд SSUBSCRIBE, SUNSUBSCRIBE и SPUBLISH.
  • Добавлена поддержка обработки подкоманд в большинстве контекстов.
  • Добавлены команды:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME .
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.

  • Предоставлена возможность обработки сразу нескольких конфигураций в одном вызове CONFIG SET/GET.
  • В утилиту redis-cli добавлены опции "--json", "-2", "--scan", "--functions-rdb".
  • Клиентам по умолчанию отключён доступ к настройкам и командам, влияющим на безопасность (например, отключены команды DEBUG и MODULE, запрещено изменение конфигураций с флагом PROTECTED_CONFIG). В redis-cli прекращён вывод в файл с историей команд, содержащих конфиденциальные данные.
  • Внесена большая порция оптимизаций, нацеленных на оптимизацию производительности и снижение потребления памяти. Например, снижено потребление памяти при включении режима кластера, при выполнении операций copy-on-write и при работе с хэшами и ключами zset. Оптимизирована логика сброса данных на диск (вызова fsync). Сокращено число сетевых пакетов и обращений к системным вызовам при отправке ответов клиенту. Оптимизирована эффективность репликации.
  • Устранена уязвимость CVE-2022-24735 в окружении для исполнения Lua-скриптов, позволяющая осуществить подстановку своего Lua-кода и добиться его выполнения в контексте другого пользователя, в том числе имеющего более высокие привилегии. Дополнительно можно отметить уязвимость (CVE-2022-0543) в пакетах с Redis для Ubuntu и Debian (проблема специфична для отдельных сборок и не связана самим Redis), позволяющую выполнить произвольный код на языке Lua на удалённом сервере и обойти механизм sandbox-изоляции окружения для выполнения скриптов в Redis.
  • Устранена уязвимость CVE-2022-24736, позволяющая добиться аварийного завершения процесса redis-server из-за разыменования нулевого указателя. Атака совершается через загрузку специально оформленных Lua-скриптов.

Примечания



СМ. ТАКЖЕ (31)


Подрядчики-лидеры по количеству проектов

За всю историю
2021 год
2022 год
2023 год
Текущий год

  SAP CIS (САП СНГ) (38)
  Softline (Софтлайн) (35)
  РДТЕХ (33)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (28)
  ФОРС - Центр разработки (25)
  Другие (733)

  Сапиенс солюшнс (Sapiens solutions) (7)
  Navicon (Навикон) (3)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (3)
  GlowByte, ГлоуБайт (ранее Glowbyte Consulting, ГлоуБайт Консалтинг) (2)
  IFellow (АйФэлл) (2)
  Другие (35)

  РДТЕХ (1)
  IBS (1)
  Ред Софт (Red Soft) (1)
  InnoSTage (Инностейдж) (1)
  Сбербанк-Технологии (СберТех) (1)
  Другие (20)

  Arenadata (Аренадата Софтвер) (5)
  Тантор Лабс (Tantor Labs) (3)
  ФОРС - Центр разработки (2)
  Ред Софт (Red Soft) (1)
  Digital Design (Диджитал Дизайн) (1)
  Другие (18)

  Arenadata (Аренадата Софтвер) (5)
  GlowByte, ГлоуБайт (ранее Glowbyte Consulting, ГлоуБайт Консалтинг) (2)
  Диасофт (Diasoft) (2)
  Центр Финансовых Технологий (ЦФТ) (1)
  GMCS (1)
  Другие (16)

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Oracle (44, 179)
  SAP SE (6, 178)
  Microsoft (23, 142)
  PostgreSQL Global Development Group (14, 126)
  Постгрес профессиональный (ППГ, Postgres Professional) (6, 40)
  Другие (263, 242)

  SAP SE (3, 11)
  Microsoft (3, 11)
  PostgreSQL Global Development Group (3, 10)
  Oracle (2, 4)
  Постгрес профессиональный (ППГ, Postgres Professional) (2, 3)
  Другие (10, 13)

  PostgreSQL Global Development Group (4, 9)
  Постгрес профессиональный (ППГ, Postgres Professional) (2, 6)
  VK Tech (ранее VK Цифровые технологии, ВК Цифровые технологии и Mail.ru Цифровые технологии) (2, 3)
  Arenadata (Аренадата Софтвер) (3, 2)
  Oracle (2, 2)
  Другие (9, 9)

  PostgreSQL Global Development Group (3, 13)
  Постгрес профессиональный (ППГ, Postgres Professional) (1, 6)
  Arenadata (Аренадата Софтвер) (3, 5)
  Apache Software Foundation (ASF) (3, 4)
  Тантор Лабс (Tantor Labs) (2, 3)
  Другие (8, 10)

  PostgreSQL Global Development Group (4, 11)
  Arenadata (Аренадата Софтвер) (3, 6)
  VMware (2, 6)
  Постгрес профессиональный (ППГ, Postgres Professional) (2, 5)
  Сбербанк-Технологии (СберТех) (2, 2)
  Другие (5, 7)

Распределение систем по количеству проектов, не включая партнерские решения

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Oracle Database - 106
  Microsoft SQL Server - 104
  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 103
  PostgreSQL СУБД - 80
  SAP HANA (High Performance Analytic Appliance) - 72
  Другие 374

  Microsoft SQL Server - 9
  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 8
  PostgreSQL СУБД - 7
  Oracle Database - 3
  SAP HANA (High Performance Analytic Appliance) - 3
  Другие 21

  Postgres Pro СУБД - 5
  ADB - Arenadata DB - 2
  PostgreSQL СУБД - 2
  Tarantool Платформа in‑memory вычислений - 2
  Oracle Database - 2
  Другие 13

  Postgres Pro СУБД - 6
  PostgreSQL СУБД - 4
  ADB - Arenadata DB - 3
  Tantor СУБД - 3
  Apache Kafka - 2
  Другие 10

  PostgreSQL СУБД - 5
  ADB - Arenadata DB - 5
  Postgres Pro СУБД - 3
  Diasoft Digital Q.Database - 2
  ADH - Arenadata Hadoop - 2
  Другие 9