Способ скрыть схему базы данных SQL Server? - PullRequest
1 голос
/ 25 ноября 2011

Есть ли способ скрыть схему базы данных на SQL Server?

Если на клиентском сайте установлен SQL Server Express, есть ли способ скрыть схему и данные, чтобы кто-то другой не мог прийти и изучить схему для извлечения данных из нее и в другой продукт?

Ответы [ 4 ]

10 голосов
/ 30 ноября 2011

Лучший способ скрыть схему вашей базы данных - не позволить ей покинуть ваши серверы.

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

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

5 голосов
/ 25 ноября 2011

AFAIK, "нет".

Лучший способ "заблокировать" вашу базу данных:

1) Установка с соответствующими ролями и пользователями (в идеале, ролями SQL и пользователями SQL *)1005 * вы создаете)

2) Явно ограничивает права доступа к объектам в SQL Server

3) Создайте код приложения для использования хранимых процедур SQL Server (вместо необработанного T-SQL)насколько это возможно

4) Зашифруйте хранимые процедуры

Вот хорошая ссылка на «Рекомендации по SQL Server», которая может представлять интерес.В нем рассматриваются вопросы безопасности и (относительно) новая функция «Разделение пользовательских схем»:

1 голос
/ 07 декабря 2011

Есть способ, он запутанный и уродливый, но он работает.

У вас есть главная таблица, которая действует как справочная таблица для других ваших таблиц.Эта основная таблица будет выглядеть примерно так:

id, guid, entityname, parent_id

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

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

1 голос
/ 01 декабря 2011

Это сложный вопрос, и он может быть невозможен даже на 100%.Однако, есть несколько хитростей по его настройке:

  1. Установите новый с именем экземпляр SQL-сервера с пользовательской учетной записью SA (имя и пароль).Существует метод установки для вызова SQL-сервера «Автоматическая установка», который позволяет вам указать все параметры установки для SQL-сервера в INI-файле, а затем запустить установку без вывода сообщений.Ознакомьтесь с документацией здесь: Автоматическая установка SQL Server 2008 r2
  2. Создайте базу данных, таблицы, процедуры и т. Д. С помощью своего волшебного сценария установки SQL (используйте зашифрованные хранимые процедуры, если хотите,но они тоже можно взломать)
  3. Добавить / проверить разрешения схемы для учетной записи custom SA и удалить все разрешения схемы для всех ролей администратора.Цель здесь состоит в том, чтобы никакие роли не имели каких-либо разрешений схемы для вашей базы данных, и только ваш пользователь SA имеет разрешение (не назначенное ролью, а непосредственно пользователю).

Есть несколько коммерческих приложений, о которых я знаю, которые даже не говорят вам, что устанавливают экземпляр MS SQL Express.Они тоже создадут свой именованный экземпляр с именованной учетной записью SAЯ не могу сказать, что мне это нравится как клиенту (поскольку SQL наносит удар по процессору, и я не хочу, чтобы на моей рабочей станции работали "секретные" экземпляры).Но если вы заранее сообщите об этом своим клиентам, они могут понять.

** Имейте в виду, что опытный администратор базы данных может разбираться с системными таблицами и не иметь права вручную предоставлять доступ к вашей базе данных.Эти методы на самом деле просто «запутывание» и не будут на 100% пуленепробиваемыми.


В качестве примечания: С множеством доступных сторонних поставщиков данных и технологий веб-сервисов,Я думаю, что многие компании находят, что одна только схема их базы данных больше не является проприетарной или ценной.Было время, когда одна схема базы данных могла представлять сотни часов кодирования.Но сегодня такие инструменты, как EntityFramework, NHibernate, Linq-to-SQL, XPO и т. Д., Создают схему базы данных для вас на основе определений классов программного обеспечения и атрибутов кода.Так что просто видеть таблицу БД не очень ценно.Кроме того, вы можете написать кучу бизнес-логики, статистического анализа или других вспомогательных методов в вашем программном обеспечении, которых нет в схеме базы данных.По моему мнению, именно в этом и заключается сегодняшняя « добавленная стоимость » в функциональности бизнес-логики, анализа и отчетности вашего программного обеспечения, а не в необработанных таблицах данных.

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

...