У пошуках FILESTREAM Insider інформації


14

Коли функція 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, починаючи з:

... але про акцію і про те, що вона робить, або для чого вона не згадувалося. Ви вводите ім'я, і ​​SQL Server створить спільний доступ під кришкою.

База даних із підтримкою FILESTREAM

Коли ви створюєте базу даних з підтримкою FILESTREAM, база даних посилається на групу файлів, на яку посилається каталог (рекомендований на окремому диску), що не має абсолютно нічого спільного з загальним доступом, який був створений спочатку під час конфігурації FILESTREAM.

Скріншот сценарію бази даних з підтримкою FILESTREAM

Сценарій для створення бази даних з підтримкою FILESTREAM Так, я розумію, що всі шляхи знаходяться на C:; це лише приклад

Біла книга Paul Randall та ін. далі пояснює, що ...

Дані 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, матиме лише один драйвер фільтра файлової системи SQL Server 2008 FILESTREAM.

Запитання

  1. Приємно знати, що у SQL Server є все приємне і пов’язане, але що ця спільна частка насправді? Це так званий "драйвер фільтру файлової системи"?
  2. Бачачи, що будь-який аутентифікований користувач може отримати доступ до "спільного доступу", які наслідки для безпеки?
  3. Чи пристрій RsFx0320 є попередником стійкого формату файлової системи, який був представлений із Windows Server 2012?

Якщо ви можете надати відповіді на мої запитання, було б непогано, якщо ви могли б надати посилання на джерело.

Відповіді:


5

Коли функція FILESTREAM активована на Microsoft SQL Server 2012, тоді SQL Server створить "приховану" спільну частину в системі.

Це не робить це за замовчуванням, вам потрібно ВИБРАТИ, щоб увімкнути спільний доступ. Це робиться за допомогою менеджера конфігурації SQL Server. Якщо ви скасуєте вибір, Enable FILESTREAM for file I/O accessчастка буде видалена.

введіть тут опис зображення

  1. Приємно знати, що у SQL Server є все приємне і пов’язане, але що ця спільна частка насправді?

Ця частка дозволяє клієнтам (локальним і віддаленим) мати єдине спільне місце розташування, щоб використовувати потокове вікно api для доступу до даних файлових потоків. Це працює в поєднанні з налаштуваннями рівня екземпляра SQL Server для доступу до файлового потоку Full Access Enabled, будь-яке інше налаштування доступу не повинно працювати з потоковим API.

введіть тут опис зображення

  1. ... Це так званий "драйвер фільтру файлової системи"?

Ні, це не. Це просто загальна файлова передача.

Я намагався не каламутити води, але ви попросили якомога більше інформації. У наведеному вище закресленому тексті я фактично сказав, що це не драйвер фільтра. Однак це технічно є напівправдою. Так, це спільна папка, але вона фактично ділиться через драйвер фільтра. Я дуже обговорював з цього приводу, тому що він починає перетворюватися на кролячу нору, до якої насправді не можна зійти без вихідного коду (і якщо чесно, на мою думку це малоцінне, крім академічного).

Вся суть драйвера фільтра полягає в тому, щоб зробити кілька речей, але одна з цих речей полягає в наданні транзакційного доступу до даних, що зберігаються в цільовому потоці файлів, через різноманітні інтерфейси; SQL Server, API Transact SQL, API Windows. Він також робить декілька інших елементів, однак доступ, наданий через спільний доступ, здійснюється через драйвер фільтра. Насправді, якщо ви намагаєтеся отримати доступ до файлів у потоці файлів і не є адміністратором чи SQL сервером, ви не повинні мати доступ до них.

Так, так, це і є, і не є драйвером фільтра. Це половина файлу Windows, що відкривається через драйвер фільтра. Ви можете переконатися, що це ви переглядаєте властивість контуру долі.

get-wmiobject -class Win32_share | where {$_.Description -like 'SQL Server*'} | ft name, path -autosize

2.Якщо будь-який аутентифікований користувач може отримати доступ до "спільного доступу", які наслідки для безпеки?

Ви можете змінити дозволи та вимагати, щоб налаштування були правильно встановлені. Наслідки для безпеки полягають у будь-якому іншому спільному файлі.

3.Чи є пристрій RsFx0320 попередником стійкого формату файлової системи, який був представлений із Windows Server 2012?

Ні, це назва конкретної версії драйвера фільтра. Наприклад, ось система із завантаженою в 2016 році RsFx0410. ReFS - це файлова система, це драйвер фільтру, який знаходиться між файловою системою та драйвером miniport. Насправді зовсім неприємно, що це застарілий драйвер фільтру, як позначається .10 в кінці висоти ... хм. Ви також помітите, що він має досить низьку висоту , що, як правило, не прийнятно для сторонніх драйверів фільтрів.

введіть тут опис зображення

Якщо ви можете надати відповіді на мої запитання, було б непогано, якщо ви могли б надати посилання на джерело.

У мене немає джерел для цього, але я створив резервну копію моєї інформації за допомогою знімків екрана та параметрів конфігурації, які змінюють налаштування. Все в цій відповіді можна знайти, переглянувши сам продукт і дізнавшись, як працюють шматки вікон (наприклад: драйвери фільтрів).


Дякую за відповіді на 1, 2 і 3. Я особливо вдячний за ваше пояснення драйвера фільтра. Ваше зауваження на початку належним чином зазначається, але я усвідомлюю, що частка буде створена лише в тому випадку, якщо я активую параметр у параметрах FILESTREAM. Я прочитав велику кількість документації щодо конфігурації / налаштувань FILESTREAM та внутрішніх даних.
Джон ака hot2use

2

Ось мій погляд на ваші питання:

1.Це приємно знати, що у SQL Server є все приємне і пов’язане, але що ця доля насправді робить? Це так званий "драйвер фільтру файлової системи"?

Доступ до потоку файлів SQL Server - це майже все, а також доступ до файлів. Частка надає це місце за допомогою спільного доступу до файлів.

Ви можете легко побачити це за допомогою деякого коду C #, використовуючи OpenSqlFilestream

https://docs.microsoft.com/en-us/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream

Як бачите, для CreateFile немає файлу FILE_SHARE_READ і немає файлової магії, немає потоку файлів:

try
    {
        if ( (srcHandle = CreateFile(
            srcFilePath,
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL,
            OPEN_EXISTING,
            FILE_FLAG_SEQUENTIAL_SCAN,
            NULL)) == INVALID_HANDLE_VALUE )
            throw szErrMsgSrc;

Примітка. Щодо того, чому немає локального параметра 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- за замовчуванням? forum = 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 рік:

To work around this issue, change manually the path property of the resource <AvailabilityGroupName>_FSShare to point to the correct driver: From
'\\?\GLOBALROOT\Device\RsFx0201\<localmachine>\{AvailabilityGroupID}' to '\\?\GLOBALROOT\Device\RsFx0300\<localmachine>\{AvailabilityGroupID}'

Дякую за відповіді на мої запитання 2 та 3. Я усвідомлюю за вашу відповідь 1, що я можу отримати доступ до даних через цю спільну частину, але мені було цікаво, як, звідси назва "У пошуках інформації FILESTREAM Insider ".
Джон ака hot2use
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.