Lorsque la fonction FILESTREAM est activée sur Microsoft SQL Server 2012, SQL Server crée un partage «masqué» sur le système. La part est définie comme suit:
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
Le nom est le nom du partage que vous fournissez lors de la configuration initiale de FILESTREAM dans le Gestionnaire de configuration SQL Server . Mais à quoi ça sert?
Jusque là
J'ai lu toute la documentation FILESTREAM disponible à partir de:
- FILESTREAM (SQL Server)
- Activer et configurer FILESTREAM
- Créer une base de données compatible FILESTREAM
- Créer une table pour stocker des données FILESTREAM
- ... et tout ce qui s'y rapporte
- Compatibilité FILESTREAM avec d'autres fonctionnalités SQL Server
- FILESTREAM DDL, fonctions, procédures stockées et vues
- Accéder aux données FILESTREAM avec OpenSqlFilestream
- le document SQL Server 2008 - Stockage FILESTREAM dans SQL Server 2008
- et l'article FILESTREAM (OLTP) --- un guide de référence technique pour la conception de solutions OLTP essentielles à la mission qui fait référence à de nombreux autres documents
... mais il n'y avait aucune mention de l'action et ce qu'elle fait ou à quoi elle sert. Vous entrez le nom et SQL Server créera le partage sous le capot.
Base de données compatible FILESTREAM
Lorsque vous créez une base de données compatible FILESTREAM, la base de données fait référence à un groupe de fichiers qui fait référence à un répertoire (recommandé sur un lecteur distinct) qui n'a absolument rien à voir avec le partage, qui a été initialement créé lors de la configuration de FILESTREAM.
Capture d'écran Script de base de données compatible FILESTREAM
Oui, je me rends compte que tous les chemins sont sur C :; ce n'est qu'un exemple
Le livre blanc de Paul Randall et al. poursuit en expliquant que ...
Les données FILESTREAM sont stockées dans le système de fichiers dans un ensemble de répertoires NTFS appelés conteneurs de données, qui correspondent à des groupes de fichiers spéciaux dans la base de données. L'accès transactionnel aux données FILESTREAM est contrôlé par SQL Server et un pilote de filtre de système de fichiers installé dans le cadre de l'activation de FILESTREAM au niveau Windows. L'utilisation d'un pilote de filtre de système de fichiers permet également d'accéder à distance aux données FILESTREAM via un chemin UNC. SQL Server conserve un lien de tri des lignes de table vers les fichiers FILESTREAM qui leur sont associés. Cela signifie que la suppression ou le changement de nom de tout fichier FILESTREAM directement via le système de fichiers entraînera une corruption de la base de données.
... plus bas dans le document (page 14), ils poursuivent ...
Il existe un seul pilote de filtre de système de fichiers FILESTREAM pour chaque volume NTFS qui a un conteneur de données FILESTREAM, et il y en a également un pour chaque version de SQL Server qui a un conteneur de données FILESTREAM sur le volume. Chaque pilote de filtre est responsable de la gestion de tous les conteneurs de données FILESTREAM pour ce volume, pour toutes les instances qui utilisent une version particulière de SQL Server.
Par exemple, un volume NTFS qui héberge trois conteneurs de données FILESTREAM, un pour chacune des trois instances SQL Server 2008, n'aura qu'un seul pilote de filtre de système de fichiers FILESTREAM SQL Server 2008.
Des questions
- C'est agréable de savoir que SQL Server a tout ce qu'il y a de bien et de lié, mais que fait ce partage? S'agit-il du soi-disant "pilote de filtre du système de fichiers"?
- Étant donné que tout utilisateur authentifié peut accéder au «partage», quelles sont les implications en matière de sécurité?
- Le périphérique RsFx0320 est-il un prédécesseur du format de système de fichiers résilient introduit avec Windows Server 2012?
Si vous pouvez fournir des réponses à mes questions, ce serait bien si vous pouviez fournir une référence source.
la source
Voici mon point de vue sur vos questions:
1.Il est bon de savoir que SQL Server a tout ce qu'il y a de bien et de lié, mais que fait réellement ce partage? S'agit-il du soi-disant "pilote de filtre du système de fichiers"?
L'accès au flux de fichiers SQL Server est avant tout un accès aux fichiers. Le partage fournit cet emplacement via un partage de fichiers.
Vous pouvez facilement voir cela avec du code C # en utilisant OpenSqlFilestream sur
https://docs.microsoft.com/en-us/sql/relational-databases/blob/access-filestream-data-with-opensqlfilestream
Comme vous pouvez le voir, pas de FILE_SHARE_READ pour CreateFile et il n'y a pas de magie de fichier, pas de flux de fichiers:
Remarque: pourquoi il n'y a pas de serveur local / option FILESTREAM sans partage - je n'ai aucune idée. On dirait que certaines personnes pourraient aimer ce niveau de sécurité supplémentaire.
2.Voir que tout utilisateur authentifié peut accéder au "partage", quelles sont les implications pour la sécurité?
Wow, grande question. Il semble que les autorisations de partage soient disponibles pour tout utilisateur authentifié, mais les autorisations NTFS sous-jacentes devraient affiner la sécurité. Mais cela me semble être une faille de sécurité. Je devrais enquêter davantage sur la précision des autorisations NTFS, mais je n'aime vraiment pas les autorisations de partage de fichiers généralisées. Allez Microsoft, TOUS les "utilisateurs authentifiés"? À tort ou à raison, je pense que Microsoft a tendance à ignorer le partage / focus sur les autorisations NTFS.
Fournir des «utilisateurs authentifiés» est un sujet débattu depuis des années. Voici l'un des meilleurs blogs que j'ai lus dans les deux sens des «utilisateurs authentifiés». Il est tellement ancré dans Windows que je ne pense pas qu'ils diraient jamais que c'est un risque légitime - jusqu'à ce que leur nouveau produit sorte qui s'en débarrasse.
https://social.technet.microsoft.com/Forums/windowsserver/en-US/bb74fa7c-89bd-476d-88bf-e88cd66618e6/why-is-authenticated-users-in-the-local-users-group-by- par défaut? forum = winserversecurity
3.Le périphérique RsFx0320 est-il un prédécesseur du format de système de fichiers résilient introduit avec Windows Server 2012?
Semble être basé sur SQL plutôt que sur O / S. RsFx0320.sys est SQL 2008. Comme indiqué ci-dessous, SQL 2012 est RsFx0201.sys et SQL 2014 est RsFx0300.sys:
https://support.microsoft.com/en-us/help/2961258/fix-cannot-access-the-data-in-filetable-after-you-upgrade-from-sql-ser
Microsoft montre ce qui peut se produire lorsque vous effectuez une mise à niveau de 2012 à 2014:
la source