Из-за некоторых проблем с безопасностью мой босс попросил меня хранить все конфиденциальные данные во внешних / съемных хранилищах, таких как USB-накопитель или внешний жесткий диск, и это, в частности, включает файлы MDF / NDF / LDF SQL Server 2008, который мы запускаем.
Я читал последние три дня, но не нашел решения. Есть ли вообще какое-нибудь решение? Кто-нибудь когда-нибудь делал такое?
Что ж, теперь я знаю ответ на свой вопрос!
В соответствии с http://support.microsoft.com/kb/304261, вы можете использовать хранилище SAN / NAS для хранения файлов ваших баз данных с помощью флага TraceON. Что-то вроде:
DBCC TraceOn(1807);
GO
эта команда помечает 1807 TranceOn, чтобы вы могли использовать UNC, например "\ Server-name \ Path-to-Database-File.mdf", в качестве пути к файлам базы данных. Теперь вам нужно создать папку на съемном USB-жестком диске и использовать «Общий доступ и безопасность», чтобы предоставить полный контроль над этой папкой «сетевой службе» или любому другому пользователю, который ваш SQL использует для взаимодействия с вашей Windows. Не забудьте удалить всех и добавить администраторов.
Теперь все готово; создайте базу данных и получайте удовольствие!
DBCC TraceOn (1807);
Go
Use master;
GO
CREATE DATABASE [test001]
ON PRIMARY (
NAME = N'test001',
FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001.mdf' ,
SIZE = 2048KB ,
FILEGROWTH = 1024KB
)
LOG ON (
NAME = N'test001_log',
FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%
)
GO
Перенос простой базы данных на внешний диск должен быть простым:
exec sp_detach_db '<db_name>'
exec sp_attach_db '<db_name>', '<full_path_to_new_location_of_mdf>', '<full_path_to_ldf>'
(вы также можете сделать это с помощью инструментов графического интерфейса, присоединение и отсоединение обычно находятся под заголовком «Все задачи» в соответствующих контекстных меню). По моему опыту, это только на SQL7, 2000 и 2005, с использованием внутренних дисков в USB-корпусах. , но я предполагаю, что это не что-то, что изменится в 2008 году (и оно должно работать с другими USB-накопителями, такими как флеш-накопители). Диск должен быть локально смонтирован - SQL Server не позволит вам подключиться к базе данных сетевое хранилище.
Перед отключением диска убедитесь, что либо база данных отключена, либо SQL Server выключен (или, конечно, машина полностью отключена). Если вы освободите диск для извлечения, выключив компьютер или выключив сервер SQL, перед следующим запуском SQL-сервера диск необходимо подключить.
Как отмечали другие люди, в большинстве случаев вы получите более низкую производительность. Максимальная скорость большинства USB-накопителей составляет около 25 Мбит / с. даже если диск в корпусе способен на гораздо больше из-за ограничений контроллеров USB2. При этом, если у вас много всего происходит на ваших внутренних дисках (другой доступ к БД и т. Д.), Вы можете обнаружить, что перемещение базы данных на отдельный шпиндель, даже если он подключен через более медленный интерфейс, может улучшить отзывчивость (поскольку доступ к вашей БД не конкурировать за время на одном шпинделе с другим активным вводом-выводом и, таким образом, вызывать задержку из-за дополнительных движений головки). Предполагается, что вы используете вращающийся диск SATA / PATA в корпусе USB. Если вы используете стандартную флеш-карту USB, производительность будет ниже. много еще ниже, особенно для записи - несмотря на меньшую задержку твердотельного хранилища, что в определенной степени поможет, многие стандартные флешки не будут читать намного быстрее, чем 10 МБ / с, а скорости записи ниже 4 МБ / с далеки от необычно.
Что касается безопасности: хранение данных на съемных носителях более безопасно, только если ваша рабочая зона полностью защищена (никто не может войти / выйти без ключей и кодов, и вы проверяете, кого вы впускаете), и если вас нет все внешние диски отключены и хранятся в подходящем сейфе. В противном случае съемный диск на самом деле гораздо менее безопасен.
Все вышесказанное предполагает, что вы говорите о своей среде разработки. Это идет от «не особо рекомендуется» к «настоятельно не рекомендуется», если вы говорите о чем-то близком к живому сервису. И для разработки вы в любом случае не должны использовать конфиденциальные данные. Вы должны либо изготовить тестовые данные, либо, если это не анонимные реальные данные (вся идентифицирующая информация, такая как имена, адреса и идентификационные коды, достаточно рандомизирована, если ваши конфиденциальные данные являются личной информацией).
Обновление для более современного оборудования
С тех пор, как было написано выше, USB3 стал гораздо более распространенным, что несколько меняет аспект производительности. Хороший твердотельный накопитель 2,5 дюйма или mSATA в соответствующем корпусе USB3 на самом деле должен работать довольно хорошо (не так хорошо, как внутренний диск, конечно, и с влиянием на ЦП, но все же хорошо). Однако другие соображения остаются такими же.
У вас есть «проблема безопасности» в том, что физически украсть данные недостаточно сложно? Потому что мне очень сложно представить, как съемный диск улучшить безопасность данных.
Любое подключенное через USB устройство будет работать так плохо, что я уверен, что это будет невыносимо. Вам лучше использовать шифрование, даже зашифрованный диск
eSATA - ваш друг - не используйте USB, Firewire или любое другое решение NAS, отличное от 10 Гбит / с, FC SAN было бы просто замечательно, но они не совсем синонимичны со съемностью - поэтому я бы выбрал дисковый массив с eSATA, есть много, и они не очень дорогие.
USB 2.0 очень медленный, но это не может быть проблемой. Особенно, если использование вашей базы данных не особенно интенсивно для записи и у вас много оперативной памяти - в идеале SQL Server должен иметь возможность помещать всю базу данных в оперативную память, и в этот момент скорость вашего диска не будет иметь большого значения, когда SQL Server получит большинство / все страницы базы данных буферизуются в память.
Если вам требуется более высокая производительность съемного устройства, попробуйте Firewire или eSATA. FW800 даст вам около 80 МБ / с, если ваш накопитель на это способен. Даже FW400 примерно в два раза быстрее USB2 в реальном мире. eSATA работает еще быстрее, и вы вряд ли переполните этот интерфейс без RAID.
Я бы держался подальше от флешек. У них низкая скорость записи, и их нельзя записывать очень много раз, поскольку у них не всегда есть контроллеры выравнивания износа, как у более дорогих SSD.
Можно ли использовать съемные корпуса для 3,5-дюймовых дисков? Было бы неплохо, если бы вы могли просто использовать обычный внутренний жесткий диск, установленный на съемных салазках, как это обычно бывает с большинством серверов. Если диск абсолютно необходимо физически удалить и заблокировать, это лучшее решение, помимо простого размещения сервера в безопасном месте.
Это одно из тех требований, которое не имеет абсолютно никакого смысла, и вы не найдете для него никаких рекомендаций, потому что никто в здравом уме не попытается его выполнить. Ненавижу быть таким пессимистичным и открыто игнорировать ваши требования, но так оно и есть.
Сказав все это, лучше всего, если это соответствует намерениям вашего начальника, было бы изучить систему iSCSI, такую как QNAP
Нет никаких причин, по которым это не сработает. Если только вы не начнете извлекать диск во время работы SQL Server (вам нужно вручную отсоединить базу данных, чтобы иметь возможность безопасно удалить).
Производительность будет зависеть, слабо используемая база данных вряд ли пострадает. Для интенсивно используемой базы данных требуется несколько быстрых шпинделей, и она будет очень плохо работать на одном шпинделе - будь то USB или SAS.
Но как сделать съемный и более портативный носитель более безопасным? Вы должны понимать основное требование, чтобы иметь возможность давать полезные советы своему начальнику (другой вопрос, заинтересован ли он / она в полезных советах).
Я бы не стал использовать USB, но использовал бы обычные диски в отсеках HotSwap.
Поскольку вы будете использовать один USB-накопитель по-своему, вы можете просто использовать один диск в этой корзине для горячей замены, и вы получите ту же безопасность, что и USB-накопитель (от точки отказа). Сделайте резервную копию своих файлов на втором диске, который также можно удалить с помощью корзины HotSwap, и у вас есть что-то, что обеспечит вам хорошую производительность и съемную безопасность, которую требует босс. Также они не отображаются в Windows как съемное хранилище. Если вы используете хороший контроллер, возможно, вам даже удастся удалить их во время работы системы, как было сказано ранее, вам следует отсоединить файлы от БД. Вы можете сделать это как часть пакетного скрипта.
Обычно вы можете получить их в отсеках для дисков, у которых также есть ключи, которые повысят вашу безопасность во время его работы, чтобы никто не мог уйти с ним.
Для доступа к нему с другого компьютера, скажем, если вы по какой-то причине вытащили его и вам нужно получить к нему доступ с другого компьютера (скажем, ноутбука), возьмите один из тостеров или кабелей, где вы можете просто вставить диск в него и он будет доступен для чтения через USB на другом компьютере.
Помещение данных на съемные USB-накопители, чтобы вы могли заблокировать диски на ночь, для меня даже менее безопасно, чем запуск базы данных на компьютере под столом.
Если данные хранятся на USB-накопителе, то кто-то может пройти мимо, отсоединить накопитель, положить его в карман, и они исчезнут. Если данные хранятся на внутренних дисках сервера, они должны занять весь компьютер, чтобы получить данные, что гораздо более очевидно.
Если данные на SQL Server действительно так важны, выберите небольшой офис (или кладовую, если в ней есть хороший кондиционер) и отметьте ее как серверную. Поместите SQL Server и другие машины, на которых запущены серверные процессы, в эту комнату и заприте дверь. Убедитесь, что уборщица знает, что им нечего убирать, а лучше заберите ключ от этой комнаты.
Единственные люди, которые должны иметь доступ к этой комнате (у которых должен быть ключ от комнаты), - это человек или люди, которые управляют серверами. Менеджер этих людей, вероятно, тоже захочет получить ключ, но на самом деле он ему не нужен. Запасной ключ должен быть в запечатанном конверте в запираемом ящике в офисе менеджеров по персоналу на случай, если что-то случится с ИТ-персоналом.
Что касается сетевой защиты, чтобы предотвратить доступ людей к данным по сети, это должно быть сделано с помощью обычных передовых методов (минимальные разрешения, межсетевые экраны и т. Д.).
Что касается производительности SQL Server на USB-накопителе, производительность будет ужасной, так как USB очень медленный, как и флэш-накопители и внешние жесткие диски.
Другими словами, этого делать не следует.
Если вы будете использовать базу данных SQL Server на съемном носителе, таком как USB HDD, производительность вашей базы данных будет ограничена переключателем USB. Если использование вашей базы данных периодически ограничивается 1-2 пользователями - такое решение можно каким-то образом использовать, но если больше пользователей с (или) непрерывным доступом - я думаю, это будет очень медленно или даже непригодно для использования ...
Я использую программное обеспечение Truecrypt (бесплатное) / Bestcrypt (коммерческое) для шифрования носителей с файлами базы данных SQL Server (на RAID, а не на съемном жестком диске). Да, это добавляет сложности в процедуру запуска SQL Server (ручной [повторный] запуск или sp___attach_db каждый раз), но обеспечивает хорошую защиту для хранения данных (конечно, не самих данных, поскольку они могут быть доступны через SQL Server, но это другая история).
@ david-spillet sp_attachdb и sp_detach_db будут устаревшими после SQL 2008. Таким образом, вы не можете использовать эту команду в будущем