Безопасность NoSQL- сопоставимость функций безопасности NoSQL и RDBMS

NoSQL (Not Only SQL) — это технология хранения и доступа к данным, которая стала очень модной у стартапов, занимающихся разработкой интерактивных веб-приложений, и предприятий, имеющих дело с громадными объемами информации. Основная причина ее популярности заключается в том, что она обеспечивает более высокие уровни масштабирования и доступности, а также более быстрый доступ к данным, по сравнению со стандартными системами управления реляционными БД (RDBMS), например, такими как Oracle MySQL и Microsoft SQL Server.

     Данные, хранящиеся в RDBMS, должны быть предсказуемыми и иметь определенную структуру, для того чтобы их можно было сохранять в виде таблиц, где данные из разных таблиц взаимосвязаны друг с другом определенным образом. NoSQL не обязательно должна придерживаться определенной логической структуры. Если производительность или доступ в масштабе реального времени являются более важными, чем последовательность, например, в случае индексирования и доступа к большому числу записей, система NoSQL является более подходящей, чем реляционная БД. Данные также будет проще хранить на нескольких серверах, обеспечивая повышенный уровень отказоустойчивости и масштабируемости. Такие компании как Google и Amazon применяют собственные базы данных NoSQL допускающие использование облачных технологий, и есть большое число коммерческих и открытых (с открытыми исходным кодом) баз данных NoSQL, типа Couchbase, MongoDB, Cassandra и Riak.

     Несмотря на все преимущества хранения данных в базе данных NoSQL, на безопасности NoSQL отрицательно отражается необходимость быстрого и легкого доступа к данным. Для того чтобы хранение данных считалось безопасным, база данных должна обеспечивать конфиденциальность, целостность и доступность (CIA). Корпоративные БД RDBMS обеспечивают эти функции (CIA) при помощи таких интегрированных функций безопасности как управление доступом на основе ролей, шифрование передаваемых данных, поддержка управления доступом к строке и полю, а также управление доступом через посредство прав доступа к сохраненным процедурам на уровне пользователя. БД RDBMS также имеют набор свойств ACID (atomicity, consistency, isolation, durability), которые гарантируют надежную обработку транзакций БД; репликация и запись транзакций в журнал обеспечивают надежность и целостность. Эти функции увеличивают время, требуемое для доступа к большим объемам данных, поэтому они не реализуются в базах данных типа NoSQL.

     Для того чтобы обеспечивать быстрый доступ к данным базы данных NoSQL создаются с небольшим числом функций безопасности. Они обладают так называемым набором свойств BASE (basically available, soft state, eventually consistent); вместо того чтобы поддерживать требование последовательности после каждой транзакции, базе данных просто необходимо со временем достигать последовательного состояния. Например, когда пользователи просматривают данные, типа числа элементов, они могут видеть последний снимок данных, а не текущее состояние. Поскольку транзакции записываются в базу данных не сразу, есть возможность взаимного пересечения одновременных транзакций. Это характерное состязание, в котором пользователи могут не обязательно видеть одинаковые данные в одно и то же время, подразумевает, что базы данных NoSQL никогда не мог ли бы использоваться для обработки финансовых транзакций.

     В базах данных NoSQL также отсутствуют функции конфиденциальности и целостности данных. Так как в базах данных NoSQL нет логической структуры, права доступа к таблице, столбцу или строке нельзя разделять. Это может также приводить к появлению множества копий одних и тех же данных. Это может затруднять поддержание последовательности данных, в частности потому что изменения в множестве таблиц не могут объединяться в одной транзакции, где логический блок операций вставки, обновления или удаления выполняется в целом.

     Поскольку существует более 20 различных реализаций NoSQL, отсутствие стандартов также повышает сложность поддержания безопасности данных. Конфиденциальность и целостность данных должны целиком обеспечиваться приложением, которое обращается к данным NoSQL. Это плохо, когда последняя линия защиты любых ценных данных находится на уровне приложения. Разработчики приложений не отличаются внимательностью к реализации функций безопасности, и новый программный код обычно означает новые ошибки. Любые запросы, направляемые в базу данных NoSQL, должны перенаправляться, фильтроваться и подтверждаться, в то время как сама БД должна постоянно располагаться в защищенной среде.

     Интересно, что сейчас в некоторые проекты NoSQL начинают возвращать функции безопасности свойственные системам RDBMS. Например, Oracle включила операционный контроль над данными, записываемыми в один узел. Cassandra поддерживает ведение журнала и автоматическую репликацию транзакций, а система MongoDB поддерживает репликацию ведущих и ведомых устройств.

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


Поделиться информацией

Вы можете послать эту статью или новость коллеге или знакомому по email со своим комментарием, пригласить обсудить ее. Просто нажмите на иконку конверта --->  


Сообщения, вопросы и ответы

Вы можете задать вопрос, написать комментарий, обсудить данную новость или статью.

Ваше сообщение (вопрос, ответ, комментарий)