Новата версия на СУБД Redis 7.0 вече е пусната, Redis предоставя функции за съхраняване на данни във формат ключ/стойност, разширено с поддръжка на структурирани формати на данни като списъци, хешове и набори, както и възможност за стартиране на драйвери за Lua скриптове от страна на сървъра.
За разлика от системите за съхранение в паметта като Memcached, Redis осигурява постоянно съхранение на данни на диск и гарантира сигурността на базата данни в случай на необичайно изключване. Изходните текстове на проекта се разпространяват под лиценз BSD.
Клиентските библиотеки са достъпни за най-популярните езици, включително Perl, Python, PHP, Java, Ruby и Tcl. Redis поддържа транзакции, които ви позволяват да изпълнявате група от команди в една стъпка, като гарантирате последователност и последователност (командите от други заявки не могат да блокират) изпълнението на даден набор от команди и в случай на проблеми ви позволява да се върнете назад промените. Всички данни са напълно кеширани в RAM.
Redis 7.0 Ключови нови функции
В тази нова версия на СУБД, която е представена добавена поддръжка за функции от страна на сървъра, за разлика от поддържаните преди Lua скриптове, функциите не са специфични за приложението и са предназначени за прилагане на допълнителна логика което разширява възможностите на сървъра.
Функциите се обработват неразделно с данните и във връзка с базата данни, а не с приложението, включително репликация и постоянно съхранение.
Друга новост, която се откроява в Redis 7.0, е ACL второ издание, което ви позволява да контролирате достъпа до данни въз основа на ключове и ви позволява да дефинирате различни набори от правила за достъп за команди с възможност за свързване на множество селектори (набори от разрешения) към всеки потребител. Всеки ключ може да бъде идентифициран с определени разрешения, например можете да ограничите достъпа само за четене или запис до определена подгрупа ключове.
В допълнение към това се отбелязва, че Redis 7.0 предоставя Una фрагментирано изпълнение на парадигмата за разпространение на съобщения Публикуване-Абониране, който работи в клъстер, където съобщение се изпраща до определен възел, към който е прикачен каналът за съобщения, след което това съобщение се пренасочва към останалите възли, включени в корпуса. Клиентите могат да получават съобщения, като се абонират за канал, както чрез свързване към първичния възел, така и към вторичните възли на секцията.
Също така се подчертава, че предоставя възможност за обработка на множество конфигурации наведнъж в едно повикване CONFIG SET/GET и че опциите „–json“, „-2“, „–scan“, „–functions-rdb“ са добавени към помощната програма redis-cli.
По подразбиране, достъпът до настройки и команди, които засягат сигурността, е деактивиран за клиенти (например командите DEBUG и MODULE са забранени, промяната на конфигурациите с флага PROTECTED_CONFIG е забранена). Redis-cli спря да изпраща команди, съдържащи чувствителни данни към файла с история.
От друга страна, това се открояваe направи голяма част от оптимизациите, насочени към подобряване на производителността и намаляване на консумацията на памет. Например, консумацията на памет е значително намалена когато режимът на клъстер е активиран, при извършване на операции копиране при запис и при работа с ключове за хеш и zset, плюс логиката беше подобрена за изхвърляне на данни на диск (наречено fsync).
Фиксирана уязвимост CVE-2022-24735 в средата за изпълнение на скриптове на Lua, което ви позволява да замените своя собствен Lua код и да го накарате да се изпълнява в контекста на друг потребител, включително тези с по-високи привилегии.
Освен това можем да посочим уязвимост (CVE-2022-0543) в пакети с Redis за Ubuntu и Debian (проблемът е специфичен за отделните сборки и не е свързан със самия Redis), което позволява произволен Lua код да бъде изпълнен на отдалечен сървър и заобикаляне на механизма за изолиране на среда пясъчна среда за изпълнение на скриптове в Redis.
Обърнато е внимание на уязвимостта CVE-2022-24736, която може да позволи на процеса на redis сървъра да се срине поради дерефериране на нулев указател. Атаката се извършва чрез зареждане на специално изработени Lua скриптове.
най-накрая, ако сте се интересувам да научим повече за това, Можете да проверите подробностите по-долу връзка.