Какая СУБД подходит для сохранения конфиденциальности схемы, даже если она установлена ​​«в дикой природе»

StackOverflow https://stackoverflow.com/questions/654758

Вопрос

У меня есть сервер приложений, который подключается к серверу базы данных.Я хотел бы иметь возможность предоставлять пользователям установщики и с умеренной степенью комфорта быть уверенным в том, что схема базы данных безопасна.

Я понимаю, что есть некоторые риски, которые мне просто придется принять, не контролируя компьютер, на котором он установлен - решительный человек с нужными инструментами и знаниями может смотреть прямо в память и извлекать информацию.

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

Однако, когда я начал исследования, я узнал, что для PostGreSQL, даже если я устанавливаю базу данных автоматически и не предоставляю учетные данные пользователю, они могут просто изменить текстовый файл конфигурации (pg_hba.conf) и перезапустите сервер, предоставив полный доступ к базе данных без учетных данных.

Защищен ли этот сценарий в других СУБД?Как большинство коммерческих продуктов защищают свои схемы в этом случае?Будет ли большинство продуктов использовать встроенные базы данных?


Редактировать:Я предполагаю (возможно, ошибочно), что некоторые продукты полагаются на базы данных, к которым пользователь никогда не прикасается напрямую.И я, конечно, никогда их не вижу, потому что они спроектировали это таким образом, что пользователю это не нужно - вероятно, с использованием встроенной базы данных.

Это было полезно?

Решение

Большинство коммерческих продуктов не защищают свои схемы.Они попадают в один из двух лагерей:

Либо они используют базу данных корпоративного класса для ключевого компонента продукта (например, системы расчета заработной платы), и в этом случае не предпринимается никаких попыток скрыть схему/данные.В большинстве этих случаев заказчику в любом случае необходим контроль над базой данных — настроить способ резервного копирования базы данных, иметь возможность создать кластерную среду и т. д.

Другой случай, если ваша «база данных» представляет собой не что иное, как небольшой файл настроек или хранилища для настольного приложения (например.базы данных истории и закладок в FireFox).В этом случае вам следует просто использовать встроенную базу данных (например, SQLite, такую ​​же, как FireFox) и добавить уровень потокового шифрования (есть официальная версия SEE) или просто использовать встроенную базу данных и забыть об уровне шифрования, поскольку пользователю сначала придется установить свои собственные инструменты базы данных, чтобы прочитать файл.

Другие советы

Насколько я помню, коммерческих продуктов, которые "защищать" их схемы.От чего вы хотите защитить схему?

Учитывайте следующие моменты:

  • В конце концов, единственный человек, который может защитить что-либо в СУБД, — это администратор сервера базы данных.И вы хотите, чтобы схема была защищена от этого человека?

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

  • Действительно ли вам нужно защищать свой реляционный дизайн?Неужели это так интересно?Вы изобрели что-то, что стоит скрывать?Я действительно так не думаю.И заранее извиняюсь, если что.


РЕДАКТИРОВАТЬ:Дополнительный комментарий:

Меня не волнует большинство внутренних компонентов баз данных продуктов, которые я использую.Это еще одна причина, по которой, я думаю, большинство из них не предпринимают никаких действий, чтобы защитить себя.Большинство из них не так интересны.

С одной стороны, я твердо убежден, что пользователям не нужно знать или волноваться о внутреннем устройстве базы данных.Но на том же уровне, как разработчик, я не думаю, что стоит пытаться их защитить.Скрытие их от пользователя, да.Защиты их от прямого доступа в большинстве случаев нет.И не потому, что я считаю неправильным защищать свою схему.Это потому, что я считаю, что это очень сложно и не стоит вашего времени как разработчика.

Но в конце концов, как и в любой другой теме, связанной с безопасностью, единственный правильный ответ – это то, каковы риски вовлеченный против расходы реализации меры безопасности.

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

Но ваш случай может быть другим.

Какую проблему вы пытаетесь решить? Ничто не может помешать DBA * делать то, что он хочет, со стандартными базами данных, и, как другие отмечают, активно враждебно вмешиваться в специфические для сайта потребности, такие как резервное копирование и обновление базы данных. Самое большее, вы можете зашифровать содержимое вашей базы данных, но даже тогда вы должны предоставить ключ дешифрования для фактического запуска вашего приложения, и мотивированный и враждебный администратор базы данных, вероятно, может подорвать его.

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

(*) Администратор базы данных или системный администратор может изменять файлы, такие как pg_hba.conf.

  

Как работают большинство коммерческих продуктов   защитить свои схемы в этом   сценарий?

Я не верю, что большинство коммерческих продуктов что-то делают для защиты своих схем.

Как встроенная СУБД может помешать кому-то возиться со своим хранилищем (файлами в этом не встроенном аппаратном контексте), когда такой человек имеет физический доступ к машине, на которой работает эта СУБД? Безопасность через неизвестность - рискованное предложение.

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

SQLite объединяет весь формат своей базы данных в один файл, и вы можете зашифровать и расшифровать его на месте. Недостаток, конечно, заключается в том, что пользователям нужен ключ для использования базы данных сейчас, и единственный способ, которым это может произойти, - это передать их им, возможно, жестко запрограммировав во время компиляции (защита от неясности) или схема телефона-дома (целый ряд причин, почему это плохая идея). Кроме того, теперь они будут вас ненавидеть, потому что вы помешали любой попытке создать полезную систему резервного копирования, и у них ужасная производительность при загрузке.

Кроме того, никто не заботится о схемах. Не хочется ломать его перед вами, но разработка схемы не является сложной проблемой и, конечно, никогда не является законным конкурентным преимуществом (за исключением нескольких конкретных областей, таких как представление знаний и хранение данных). Схемы вообще не стоит защищать в первую очередь.

Если это действительно так важно для вас, вместо этого создайте размещенное приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top