Как защитить файл данных SQL Server.MDF и заблокировать .LDF от копирования? - PullRequest
1 голос
/ 27 сентября 2010

I Обновление небольшого приложения Ms Acces Desktop до VB.net SqlServer Express 2008 R2, это приложение работает в разных клиентских сетях LAN (около 50) с одной выделенной Windows Server 2008 R2 и двумя или тремя PC-клиентами.

Все установки имеют пароль SqlServer sa, и пароль никто не знает, этот логин sa предназначен только для административных задач.

Каждый пользователь имеет свой собственный uid и пароль, эти логины SqlServer имеют код VB.NET, который вставляется и шифруется,

Мне нужно защитить данные, схемы, хранимые процедуры и т. Д. От копирования файла mdf и установки в другом экземпляре SqlServer для взлома файла mdf.

Как я могу защитить файл .mdfчтобы избежать этого взлома?.

Thx.

Ответы [ 5 ]

2 голосов
/ 27 сентября 2010

Если я вас правильно понимаю, [1] вы предоставляете людям локальный доступ (на жестком диске их персонального компьютера) к файлу данных [2], но не хотите, чтобы они взламывали данные или даже заглядывали внутрь.

Вы ничего не можете сделать, чтобы противостоять нескольким человеко-дням попыток победить его.Тем не менее:

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

Хорошо, что это?

2 голосов
/ 27 сентября 2010

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

  1. создайте том TrueCrypt (он может работать с криптотокенами USB) и поместите ваши файлы на этот том.
  2. создать скрипт, который будет монтировать том и запускать MS SQL Server (который будет использовать файлы БД на томе)
  3. Законный пользователь должен предоставить ПИН-код для доступа к устройству. Так что если сторонний пользователь крадет устройство, у него нет пин-кода. Если он захватывает PIN-код и файлы, - ему все еще нужно устройство. То есть его задача становится в несколько раз сложнее, чем просто копировать базу данных.
1 голос
/ 04 октября 2010

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

Никто никогда не должен находиться на одном сервере с файлом mdf.

Выполните следующие действия, и вам станет лучше.

  • Разместите базу данных SQL на выделенном сервере
  • Разрешите клиентам подключаться к базе данных как пользователь с ограниченными правами (некак 'sa')
  • Не предоставляйте клиентскому доступу дополнительный доступ к этому серверу
1 голос
/ 04 октября 2010

Вы говорите, что на самом деле развертываете экземпляр базы данных на каждом клиентском компьютере?SQL Server не предназначен для замены MS Access!Это очень масштабируемая СУБД , а не база данных рабочего стола.

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

Этоизвестная как модель Client Server .

Если ваши пользователи распределены (например, не в одном офисе), рассмотрите возможность написания веб-приложения, опять же с центральной базой данных.

Вы не можете рассчитывать на контроль над данными, которые остались у вас в руках.Держите его на своем сервере.

1 голос
/ 27 сентября 2010

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

SQL Server 2008 Enterprise Edition (поэтому он не будет работать в используемой версии Express) имеет функцию под названием Прозрачное шифрование данных который может зашифровать весь файл базы данных.Он не имеет столько проблем с производительностью, как шифрование по столбцам, о которых я упоминал выше, но все же страдает от проблемы, с которой любой, кто имеет физический доступ к клиентскому приложению, может извлечь ключи дешифрования без особых хлопот.Плюс, конечно, версия Enterprise стоит действительно дорого!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...