Когда функция FILESTREAM активирована в Microsoft SQL Server 2012, SQL Server создаст «скрытый» общий ресурс в системе. Доля определяется следующим образом:
Sharename FILESTREAM_SHARE
Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE
Remark SQL Server FILESTREAM share
Maximum users unlimited
Users Caching Manual caching of documents
Permissions NT-AUTHORITY\Authenticated Users, FULL
Имя - это имя общего ресурса, который вы предоставляете при первоначальной настройке FILESTREAM в диспетчере конфигурации SQL Server . Но для чего это нужно?
Слишком далеко
Я прочитал всю доступную документацию FILESTREAM, начиная с:
- FILESTREAM (SQL Server)
- Включить и настроить FILESTREAM
- Создать базу данных с поддержкой FILESTREAM
- Создать таблицу для хранения данных FILESTREAM
- ... и все что связано
- Совместимость FILESTREAM с другими функциями SQL Server
- FILESTREAM DDL, функции, хранимые процедуры и представления
- Доступ к данным FILESTREAM с помощью OpenSqlFilestream
- документ SQL Server 2008 - хранилище FILESTREAM в SQL Server 2008
- и статья FILESTREAM (OLTP) --- Техническое справочное руководство по разработке критически важных решений OLTP, в котором содержится множество других материалов.
... но не было упоминания о доле и о том, что она делает или для чего она нужна. Вы вводите имя, и SQL Server создаст общий ресурс.
База данных с поддержкой FILESTREAM
Когда вы создаете базу данных с поддержкой FILESTREAM, база данных ссылается на файловую группу, которая ссылается на каталог (рекомендуется на отдельном диске), который не имеет абсолютно никакого отношения к общему ресурсу, который был изначально создан во время настройки FILESTREAM.
Скриншот сценария базы данных с поддержкой FILESTREAM
Да, я понимаю, что все пути находятся на C :; это всего лишь пример
Белая книга Пола Рэндалла и соавторов. продолжает объяснять, что ...
Данные FILESTREAM хранятся в файловой системе в наборе каталогов NTFS, называемых контейнерами данных, которые соответствуют специальным группам файлов в базе данных. Транзакционный доступ к данным FILESTREAM контролируется SQL Server и драйвером фильтра файловой системы, который устанавливается как часть включения FILESTREAM на уровне Windows. Использование драйвера фильтра файловой системы также обеспечивает удаленный доступ к данным FILESTREAM по пути UNC. SQL Server поддерживает сортировку ссылок из строк таблицы на связанные с ними файлы FILESTREAM. Это означает, что удаление или переименование любых файлов FILESTREAM непосредственно через файловую систему приведет к повреждению базы данных.
... далее по документу (стр. 14) они продолжают ...
Существует один драйвер фильтра файловой системы FILESTREAM для каждого тома NTFS, в котором имеется контейнер данных FILESTREAM, а также один для каждой версии SQL Server, в которой имеется контейнер данных FILESTREAM в томе. Каждый драйвер фильтра отвечает за управление всеми контейнерами данных FILESTREAM для этого тома для всех экземпляров, которые используют конкретную версию SQL Server.
Например, том NTFS, на котором размещены три контейнера данных FILESTREAM, по одному для каждого из трех экземпляров SQL Server 2008, будет иметь только один драйвер фильтра файловой системы FILESTREAM для SQL Server 2008.
Вопросов
- Приятно знать, что в SQL Server все хорошо и тесно связано, но что делает этот общий ресурс на самом деле? Это так называемый «драйвер фильтра файловой системы»?
- Видя, как любой аутентифицированный пользователь может получить доступ к «общему ресурсу», каковы последствия для безопасности?
- Является ли устройство RsFx0320 предшественником формата отказоустойчивой файловой системы, который был представлен в Windows Server 2012?
Если вы можете дать ответы на мои вопросы, было бы хорошо, если бы вы могли предоставить ссылку на источник.
источник
Вот мой взгляд на ваши вопросы:
1. Приятно осознавать, что в SQL Server все хорошо и тесно связано, но что на самом деле делает этот ресурс? Это так называемый «драйвер фильтра файловой системы»?
SQL Server Доступ к потоку файлов - это, в общем, доступ к файлам. Общий ресурс предоставляет это местоположение через общий файловый ресурс.
Вы можете легко увидеть это с помощью некоторого кода на C #, используя OpenSqlFilestream на
https://docs.microsoft.com/en-us/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream
Как вы можете видеть, нет FILE_SHARE_READ для CreateFile и нет волшебства файла, нет файлового потока:
Примечание. Относительно того, почему нет опции локального сервера / общего ресурса FILESTREAM - я понятия не имею. Похоже, некоторым людям может понравиться этот дополнительный уровень безопасности.
2.После того, как любой прошедший проверку пользователь может получить доступ к «общему ресурсу», каковы последствия для безопасности?
Вау, отличный вопрос. Похоже, что разрешения общего ресурса доступны любому аутентифицированному пользователю, но базовые разрешения NTFS должны точно настроить безопасность. Но это кажется дырой в безопасности для меня. Мне нужно было бы дополнительно исследовать, насколько точно настроены разрешения NTFS, но мне определенно не нравятся общие разрешения для общего файлового ресурса. Давай на Microsoft, ВСЕ "аутентифицированные пользователи"? Правильно или неправильно, я думаю, что Microsoft склонна игнорировать общий доступ / фокус на разрешения NTFS.
Поставка «аутентифицированных пользователей» обсуждалась годами. Вот один из лучших блогов, которые я читал на страницах «аутентифицированных пользователей». Это так сильно укоренилось в Windows, что я не думаю, что они когда-либо скажут, что это законный риск - пока не выйдет их новый продукт, который избавится от него.
https://social.technet.microsoft.com/Forums/windowsserver/en-US/bb74fa7c-89bd-476d-88bf-e88cd66618e6/why-is-authenticated-users-in-the-local-users-group-by- по умолчанию? форум = winserversecurity
3. Является ли устройство RsFx0320 предшественником формата отказоустойчивой файловой системы, который был представлен в Windows Server 2012?
Похоже, что на основе SQL, а не O / S. RsFx0320.sys - это SQL 2008. Как видно ниже, SQL 2012 - это RsFx0201.sys, а SQL 2014 - это RsFx0300.sys:
https://support.microsoft.com/en-us/help/2961258/fix-cannot-access-the-data-in-filetable-after-you-upgrade-from-sql-ser
Microsoft показывает, что может произойти при обновлении с 2012 по 2014 год:
источник