Wenn die FILESTREAM-Funktion in Microsoft SQL Server 2012 aktiviert ist, erstellt SQL Server eine "versteckte" Freigabe auf dem System. Die Freigabe ist wie folgt definiert:
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
Der Name ist der Name der Freigabe, die Sie beim erstmaligen Konfigurieren von FILESTREAM im SQL Server-Konfigurations-Manager angeben . Aber wofür ist es?
Bisher
Ich habe die gesamte FILESTREAM-Dokumentation gelesen, beginnend mit:
- FILESTREAM (SQL Server)
- Aktivieren und Konfigurieren von FILESTREAM
- Erstellen Sie eine FILESTREAM-fähige Datenbank
- Erstellen Sie eine Tabelle zum Speichern von FILESTREAM-Daten
- ... und alles was dazugehört
- FILESTREAM-Kompatibilität mit anderen SQL Server-Funktionen
- FILESTREAM-DDL, Funktionen, gespeicherte Prozeduren und Ansichten
- Greifen Sie mit OpenSqlFilestream auf FILESTREAM-Daten zu
- das Papier SQL Server 2008 - FILESTREAM-Speicher in SQL Server 2008
- und der Artikel FILESTREAM (OLTP) - ein technisches Referenzhandbuch für das Entwerfen unternehmenskritischer OLTP-Lösungen, in dem auf viele andere Materialien verwiesen wird
... aber es wurde nicht erwähnt, was die Aktie macht oder wofür sie ist. Sie geben den Namen ein und SQL Server erstellt die Freigabe im Hintergrund.
FILESTREAM-fähige Datenbank
Wenn Sie eine FILESTREAM-fähige Datenbank erstellen, verweist die Datenbank auf eine Dateigruppe, die auf ein Verzeichnis verweist (empfohlen auf einem separaten Laufwerk), das absolut nichts mit der Freigabe zu tun hat, die ursprünglich während der FILESTREAM-Konfiguration erstellt wurde.
Screenshot FILESTREAM-fähiges Datenbankskript
Ja, mir ist klar, dass alle Pfade auf C: sind; Es ist nur ein Beispiel
Das Weißbuch von Paul Randall et al. erklärt weiter, dass ...
FILESTREAM-Daten werden im Dateisystem in einer Reihe von NTFS-Verzeichnissen gespeichert, die als Datencontainer bezeichnet werden und speziellen Dateigruppen in der Datenbank entsprechen. Der Transaktionszugriff auf die FILESTREAM-Daten wird von SQL Server und einem Dateisystemfiltertreiber gesteuert, der im Rahmen der Aktivierung von FILESTREAM auf Windows-Ebene installiert wird. Die Verwendung eines Dateisystemfiltertreibers ermöglicht auch den Remotezugriff auf die FILESTREAM-Daten über einen UNC-Pfad. SQL Server verwaltet eine Art Link von Tabellenzeilen zu den damit verbundenen FILESTREAM-Dateien. Dies bedeutet, dass das Löschen oder Umbenennen von FILESTREAM-Dateien direkt über das Dateisystem zur Beschädigung der Datenbank führt.
... weiter unten im Dokument (Seite 14) machen sie weiter mit ...
Es gibt einen einzigen FILESTREAM-Dateisystemfiltertreiber für jedes NTFS-Volume mit einem FILESTREAM-Datencontainer und einen für jede Version von SQL Server mit einem FILESTREAM-Datencontainer auf dem Volume. Jeder Filtertreiber ist für die Verwaltung aller FILESTREAM-Datencontainer für dieses Volume verantwortlich, für alle Instanzen, die eine bestimmte Version von SQL Server verwenden.
Ein NTFS-Volume, auf dem sich drei FILESTREAM-Datencontainer befinden, einer für jede der drei SQL Server 2008-Instanzen, verfügt beispielsweise nur über einen SQL Server 2008-FILESTREAM-Dateisystemfiltertreiber.
Fragen
- Es ist schön zu wissen, dass in SQL Server alles schön und fest verbunden ist, aber was macht diese Freigabe tatsächlich? Ist es der sogenannte "Dateisystem-Filtertreiber"?
- Welche Auswirkungen hat die Sicherheit, wenn ein authentifizierter Benutzer auf die Freigabe zugreifen kann?
- Ist das Gerät RsFx0320 ein Vorgänger des mit Windows Server 2012 eingeführten ausfallsicheren Dateisystemformats?
Wenn Sie meine Fragen beantworten können, wäre es schön, wenn Sie eine Quellenangabe machen könnten.
quelle
Hier ist meine Meinung zu Ihren Fragen:
1. Es ist schön zu wissen, dass SQL Server alles schön und gebunden hat, aber was macht diese Freigabe eigentlich? Ist es der sogenannte "Dateisystem-Filtertreiber"?
Beim Zugriff auf SQL Server-Dateistreams geht es hauptsächlich um den Zugriff auf Dateien. Die Freigabe stellt diesen Speicherort über eine Dateifreigabe bereit.
Sie können dies leicht mit etwas C # -Code sehen, wenn Sie OpenSqlFilestream aktivieren
https://docs.microsoft.com/de-de/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream
Wie Sie sehen, gibt es für CreateFile kein FILE_SHARE_READ und keine Dateizauber, keinen Dateistream:
Hinweis: Warum gibt es keine lokale Server / shareless FILESTREAM-Option - Ich habe keine Ahnung. Klingt so, als würden manche Leute diese zusätzliche Sicherheitsstufe mögen.
2.Was sind die Auswirkungen auf die Sicherheit, wenn ein authentifizierter Benutzer auf die "Freigabe" zugreifen kann?
Wow, tolle Frage. Es scheint, dass die Freigabeberechtigungen jedem authentifizierten Benutzer zur Verfügung stehen, die zugrunde liegenden NTFS-Berechtigungen sollten jedoch die Sicherheit optimieren. Aber das scheint mir eine Sicherheitslücke zu sein. Ich müsste weiter untersuchen, wie fein die NTFS-Berechtigungen eingestellt sind, aber ich mag die allgemeinen Dateifreigabeberechtigungen definitiv nicht. Komm schon Microsoft, ALLE "authentifizierten User"? Richtig oder falsch, ich denke, dass Microsoft dazu neigt, die Freigabe / den Fokus auf die NTFS-Berechtigungen zu ignorieren.
Die Bereitstellung "authentifizierter Benutzer" ist seit Jahren ein umstrittenes Thema. Hier ist einer der besten Blogs, die ich über "authentifizierte Benutzer" gelesen habe. Es ist so stark in Windows verankert, dass sie nicht glauben, dass es jemals ein legitimes Risiko ist - bis ihr neues Produkt herauskommt, das es beseitigt.
https://social.technet.microsoft.com/Forums/windowsserver/en-US/bb74fa7c-89bd-476d-88bf-e88cd66618e6/why-is-authenticated-users-in-the-local-users-group-by- Standardeinstellung? forum = winserversecurity
3.Ist das Gerät RsFx0320 ein Vorgänger des mit Windows Server 2012 eingeführten ausfallsicheren Dateisystemformats?
Scheint eher auf SQL als auf O / S zu basieren. RsFx0320.sys ist SQL 2008. Wie Sie unten sehen, ist SQL 2012 RsFx0201.sys und 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 zeigt, was beim Upgrade von 2012 auf 2014 passieren kann:
quelle